-
7Segment와 적외선 센서를 연결해서 리모컨으로 제어하기Arduino/7 Segment 2020. 10. 31. 20:36
구현할 내용은 리모컨의 0~9번 키패드를 누르면 그 눌린 키패드를 7Segment에 출력되도록 만드는 것이다.
적외선 센서에 대한 내용은 아래에서 참고하자.
구현에 필요한 내용또한 같이 들고 온다.
designatedroom87.tistory.com/261?category=899934
리모컨과 적외선 센서의 기본 연결하기
아래와 같이 우선, 아두이노의 5V와 빵판의 VCC에 연결하고, 아두이노의 GND와 빵판의 GND에 연결한다. VCC선은 붉은 선, GND는 검은 선이다. 그리고 지금 보이는 적외선 센서의 방향을 기준으로 오른
designatedroom87.tistory.com
아래의 그림은 적외선 센서를 연결한 그림이다.
센서의 핀은 아두이노의 11번핀에 연결된다. 나머지는 VCC와 GND이다.
그리고 7Segment에 대한 하드웨어 연결과 구현은 아래에서 가지고 온다.
designatedroom87.tistory.com/267?category=900171
7Segment에 숫자 표시하기
우선 회로도를 보자. 우리가 사용할 방식은 오른쪽의 방식이다. 아두이노와 7세그먼트와의 연결은 다음과 같이 한다.a는 2번핀, b는 3번핀, c는 4번핀, d는 5번핀, e는 6번핀, f는 7번핀, g는 8번핀, dp
designatedroom87.tistory.com
소스 코드
더보기#include <IRremote.h> // 시림얼 모니터에서 '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 }; // 리모컨의 1번 키패드 값,2번 키패드 값,3번 키패드 값에 대한 16진수값 int remoteValues[] = {0xFF6897,0xFF30CF,0xFF18E7, 0xFF7A85, 0xFF10EF, 0xFF38C7, 0xFF5AA5, 0xFF42BD,0xFF4AB5,0xFF52AD }; int remoteValuesLen = 0; // remoteValues배열의 데이터의 개수 IRrecv IrReceiver(11); // 11번핀을 사용. 아두이노의 11번핀에 연결 decode_results result; // 숫자들을 출력하기 void setup() { // put your setup code here, to run once: Serial.begin(9600); IrReceiver.enableIRIn(); // IrReceiver의 수신 시작을 의미 remoteValuesLen = sizeof(remoteValues) / sizeof(int); // 2번핀부터 9번핀까지 모두 설정 for (int i = 2; i < 10; i++) { pinMode(i, OUTPUT); digitalWrite(i,LOW); } } // 리모컨이 눌린 값을 매개변수로 전달해서 // 리모컨의 키패드 값으로 변환하는 함수 int remoteKey(int value) { for (int i = 0; i < remoteValuesLen; i++) { if (remoteValues[i] == value) return i; } // -1의 의미는 키패드가 아닌 경우이다. return -1; } void WriteNum(int _num) { for (int i = 0; i < 8; i++) { digitalWrite(i + 2, num[_num][i]); } delay(500); } void loop() { // put your main code here, to run repeatedly: // 암호화된 데이터를 result에 저장. if (IrReceiver.decode(&result)) { Serial.println(result.value,HEX); int keyNum = remoteKey(result.value); // 리모컨 키 패드값으로 변환 // 키패드의 1~9번에 대해서만 반응한다. if (keyNum != -1) { // 리모컨의 1번 키패드가 눌리면 세븐세그먼트 제어 WriteNum(keyNum); } IrReceiver.resume(); // 다음 값을 받을 수 있도록 세팅 } }
'Arduino > 7 Segment' 카테고리의 다른 글
7Segment와 포텐시오미터를 연결해서 제어하기 (0) 2020.10.31 7Segment와 시리얼 통신 하기 (0) 2020.10.31 7Segment에 숫자 표시하기 (0) 2020.10.31 7Segment의 기본적인 연결하기 (0) 2020.10.31