Поблема с опросом клавиатуры 3х3
- Войдите на сайт для отправки комментариев
Вс, 11/01/2015 - 14:11
Всем привет! вообщем пытаюсь опросить клавиатуру 3х3, и с нажатием кнопки зажечь светодиод!не выходит что то... в чем ошибка не могу понять...
int rows[3]={ 6,7,8}; //указываем пины строк клавы int cols[3]={ 3,4,5}; //и столбцов void setup() { pinMode(3, INPUT); pinMode(4, INPUT); pinMode(5, INPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); // Инициализация вывода светодиода pinMode(9, OUTPUT); } void loop() { for(int i=0;i<3;i++){ //цикл для перехода по всем строкам digitalWrite(rows[i], HIGH); //подаем на текущую строку высокий уровень for(int j=0;j<3;j++){ //цикл для переходов по всем столбцам if(digitalRead(cols[j])==HIGH){ //если уровень высокий, то кнопка нажата digitalWrite(9, HIGH); // Вкл. светодиод } } digitalWrite(rows[i], LOW); //выключаем высокий уровень для пройденной строки digitalWrite(9, LOW); //Выключаем светодиод } }
Возможно, в строке 33 светодиод слишком быстро выключается.
Для отладки скетча включите в setup() вывод в монитор последовательного порта (Serial.begin) и далее выводите в него (Serial.println) состояние пинов, переменные и что еще надо. Тогда Вам легче будет понять, что там внутри циклов собственно происходит.
А может проще с Matrix Keypad library будет ? Вот здесь почитайте: http://playground.arduino.cc/Main/KeypadTutorial#Example
Возможно, в строке 33 светодиод слишком быстро выключается.
не все так просто видимо, т.к. пробывал ставить задержку delay(1000);, это бы решило проблему... но нет
сыллку посмотрю обязательно, спасибо
Delay не самое лучшее, лучше для пробы закоментируй строку 33, и не гаси светодиод совсем
или так