Загрузка данных


#define SCL_PIN 5
#define SDO_PIN 6

byte Key;

void setup() {
    Serial.begin(9600);
    pinMode(SCL_PIN, OUTPUT);
    pinMode(SDO_PIN, INPUT);
}

void loop() {
    Key = Read_Keypad();
    if (Key) Serial.println(Key);
    delay(100);
}

byte Read_Keypad(void) {
    byte Count;
    byte Key_State = 0;
    for (Count = 1; Count <= 16; Count++) {
        digitalWrite(SCL_PIN, LOW);
        if (!digitalRead(SDO_PIN)) Key_State = Count;
        digitalWrite(SCL_PIN, HIGH);
    }
    return Key_State;
}



#define SCL_PIN 5
#define SDO_PIN 6
byte Key; // Переменная для хранения внутреннего номера кнопки
char keyboardMap[17] = {
  '?',  // Индекс 0 - не используется (защита от ошибки)
  '1',  // Кнопка 1 -> 1
  '2',  // Кнопка 2 -> 2
  '3',  // Кнопка 3 -> 3
  'A',  // Кнопка 4 -> A
  '4',  // Кнопка 5 -> 4
  '5',  // Кнопка 6 -> 5
  '6',  // Кнопка 7 -> 6
  'B',  // Кнопка 8 -> B
  '7',  // Кнопка 9 -> 7
  '8',  // Кнопка 10 -> 8
  '9',  // Кнопка 11 -> 9
  'C',  // Кнопка 12 -> C
  '*',  // Кнопка 13 -> *
  '0',  // Кнопка 14 -> 0
  '#',  // Кнопка 15 -> #
  'D'   // Кнопка 16 -> D
};
void setup() {
  Serial.begin(9600);
  pinMode(SCL_PIN, OUTPUT);
  pinMode(SDO_PIN, INPUT);
  Serial.println("Сенсорная клавиатура запущена. Нажимайте кнопки...");
}
void loop() {
  Key = Read_Keypad(); // Считываем внутренний номер кнопки (1-16)
  if (Key) { // Если кнопка нажата (Key не равен 0)
    Serial.print("Нажата кнопка: ");
    Serial.println(keyboardMap[Key]);
  }
  delay(1000); // Небольшая задержка для защиты от дребезга
}
byte Read_Keypad(void) {
  byte Count;
  byte Key_State = 0;
  for (Count = 1; Count <= 16; Count++) {
    digitalWrite(SCL_PIN, LOW);   // Тактовый сигнал LOW - читаем данные
    if (!digitalRead(SDO_PIN)) {  // Если линия данных LOW (активный уровень), значит кнопка нажата
      Key_State = Count;           // Запоминаем номер нажатой кнопки
    }
    digitalWrite(SCL_PIN, HIGH);  // Тактовый сигнал HIGH - переход к следующей кнопке
    delayMicroseconds(1000);         // Маленькая задержка для стабильности
  }
  return Key_State; // Возвращаем номер нажатой кнопки
}