# tinkercad circuit
=> R1, R2, R3, R4 단자는 빨간색 선으로 각각 13, 12, 11, 10에 연결되어있고, C1, C2, C3, C4 단자는 초록색 선으로 각각 9, 8, 7, 6에 연결되어있다.
# 코드
int R1 = 13;
int R2 = 12;
int R3 = 11;
int R4 = 10;
int C1 = 9;
int C2 = 8;
int C3 = 7;
int C4 = 6;
void setup()
{
pinMode(C1, INPUT_PULLUP);
pinMode(C2, INPUT_PULLUP);
pinMode(C3, INPUT_PULLUP);
pinMode(C4, INPUT_PULLUP);
pinMode(R1, OUTPUT);
pinMode(R2, OUTPUT);
pinMode(R3, OUTPUT);
pinMode(R4, OUTPUT);
Serial.begin(9600);
}
char _getch()
{
char ch;
digitalWrite(R1, LOW);
if ( digitalRead(C1) == LOW)
ch='1';
if ( digitalRead(C2) == LOW)
ch='2';
if ( digitalRead(C3) == LOW)
ch='3';
if ( digitalRead(C4) == LOW)
ch='A';
digitalWrite(R1, HIGH);
digitalWrite(R2, LOW);
if ( digitalRead(C1) == LOW)
ch='4';
if ( digitalRead(C2) == LOW)
ch='5';
if ( digitalRead(C3) == LOW)
ch='6';
if ( digitalRead(C4) == LOW)
ch='B';
digitalWrite(R2, HIGH);
digitalWrite(R3, LOW);
if ( digitalRead(C1) == LOW)
ch='7';
if ( digitalRead(C2) == LOW)
ch='8';
if ( digitalRead(C3) == LOW)
ch='9';
if ( digitalRead(C4) == LOW)
ch='C';
digitalWrite(R3, HIGH);
digitalWrite(R4, LOW);
if ( digitalRead(C1) == LOW)
ch='*';
if ( digitalRead(C2) == LOW)
ch='0';
if ( digitalRead(C3) == LOW)
ch='#';
if ( digitalRead(C4) == LOW)
ch='D';
digitalWrite(R4, HIGH);
delay(30);
return(ch);
}
void loop()
{
char a;
a = _getch();
Serial.print(a);
delay(70);
}
1. 각각의 단자에 대한 변수를 선언하고 연결된 번호의 값을 할당한다.
2. setup() 부분에 pinMode() 함수를 이용하여 C1, C2, C3, C4 단자는 INPUT_PULLUP인 입력모드로 설정하고 R1, R2, R3, R4 단자는 OUPUT인 출력모드로 설정한다. 시리얼 통신을 시작한다. 시리얼 모니터 전송속도를 9600bps로 설정한다.
3. 반환형이 char형인 함수 _getch()를 선언한다. 이 함수는 키패드에 입력한 문자를 반환하는 함수이다. 먼저 char형 변수 ch를 선언한다. digitalWirte()함수를 이용하여 R1 단자에 LOW(논리 0)값을 출력하여 C1~C4 단자 중 LOW(논리 0)값인 경우가 있다면 ch에 입력받은 문자를 저장한다. R1 단자에 HIGH(논리 1)값을 출력하고 R2 단자에 LOW(논리 0)값을 출력하여 같은 과정을 반복하고 R2, R3 단자가 LOW(논리 0)값일 경우에도 같은 과정을 반복하여 ch에 입력받은 문자를 저장한다. 이 후 지연시간 30ms를 갖고 문자 ch를 반환한다.
4. loop() 부분에 char형 변수 a을 선언하고 _getch() 함수를 이용하여 반환받은 값을 a에 저장한다. 시리얼 모니터에 a를 출력하고 지연시간 70ms를 갖는다. 이 과정을 무한정 수행한다.
# 시뮬레이션
'전공 공부 > 아두이노프로그래밍' 카테고리의 다른 글
적외선 장애물회피센서, 내장 LED (0) | 2021.01.18 |
---|---|
터미널 에뮬레이터를 이용하여 PC 키보드 1~8의 숫자 키로 입력을 받아 한 옥타브(낮은 ‘도’~높은 ‘도’)를 연주하는 프로그램을 제작하시오. 이때 숫자를 입력할 때 enter키 입력하지 않아도.. (0) | 2021.01.17 |
serialEvent() 함수를 사용하여 터미널에서 입력한 문자를 터미널 에뮬레이터로 반환하는 프로그램 (0) | 2021.01.17 |
터미널에서 소문자를 입력하면(enter를 치지 않아도 입력됨) 아두이노가 이를 받아 대문자로 변환하여 다시 터미널로 출력하는 아두이노 프로그램 (0) | 2021.01.17 |
직렬통신 (0) | 2021.01.17 |