제조공정
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
|
|
소개
이 프로젝트의 목표는 숫자 키패드에 필요한 핀 수를 크게 줄이는 것입니다. 이는 Arduino Uno 또는 Nanoboards에서 사용 가능한 것보다 많은 I/O 핀이 필요한 경우가 많기 때문입니다.
일반 숫자 키패드는 매트릭스 구조로 되어 있습니다. 4x3 키패드에는 4+3 Arduino 디지털 핀이 필요합니다. Arduino와 함께 사용할 수 있는 수많은 라이브러리가 인터넷에 있습니다.
내 솔루션
내가 제안하는 솔루션은 다음 그림과 같은 회로와 함께 3개의 아날로그 입력만 사용하기 때문에 훨씬 더 좋습니다.
각 열에는 4개의 키 각각에 해당하는 4개의 전압 값과 키를 누르지 않은 경우 0볼트만 있습니다. 등가 방식(b)에서 R1e는 4개의 저항 R1-R4 중 하나를 나타내고 R2e는 3개의 저항 R5-R7 중 하나를 나타냅니다.
이제 4개의 가능한 가장 넓은 간격을 만드는 방법을 살펴보겠습니다. 먼저 모든 저항 R2e =R5 =R6 =R7을 동일하게 만든 다음 R1 =0을 설정하여 5V에서 첫 번째 라인에 해당하는 출력을 가질 수 있습니다.
R2=330ohm, R3=1k ohm, R4=3k ohm 및 R5, R6, R7=1k ohm일 때 각 출력에 대해 다음 간격을 얻습니다.
보시다시피 3개 출력의 간격은 가능한 가장 크며 허용 오차가 ±5%인 6개의 표준 저항을 사용할 수 있습니다. 추가 아날로그 입력과 또 다른 저항으로 4x4 키보드 등을 사용할 수 있습니다. 다음 그림은 Arduino와의 연결을 보여줍니다.
다이어그램에서 저항 R1은 라인 2에 연결되어 있습니다. 왜냐하면 라인 1에 있는 것이 와이어로 그려졌기 때문입니다. 핀 할당은 아날로그로 핀을 구성할 수 있는 한 필요에 따라 수정할 수 있습니다.
물론 아두이노에 3.3V의 전원을 인가하면 ADC 컨버터가 기본적으로 공급 전압을 사용하고 ADC 번호가 변하지 않기 때문에 아무 것도 바뀌지 않습니다.
이 유형의 키보드가 없는 프로그램을 테스트하기 위해 재활용 키로 빌드했습니다. 아래 그림은 myprototype을 보여줍니다. 5핀 오른쪽 커넥터는 Arduino에 연결하는 데 사용됩니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
/* program Analog4x3Keybf * 3개의 아날로그 출력이 있는 4x3 키 키보드 테스트 * G. Carrera - 19/11/2018 */// 키보드 출력 값의 제한:const int NADCm100[4 ] ={923,669,412,156}; const int NADCp100[4] ={1123,869,612,356};const char 키[13] ={'1','4','7','C','2','5' ,'8','0','3','6','9','E'};int keyval[3];int i,colp,val;void setup(){ Serial.begin(9600); // 직렬 모니터와 함께 사용}void loop() { char k; k =KeyPad();// 키패드 읽기 if (k !='N'){ // 키를 눌렀습니다. Serial.print("key ="); Serial.println(k); 지연(500); }}/******** 프로그램 ********/char KeyPad(){// 키패드를 읽고 문자 키 반환// 키 ='N' for none KeyScan()에서 사용하는 기능;// 아날로그 키보드 읽기 if (keyval[0]+keyval[1]+keyval[2] <40) { return 'N'; } else { // 키를 눌렀습니다. delay(10);// antibounce KeyScan();// (i=0; i <3; i++)에 대한 아날로그 키보드 다시 읽기{//어떤 열에 속하는지 식별 if (keyval [i]> 40){ colp=나; val=keyval[i];// 이것은 (int j=0; j <4; j++)에 해당하는 값입니다.{// if (val>=NDCm100[j] &&keyval <=NADp100[j]){ 키 반환[colp*4+j]; 부서지다; } } } } }}void KeyScan(){// 아날로그 키보드 읽기 keyval[0]=analogRead(A0); 지연(1); keyval[1]=analogRead(A1); 지연(1); keyval[2]=analogRead(A2); 지연(1); }섹션>
제조공정
구성품 및 소모품 Arduino UNO × 1 SparkFun I2C DAC 브레이크아웃 - MCP4725 × 1 출력 조절이 가능한 선형 조정기 × 1 Texas Instruments 범용 이중 연산 증폭기 × 1 저항 6.8k 옴 × 2 저항 3.3k 옴 × 1 저항 5.1k 옴 × 1 저항 1k 옴 × 1 저항 10옴 × 1 릴레이(일반) × 1
구성품 및 소모품 Arduino UNO × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 SparkFun 푸시버튼 스위치 12mm × 4 저항 10k 옴 × 4 저항 221옴 음, 220옴... × 2 단일 회전 전위차계 - 100,000옴 × 1 부저 × 1 브레드보드(일반) × 1 점퍼 와이어(일반) × 1