Страница 1 из 1

передача кодов на 433мгц с матричной клавиатуры 4х4

Добавлено: Вт окт 11, 2016 20:29:38
eniken
привет всем, подскажите как реализовать передачу кодов на 433мгц с клавиатуры матричной 4х4, причем необходимо передать не только цифру от 1-9. а и 10 и более, работаю с ардуино, можно и не на нем

Код: Выделить всё

#include <Keypad.h> // Подключаем библиотеку 
const byte ROWS = 4; // 4 строки
const byte COLS = 4; // 4 столбца
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
}; 
byte rowPins[ROWS] = {11,10, 9, 8}; 
byte colPins[COLS] = {7, 6, 5, 4}; 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
  Serial.begin(9600);
}
void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.println(key); // Передаем название нажатой клавиши в сериал порт
    tone(3, (int)key*10, 300); // Издаем звуковой сигнал длиной 300 миллисекунд 
  }
}

Re: передача кодов на 433мгц с матричной клавиатуры 4х4

Добавлено: Вт окт 11, 2016 22:53:18
ptr128
eniken писал(а):привет всем, подскажите как реализовать передачу кодов на 433мгц с клавиатуры матричной 4х4, причем необходимо передать не только цифру от 1-9. а и 10 и более, работаю с ардуино, можно и не на нем
Для начала, определиться, как Вы собираетесь различать числа 1, 11 и 111.
Варианты:
1. Если время между нажатиями двух кнопок превышает заданное, то считаем число введенным
2. Используем одну из не цифровых кнопок, как сигнал завершения ввода числа.

В обоих случаях накапливаем введенные цифры в буфере. В первом случае, елси по прошедствии заданного времени не была нажата цифровая кнопка, отсылаем накопившийся буфер через vw_send(). Во втором случае отсылаем буфер при нажатии заданной не цифровой кнопки.

В обоих случаях нужно принять решение, как мы должны реагировать на остальные 6 или 5 кнопок и должны ли реагировать воообще.

Если на Arduino использовать библиотеку VirtualWire, то она позволит передать до 27 байт. При этом, хотя бы один-два байта лучше зарезервировать, как свой код префикса сообщения.
Числа можно передавать в трех форматах:
1. В двоичном виде. Наиболее компактно, но сложнее преобразовывать, особенно числа, содержащие свыше 12 десятичных знаков.
2. В символьном виде.
3. В двоично-десятичном виде. Когда на одну десятичную цифру расходуется четыре бита. При этом для положительных чисел эти четыре бита могут принимать значения только от 0 до 9

Re: передача кодов на 433мгц с матричной клавиатуры 4х4

Добавлено: Вт окт 11, 2016 23:02:15
dosikus
Охренеть, 16 кнопок как раз влезают в нибл. Но в аурдунье не принято искать простых решений... :)))
И даже хрен с ней экономией, передать ASCII код кнопки , не судьба?