-
7Segment와 시리얼 통신 하기Arduino/7 Segment 2020. 10. 31. 20:20
시리얼 통신을 활용하여 0~9의 숫자를 입력하면 입력한 수가
7Segment에 출력되도록 만들어보자.
하드웨어의 구현의 구현과 내용은 아래를 참고하자.
designatedroom87.tistory.com/267
7Segment에 숫자 표시하기
우선 회로도를 보자. 우리가 사용할 방식은 VCC가 아닌 GND방식이다. 아두이노와 7세그먼트와의 연결은 다음과 같이 한다.a는 2번핀, b는 3번핀, c는 4번핀, d는 5번핀, e는 6번핀, f는 7번핀, g는 8번핀,
designatedroom87.tistory.com
구현은 2가지 방식으로 만들 수 있는데, 하나는 평범하게 구현한다.
Serial.available함수를 통해 만들고 다른 방법은 serialEvent함수를 통해서 구현한다.
구현 하고 나서 시리얼 모니터에서 입력값 뒤에 10,13 코드가 붙지 않게 해줘야 하기 때문에
'line ending 없음' 을 선택한다.
시리얼 통신으로 값이 들어오면 serialEvent함수가 호출되고
시리얼 버퍼에 값이 있을 경우 SerialEvent 함수가 계속 호출되는 특성을 갖는다.
read함수를 이용하여 값을 읽어야 이벤트가 발생하지 않는다.구현1 소스 코드
더보기// 시림얼 모니터에서 'line ending 없음'으로 선택한다. // 행의 수는 우리가 표현할 십진수의 개수이며, // 열의 수는 십진수에 따른 수 표기에 필요한 세븐세그먼트핀의 수 bool num[10][8] = { {1,1,1,1,1,1,0,0}, // 숫자0 {0,1,1,0,0,0,0,0}, // 숫자1 {1,1,0,1,1,0,1,0}, // 숫자2 {1,1,1,1,0,0,1,0}, // 숫자3 {0,1,1,0,0,1,1,0}, // 숫자4 {1,0,1,1,0,1,1,0}, // 숫자5 {1,0,1,1,1,1,1,0}, // 숫자6 {1,1,1,0,0,0,0,0}, // 숫자7 {1,1,1,1,1,1,1,0}, // 숫자8 {1,1,1,1,0,1,1,0} // 숫자9 }; // 숫자들을 출력하기 void setup() { // put your setup code here, to run once: Serial.begin(9600); // 2번핀부터 9번핀까지 모두 설정 for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); digitalWrite(i,LOW); } } void WriteNum(int _num) { for (int i = 0; i < 8; i++) { digitalWrite(i + 2, num[_num][i]); } delay(1000); } void loop() { // put your main code here, to run repeatedly: if (Serial.available()) { byte var = Serial.read(); if (var >= '0' && var <= '9') { int numToBeWritten = var - '0'; WriteNum(numToBeWritten); } } }
구현2 소스 코드
더보기// 행의 수는 우리가 표현할 십진수의 개수이며, // 열의 수는 십진수에 따른 수 표기에 필요한 세븐세그먼트핀의 수 bool num[10][8] = { {1,1,1,1,1,1,0,0}, // 숫자0 {0,1,1,0,0,0,0,0}, // 숫자1 {1,1,0,1,1,0,1,0}, // 숫자2 {1,1,1,1,0,0,1,0}, // 숫자3 {0,1,1,0,0,1,1,0}, // 숫자4 {1,0,1,1,0,1,1,0}, // 숫자5 {1,0,1,1,1,1,1,0}, // 숫자6 {1,1,1,0,0,0,0,0}, // 숫자7 {1,1,1,1,1,1,1,0}, // 숫자8 {1,1,1,1,0,1,1,0} // 숫자9 }; // 숫자들을 출력하기 void setup() { // put your setup code here, to run once: Serial.begin(9600); // 2번핀부터 9번핀까지 모두 설정 for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); digitalWrite(i,LOW); } } void WriteNum(int _num) { for (int i = 0; i < 8; i++) { digitalWrite(i + 2, num[_num][i]); } delay(1000); } void serialEvent() { byte var = Serial.read(); if (var >= '0' && var <= '9') { int numToBeWritten = var - '0'; WriteNum(numToBeWritten); } } void loop() {}
'Arduino > 7 Segment' 카테고리의 다른 글
7Segment와 포텐시오미터를 연결해서 제어하기 (0) 2020.10.31 7Segment와 적외선 센서를 연결해서 리모컨으로 제어하기 (0) 2020.10.31 7Segment에 숫자 표시하기 (0) 2020.10.31 7Segment의 기본적인 연결하기 (0) 2020.10.31