BASIC4MCU | 질문게시판 | 답변 : 가변저항으로 세그먼트
페이지 정보
작성자 master 작성일2018-06-18 17:42 조회12,862회 댓글4건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=1983
작성일
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-18 오후 5:45:49// by Ok-Hyun Park//int segPin1=4;int segPin2=10;int segPin3=2;int segPin4=11;int segPin5=8;int segPin6=3;int segPin7=7;//int sensorPin=A5;//int sensorVal=0;//void setup(){pinMode(segPin1,OUTPUT);pinMode(segPin2,OUTPUT);pinMode(segPin3,OUTPUT);pinMode(segPin4,OUTPUT);pinMode(segPin5,OUTPUT);pinMode(segPin6,OUTPUT);pinMode(segPin7,OUTPUT);Serial.begin(9600);}//void loop(){sensorVal=analogRead(sensorPin); Serial.println(sensorVal);if(sensorVal<100){ //0출력digitalWrite(segPin1,HIGH);digitalWrite(segPin2,HIGH);digitalWrite(segPin3,HIGH);digitalWrite(segPin4,LOW);digitalWrite(segPin5,HIGH);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,HIGH);}else if(sensorVal<200){ //1출력digitalWrite(segPin1,LOW);digitalWrite(segPin2,LOW);digitalWrite(segPin3,HIGH);digitalWrite(segPin4,LOW);digitalWrite(segPin5,LOW);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,LOW);}else if(sensorVal<300){ //2출력digitalWrite(segPin1,HIGH);digitalWrite(segPin2,LOW);digitalWrite(segPin3,HIGH);digitalWrite(segPin4,HIGH);digitalWrite(segPin5,HIGH);digitalWrite(segPin6,LOW);digitalWrite(segPin7,HIGH);}else if(sensorVal<400){ //3출력digitalWrite(segPin1,HIGH);digitalWrite(segPin2,LOW);digitalWrite(segPin3,HIGH);digitalWrite(segPin4,HIGH);digitalWrite(segPin5,LOW);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,HIGH);}else if(sensorVal<500){ //4출력digitalWrite(segPin1,LOW);digitalWrite(segPin2,HIGH);digitalWrite(segPin3,HIGH);digitalWrite(segPin4,HIGH);digitalWrite(segPin5,LOW);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,LOW);}else if(sensorVal<600){ //5출력digitalWrite(segPin1,HIGH);digitalWrite(segPin2,HIGH);digitalWrite(segPin3,LOW);digitalWrite(segPin4,HIGH);digitalWrite(segPin5,LOW);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,HIGH);}else if(sensorVal<700){ //6출력digitalWrite(segPin1,HIGH);digitalWrite(segPin2,HIGH);digitalWrite(segPin3,LOW);digitalWrite(segPin4,HIGH);digitalWrite(segPin5,HIGH);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,HIGH);}else if(sensorVal<800){ //7출력digitalWrite(segPin1,HIGH);digitalWrite(segPin2,HIGH);digitalWrite(segPin3,HIGH);digitalWrite(segPin4,LOW);digitalWrite(segPin5,LOW);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,LOW);}else if(sensorVal<900){ //8출력digitalWrite(segPin1,HIGH);digitalWrite(segPin2,HIGH);digitalWrite(segPin3,HIGH);digitalWrite(segPin4,HIGH);digitalWrite(segPin5,HIGH);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,HIGH);}else{ //9출력digitalWrite(segPin1,HIGH);digitalWrite(segPin2,HIGH);digitalWrite(segPin3,HIGH);digitalWrite(segPin4,HIGH);digitalWrite(segPin5,LOW);digitalWrite(segPin6,HIGH);digitalWrite(segPin7,HIGH);}
댓글 4
조회수 12,862아두이노초보2757님의 댓글
비공개 작성일이렇게해도 숫자가 제대로 바뀌지않습니다 부분적으로 불이 안들어옵니다
master님의 댓글
master
저항을 아끼느라고 1개만 사용해서 고르게 표시가 안되는겁니다.
뭐가되고 뭐가 안되는지 정확하게 작성해주세요
아두이노초보2757님의 댓글
아두이노초보2757 작성일
void loop식에서
digitalWrite(segPin1,HIGH);
→digitalWrite(segPin1,LOW)
이런식으로 전체 다 바꾸니까 정상적으로 나오네요 원래 저위에 식으로하면 불이 나오는곳에 안나오고 안나오는곳으로 코딩이 되있습니다.
왜 이렇게되는지 알수있을까요?
master님의 댓글
master
FND가 콤몬 애노드인지 캐소드인지에 따라서 달라집니다.
//
콤몬에 저항을 사용했고
5V에 연결되어 있으니 콤몬 애노드 타입의 FND입니다.
전류가 흐르려면 세그먼트에는 LOW를 출력해야하죠
세그먼트 출력이 반대로 되어 있는 것이 맞군요