Друзья, напоминаем, что самовывозом забрать заказ можно после подтверждения менеджером.
(098) 067-12-26 Киевстар (098) 067-12-26   Киевстар
(066) 142-24-48 Vodafone (066) 142-24-48   Vodafone
(098) 067-12-26 Lifecell (063) 642-36-59   Lifecell
 info@arduino.ua
График работы магазина:
Пн-Пт: 9.00 - 19.00
Сб: 10.00 - 19.00
Вс: выходной
г. Киев, ул. Васильковская, 30
ст.м. "Васильковская"
Каталог

Школа робототехники intRobots

Как собрать портативный осциллограф

Всем доброго времени суток. Сегодня я бы хотел рассказать, как собрать портативный (даже карманный) осциллограф на контроллере atmega328. Что вообще такое осциллограф? По словам википедии, это прибор, предназначенный для исследования (наблюдения, записи,

Робота з «розумними» світлодіодами WS2812

Проєкт демонструє роботу з «розумними» світлодіодами. WS2812 випускаються в різних форм-факторах, один з яких — діодне кільце. Перше, що спадає на думку, — зробити на його основі індикатор для годинника. Такий годинник може бути встановлений на робочому

Запись аудиофайлов на микросхемы серии ISD1700

В одном из недавних проектов мне потребовалось добавить озвучивание коротких текстовых сообщений. Шилды типа MP3-модуля с SD-картой показались мне избыточными, а «обучать» ARDUINO воспроизводить человеческую речь значило бы отдать практически все ресурсы

Сборка электронных часов

Коротенькая статья с картинками - инструкция по сборке электронных часов, которые можно приобрести на страницах нашего магазина. Переведена с английского (и может, не совсем качественно)
Напиши статью и получи скидку!

Подключение матричной клавиатуры к Arduino

2011-12-31

Все статьи →

Схема цифровой клавиатуры Для одного проекта понадобилось вводить информацию в Arduino с помощью цифровой клавиатуры, почитав интернет понял что это достаточно просто.

Для подключения клавиатуры используется два порта: порт ввода и порт вывода. Схема подключения клавиатуры приведена на рисунке. Как можно видеть для уменьшения количества выводов кнопки объединяют в строки и столбцы и затем, подавая единицу последовательно на каждую строку мы опрашиваем столбцы на предмет присутствия на них высокого уровня. Зная на какую строку мы подали напряжение и на каком столбце оно появилось мы можем вычислить какая именно кнопка нажата. Можно делать наоборот – напряжение подавать на столбцы, а опрашивать строки - разницы нет.

Есть небольшой нюанс, на каждый вход надо подключить подтягивающий резистор, чтобы на нем присутствовал уровень логического ноля, если этого не сделать на ноге микропроцессора будет так называемое третье состояние и он может определять состояние входа как угодно, стабильной работы при этом добиться не удастся. На рисунке показана принципиальная схема подключения Arduino Nano к 16 кнопочной матричной клавиатуре.

А вот пример простой программы, которая печатает нажатую кнопку в окно терминала.

	void setup() {

	  Serial.begin(9600);

	  Serial.println("Starting...");

	//определяем пины для строк и столбцов

	  pinMode(2, INPUT);

	  pinMode(3, INPUT);

	  pinMode(4, INPUT);

	  pinMode(5, INPUT);

	  pinMode(6, OUTPUT);

	  pinMode(7, OUTPUT);

	  pinMode(8, OUTPUT);

	  pinMode(9, OUTPUT);

	}

	int rows[]={9,8,7,6}; //указываем пины строк

	int cols[]={5,4,3,2}; //и столбцов

	//массив с соответствиями кодов нажатых кнопок

	char simbols[][2]={

	  {0,'1'},

	  {1,'2'},

	  {2,'3'},

	  {3,'A'},

	  {4,'4'},

	  {5,'5'},

	  {6,'6'},

	  {7,'B'},

	  {8,'7'},

	  {9,'8'},

	  {10,'9'},

	  {11,'C'},

	  {12,'*'},

	  {13,'0'},

	  {14,'#'},

	  {15,'D'}

	};

	void loop() {

	  for(int i=0;i<4;i++){ //цикл для перехода по всем строкам

	    digitalWrite(rows[i], HIGH); //подаем на текущую строку высокий уровень

	    for(int j=0;j<4;j++){ //цикл для переходов по всем столбцам

	      if(digitalRead(cols[j])==HIGH){ //если уровень высокий, то кнопка нажата

	        Serial.print(FindKey(4*i+j)); //выводим в терминал код нажатой кнопки

	      }

	    }

	    digitalWrite(rows[i], LOW);  //выключаем высокий уровень для пройденной строки

	  }

	}

	//функция возвращающая код нажатой кнопки

	char FindKey(unsigned int keyCode){

	  for(int i=0;i<16;i++){

	    if(simbols[i][0]==keyCode){

	      return simbols[i][1];

	    }

	  }

	  return '-'; //если код на найден возвращаем ‘-‘

	}

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Общая оценка:

Оценка "Подключение матричной клавиатуры к Arduino"
5 из 5
сделана на основе 2 оценок 2 клиентских отзывов.

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Giorgi
12.03.2018 01:45:20
помогите пожалуста этот код можна сделать так чтоб on работал через Bluetootn модуль HC-06тоесть передавал через Bluetootn модуль нажатую клавишу на мой компьютерогромное спасибо за помощь всем!giokalandarishvili@gmail.com
Сергей
08.08.2017 16:13:53
У такой клавы есть небольшой недостаток: появляются "фантомные кнопки" при нажатии одновременно нескольких кнопок. Так при нажатии кнопок 1-1, 1-2 и 2-1 появляется и "фантомная" 2-2. Избавиться от этого можно было бы включением последовательно с каждой кнопкой диода Шоттки, но в пленочной это затруднительно.
оплата картами Visa и MasterCard