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