Прошу совета, проблема с кнопкой
- Войдите на сайт для отправки комментариев
Пт, 26/04/2013 - 20:07
Здравствуйте! Возникла такая проблема: Arduino Uno R3,элементарный скетч с кнопкой на А0 и выводом на D7. Все работает. Вставляю в R3 Ethernet shield на W5100 и уже в него кнопку. Срабатывает только первое нажатие.В чем может быть проблема? Да, кнопка через 10к на земле, подается +5, пайка проверена, ни ляпов ни непропаев нет.
01 | int flag=0; |
02 |
03 | void setup () |
04 | { |
05 | |
06 | pinMode(7, OUTPUT); |
07 | |
08 | |
09 | } |
10 |
11 | void loop () |
12 |
13 | { |
14 | |
15 | if (digitalRead(14)==HIGH&&flag==0) //если кнопка нажата |
16 | // и перемення flag равна 0 , то ... |
17 | { |
18 | |
19 | digitalWrite(7,!digitalRead(7)); |
20 | flag=1; |
21 | //это нужно для того что бы с каждым нажатием кнопки |
22 | //происходило только одно действие |
23 | // плюс защита от "дребезга" 100% |
24 | |
25 | } |
26 | |
27 | if (digitalRead(14)==LOW&&flag==1) //если кнопка НЕ нажата |
28 | //и переменная flag равна - 1 ,то ... |
29 | { |
30 | |
31 | flag=0; //обнуляем переменную flag |
32 | } |
33 | } |
Я бы попытался найти в документации - на какие пины "садится" шилд w5100, и на сколько он просаживает питание ардуины.
Он садится на 10,11,12,13. Насчет питания, думаете имеет смысл запитать его отдельно?
Он садится на 10,11,12,13. Насчет питания, думаете имеет смысл запитать его отдельно?
У меня - все вместе запитано, но кнопок пока нет. Питание может проседать и несильно, но достаточно для того, чтобы вход не опознал напряжение как "единицу".
Попробуйте так:
Библиотека Bounce.h
01
#include <Bounce.h>
02
03
Bounce bouncer = Bounce(2, 40);
//создаем экземпляр класса Bounce для 2 вывода
04
05
void
setup
()
06
{
07
pinMode(2, INPUT);
//переключаем 2 вывод в режим входа
08
digitalWrite(2, 1);
//включаем на нем подтягивающий резистор
09
}
10
11
void
loop
()
12
{
13
if
(bouncer.update()) {
//если произошло событие
14
if
(bouncer.read()==0) {
//если кнопка нажата
15
/* ... */
16
}
else
{
17
/* ... */
18
}
19
}
20
}
Только я не понял на каком пине у Вас кнопка?
"элементарный скетч с кнопкой на А0"
а в коде
1
if
(digitalRead(14)==HIGH&&flag==0)
//если кнопка нажата
Разве на UNO есть 14 пин? Хм..
Когда пишешь digital 14 имеется ввиду analog 0. И вопрос значально был о том, что перестает работать при подключении Ethernet Shield, без него все работает...
На W5100 analog 0 и 1 подтянуты к +5. Они используються для SD
На W5100 analog 0 и 1 подтянуты к +5. Они используються для SD