BASIC4MCU | 질문게시판 | 답변 2: 가변저항으로 세그먼트
페이지 정보
작성자 master 작성일2018-06-18 18:27 조회10,441회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=1985
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-20 오전 9:12:58// by Ok-Hyun Park//int segPin[]={4,2,3,7,8,10,11}; // a,b,c,d,e,fint sensorPin=A5;////char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //캐소드char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //애노드//int Val=0;//void setup(){for(int i=0;i<7;i++)pinMode(segPin[i],OUTPUT);Serial.begin(9600);}//void fnd(int n){for(int i=0;i<7;i++)digitalWrite(segPin[i], (seg[n]>>i)&1);}//void loop(){Val=analogRead(sensorPin); Serial.println(sensorVal);Val=Val*9.0/1023.0; // 0~1023 -> 0~9fnd(Val);}0~9 표시
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-20 오전 9:14:38// by Ok-Hyun Park//int segPin[]={4,2,3,7,8,10,11}; // a,b,c,d,e,fint sensorPin=A5;////char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //캐소드char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //애노드//int Val=0;//void setup(){for(int i=0;i<7;i++)pinMode(segPin[i],OUTPUT);Serial.begin(9600);}//void fnd(int n){for(int i=0;i<7;i++)digitalWrite(segPin[i], (seg[n]>>i)&1);}//void loop(){Val=analogRead(sensorPin); Serial.println(sensorVal);Val=Val*15.0/1023.0; // 0~1023 -> 0~15(0x0F)fnd(Val);}
0~F까지 표시하는 예제입니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-06-20 오전 9:15:25// by Ok-Hyun Park//int segPin[]={4,2,3,7,8,10,11}; // a,b,c,d,e,fint sensorPin=A5;////char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //캐소드char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //애노드//int Val=0;//void setup(){for(int i=0;i<7;i++)pinMode(segPin[i],OUTPUT);Serial.begin(9600);}//void fnd(int n){for(int i=0;i<7;i++)digitalWrite(segPin[i], (seg[n]>>i)&1);}//void loop(){Val=analogRead(sensorPin); Serial.println(sensorVal);Val>>=6; // 0~1023 -> 0~15(0x0F)fnd(Val);}
6비트 우쉬프트 시켜도 0~0x0F를 얻을 수 있습니다.
10비트>>6=4비트
//
콤몬 애노드, 콤몬 캐소드에 따라서 코드의 출력 논리가 달라지며
콤몬에 저항 1개 사용하는 것보다 세그에 330옴 저항 7개 사용하고, 콤몬은 전원에 직접 연결하는 것이 좋습니다.
댓글 2
조회수 10,441아두이노초보2757님의 댓글
비공개 작성일애노드타입이면 어떻게하나요?
master님의 댓글
master
char fnd_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //캐소드
//char fnd_table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //애노드