roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 08:29

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с Arduino. Не реагирует на нажатие кнопки.
СообщениеДобавлено: 10 апр 2014, 13:34 
Не в сети
Аватара пользователя

Зарегистрирован: 22 фев 2014, 21:55
Сообщения: 34
Откуда: Москва
прог. языки: Delphi
ФИО: Дмитрий Соколов
Столкнулся с проблемой. Написал код, чтобы светодиоды начали мигать по включению тумблера и меняли свой режим мигания при нажатии кнопки. Режим мигания переключается не зависимо от положения кнопки. С чем это может быть связано?

Код:
#define LED1 11
#define LED2 10
#define LED3 5
#define RELE 7
#define BUTTON 12

int val = 0;
int but = 0;

void setup()
{
   pinMode(LED1, OUTPUT);
   pinMode(LED2, OUTPUT);
   pinMode(LED3, OUTPUT);
   pinMode(RELE, INPUT);
   pinMode(BUTTON, INPUT);
}

void off()
{
     digitalWrite(LED1, LOW);
     digitalWrite(LED2, LOW);
     digitalWrite(LED3, LOW);




void loop()
{
but = digitalRead(BUTTON);

if (but == HIGH) {
  val = digitalRead(RELE);
 
  if (val == HIGH) {
    digitalWrite(LED1, HIGH);
    delay(1000);
    digitalWrite(LED1, LOW);
    val = digitalRead(RELE);
    if (val == HIGH) {
     digitalWrite(LED2, HIGH);
     delay(1000);
     digitalWrite(LED2, LOW);
    }
    else {
     off; 
    }
    val = digitalRead(RELE);
    if (val == HIGH) {
    digitalWrite(LED3, HIGH);
    delay(1000);
    digitalWrite(LED3, LOW);
    }
    else {
    off;
    } 
  } else {
    off; 
  }
}
else {
      val = digitalRead(RELE);
 
  if (val == HIGH) {
    digitalWrite(LED1, HIGH);
    delay(500);
    digitalWrite(LED1, LOW);
    delay(500);
    digitalWrite(LED1, HIGH);
    delay(500);
    digitalWrite(LED1, LOW);
    delay(500);
    val = digitalRead(RELE);
    if (val == HIGH) {
    digitalWrite(LED2, HIGH);
    delay(500);
    digitalWrite(LED2, LOW);
    delay(500);
    digitalWrite(LED2, HIGH);
    delay(500);
    digitalWrite(LED2, LOW);
    delay(500);
    }
    else {
     off; 
    }
    val = digitalRead(RELE);
    if (val == HIGH) {
    digitalWrite(LED3, HIGH);
    delay(500);
    digitalWrite(LED3, LOW);
    delay(500);
    digitalWrite(LED3, HIGH);
    delay(500);
    digitalWrite(LED3, LOW);
    delay(500);
    }
    else {
    off;
    } 
  } else {
    off; 
  }

}




Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с Arduino. Не реагирует на нажатие кнопки.
СообщениеДобавлено: 10 апр 2014, 13:42 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
вопервых тема не в том разделе
ардуины тусят в однельном месте, щас перенесу

потом у тебя режим мигания меняется только если кнопка продолжает быть нажатой в момент когда главный цикл программы начинается заново

симулятор тебе нужен, с пошаговой отладкой, чтобы видеть как реально выполняется программа.

Добавлено спустя 2 минуты 7 секунд:
слегка корявый конечно но пользоваться можно
forum86/topic13367.html

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с Arduino. Не реагирует на нажатие кнопки.
СообщениеДобавлено: 10 апр 2014, 14:10 
Не в сети
Аватара пользователя

Зарегистрирован: 22 фев 2014, 21:55
Сообщения: 34
Откуда: Москва
прог. языки: Delphi
ФИО: Дмитрий Соколов
Спасибо. Будем разбираться)

Добавлено спустя 23 минуты 11 секунд:
Myp писал(а):
потом у тебя режим мигания меняется только если кнопка продолжает быть нажатой в момент когда главный цикл программы начинается заново


Проблема в том, что когда главный цикл начинается заново режим произвольно меняется или остаётся прежним в не зависимости от того, нажата кнопка в данный момент или нет.

Прогнав через симулятор, убедился в правильности написания кода. Значит проблема в сборке схемы.


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

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


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

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


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

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