roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 май 2025, 01:47

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Protoshield и кнопка S1
СообщениеДобавлено: 15 фев 2015, 11:42 
Не в сети

Зарегистрирован: 29 янв 2015, 16:59
Сообщения: 5
Здравствуйте!
Заранее прошу прощения если тема поднималась, но нигде ничего не смог найти.
В общем есть Protoshield для Arduino UNO R3:
Изображение
Изображение
На данном шилде есть кнопка S1 светодиод LED2. Хотелось бы реализовать включение светодиода при нажатии на кнопку, а так же реализовать вызов обработчика прерывания при нажатии на кнопку.
Вот схема сборки (сорри, но интегральные схемы рисовать не научился):
Изображение

Вот текст программы (в соответствии с сэмплами которые нашел):

Код:
#define LED_PIN 13
volatile int state = LOW;

void setup(){
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  attachInterrupt(0, whenButtonPress, CHANGE); 
}

void loop(){
  digitalWrite(LED_PIN, state); 
}

void whenButtonPress(){
  state = !state;
}


Но по итогу светодиод горит с момента включения, и на нажатие кнопки не реагирует.
Что не правильно сделал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Protoshield и кнопка S1
СообщениеДобавлено: 16 фев 2015, 03:04 
Не в сети

Зарегистрирован: 02 дек 2011, 22:02
Сообщения: 14
Откуда: Дубна
прог. языки: C, Delphi
Попробуйте без шилда сначала. Чтобы хотя бы на аруине самой заработало. Светодиод на плате есть, кнопку сами прикрутите (int0 - это pin2 для uno). Советую также подтянуть вывод, на который будете вешать кнопку, к земле или к питанию. Иначе контроллер будет читать с него кашу из единичек и нулей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Protoshield и кнопка S1
СообщениеДобавлено: 16 фев 2015, 05:36 
Не в сети

Зарегистрирован: 29 янв 2015, 16:59
Сообщения: 5
Спасибо за ответ!
Разобрался сам - надо было установить 2ой пин как вывод с напряжением HIGH.
Но возникла новая проблема - у кнопки есть механическое "дрибежание", т.е. при однократном нажатии может несколько раз вызвать прерывание. Обычно это решают чем нибудь вроде delay(200), но в обработчике прерывания нельзя использовать delay() и millis().


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO