산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

4x3 키패드용 핀 3개

구성품 및 소모품

저항 330옴
× 1
저항 1k 옴
× 3
저항 3k 옴
× 1
4x3 매트릭스 12 키 어레이 스위치 키패드
× 1
Arduino UNO
× 1

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

소개

이 프로젝트의 목표는 숫자 키패드에 필요한 핀 수를 크게 줄이는 것입니다. 이는 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="코드">

코드

<울>
  • Analog4x3Keybf.ino
  • Analog4x3Keybf.ino아두이노
    KeyPad() 기능을 테스트하는 간단한 프로그램
    /* 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); }

    회로도


    제조공정

    1. WS2812 RGB LED 어레이 애니메이션용 Excel
    2. 갈증 경보 식물 알람
    3. 이탈리아어 단어 시계
    4. Sigfox kWh 미터
    5. 블루투스 온도 모니터
    6. 제스처 제어 잠금
    7. 컴패니언 IC
    8. USB MIDI 어댑터
    9. Arduino용 절연 아날로그 입력
    10. 반응 시간 측정