-
7Segment와 시리얼 통신 하기Arduino/7 Segment 2020. 10. 31. 20:20
시리얼 통신을 활용하여 0~9의 숫자를 입력하면 입력한 수가
7Segment에 출력되도록 만들어보자.
하드웨어의 구현의 구현과 내용은 아래를 참고하자.
designatedroom87.tistory.com/267
구현은 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