Всем привет. В плане ардуино я ноль. Есть клавиатура 4х4. Надо чтобы на 7-сегментный индикатор при нажатии например 1 показывало 1. Или при нажатии 3 показывало 3. Очень буду благодарен если кто-то поможет. Вот кусочек кода из tinkercad который я ток смог сделать и то с 2 цифрами. Спасибо заранее Код (C++): int unnamed = 0; int COUNT = 0; int ONE = 0; int i = 0; int TWO = 0; int j = 0; int k = 0; void setup() { pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); pinMode(A4, INPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(A3, INPUT); } void loop() { digitalWrite(13, HIGH); digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(10, LOW); ONE = digitalRead(A4); if (ONE == HIGH) { // 2- DP digitalWrite(2, LOW); // 3- С digitalWrite(3, HIGH); // 4- D digitalWrite(4, LOW); // 5- Е digitalWrite(5, LOW); // 6- G digitalWrite(6, LOW); // 7- B digitalWrite(7, HIGH); // 8- A digitalWrite(8, LOW); // 9- F digitalWrite(9, LOW); COUNT = (COUNT + 1); } else { // 2- DP digitalWrite(2, LOW); // 3- С digitalWrite(3, LOW); // 4- D digitalWrite(4, LOW); // 5- Е digitalWrite(5, LOW); // 6- G digitalWrite(6, LOW); // 7- B digitalWrite(7, LOW); // 8- A digitalWrite(8, LOW); // 9- F digitalWrite(9, LOW); } digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(10, LOW); TWO = digitalRead(A3); if (COUNT == 1) { // 2- DP digitalWrite(2, LOW); // 3- С digitalWrite(3, LOW); // 4- D digitalWrite(4, HIGH); // 5- Е digitalWrite(5, HIGH); // 6- G digitalWrite(6, HIGH); // 7- B digitalWrite(7, HIGH); // 8- A digitalWrite(8, HIGH); // 9- F digitalWrite(9, LOW); } else { delay(1000); // Wait for 1000 millisecond(s) // 2- DP digitalWrite(2, LOW); // 3- С digitalWrite(3, LOW); // 4- D digitalWrite(4, LOW); // 5- Е digitalWrite(5, LOW); // 6- G digitalWrite(6, LOW); // 7- B digitalWrite(7, LOW); // 8- A digitalWrite(8, LOW); // 9- F digitalWrite(9, LOW); } }
Ну чиста и случайна у меня завалялась функция работы с клавой: Код (C++): static int8_t Keypad_performScan(void) { uint8_t pressedKeys = 0; uint8_t testRow; int8_t keyNum = -1; uint8_t col; uint8_t row; P2OUT = 0x00; // Set columns to output low // Loop the columns, setting only one high at a time for (col = 0; col < TOTAL_COLS; col++) { //Turn on a single column switch(col) { case 0: P2OUT = BIT0; // select column 0 (Col0) break; case 1: P2OUT = BIT1; // select column 1 (Col1) break; case 2: P2OUT = BIT6; // select column 2 (Col2) break; case 3: P2OUT = BIT7; // select column 3 (Col3) break; default: __no_operation(); // add more cases if TOTAL_COLS > 4 break; } pressedKeys = (P1IN & 0x0F); // Capture the row input testRow = BIT0; // Start cycling at Row 0 // Cycle through the rows determining if a key is pressed for (row = 0; row < TOTAL_ROWS; row++) { if (pressedKeys & testRow) { keyNum = (row * TOTAL_COLS) + col; // Calculate button number // Break out of loops col = TOTAL_COLS; row = TOTAL_ROWS; } testRow = testRow << 1; // Shift to next row } } return(keyNum); } Раскладка: Код (C++): // // MSP430FR2xxx Keypad Matrix // ----------------- >-/ -o >-/ -o >-/ -o >-/ -o // | | | | | | | | | | // /|\| P1.0|<---o--ROW0-----^----|--^----|--^----|--^ | // | | | | | | | | // --|RST | 4.7M | | | | // | | | | | | | // | | GND >-/ -o >-/ -o >-/ -o >-/ -o // | | | | | | | | | | // | P1.1|<---o--ROW1-----^----|--^----|--^----|--^ | // | | | | | | | // | | 4.7M | | | | // | | | | | | | // | | GND >-/ -o >-/ -o >-/ -o >-/ -o // | | | | | | | | | | // | P1.2|<---o--ROW2-----^----|--^----|--^----|--^ | // | | | | | | | // | | 4.7M | | | | // | | | | | | | // | | GND >-/ -o >-/ -o >-/ -o >-/ -o // | | | | | | | | | | // | P1.3|<---o--ROW3-----^----|--^----|--^----|--^ | // | | | | | | | // | | 4.7M | | | | // | | | | | | | // | | GND | | | | // | P2.0|-->----COL0----------^ | | | // | P2.1|-->----COL1------------------^ | | // | P2.6|-->----COL2--------------------------^ | // | P2.7|-->----COL3----------------------------------^ // // // Caleb Overbay // Texas Instruments Inc. // Aug 2017 // Built with IAR Embedded Workbench v7.10 & Code Composer Studio v7.2