Подсчет нажатий кнопки - ФОРУМ ДВ Робот dvrobot.ru
Воскресенье, 25.02.2018, 03:56
Главная Мой профиль Регистрация Выход
  • НАШ МАГАЗИН
  • Вы вошли как Гость | Группа "Гости"Приветствую Вас, Гость
    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    Страница 1 из 11
    Модератор форума: Serg, GRACH 
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » Подсчет нажатий кнопки (Помогите разобраться!)
    Подсчет нажатий кнопки
    sanikДата: Четверг, 21.03.2013, 07:28 | Сообщение # 1
    5 Вольт
    Группа: Пользователи
    Сообщений: 55
    Репутация: 0
    Статус: Offline
    Помогите пожалуйста! Что то у меня не выходит, Допустим есть три кнопки первой я устанавливаю значение vc , второй я изменяю flashDelayMS , Мне надо так как только значения vc сравняестся с flashDelayMS загорелся светодиод и ждал пока я не нажму третью кнопку далее vc остается неизменным а flashDelayMS возвращается в ноль, и так по кругу... Мне для понимания что либо попроще пока без антидребезга и т д.. Буду очень признателен за помощь! smile
    Код
    const int  button_APin = 2;
    const int  button_BPin = 4;
    const int  buttonPin = 3;
    const int ledPin = 13;
    long flashDelayMS =0;
    long vc =0 ;

    void setup()
    {
        pinMode(buttonPin, INPUT);
        pinMode(button_APin, INPUT);
    pinMode(button_BPin, INPUT);
        pinMode(ledPin, OUTPUT);
        digitalWrite(ledPin, LOW);    
        Serial.begin(9600);
    }
    void loop()
    {
        if (digitalRead(button_APin) == HIGH)
          
        {
          delay(10);
          if (vc < 100) vc ++;
        }
        if (digitalRead(buttonPin) == HIGH)
        {
          if (flashDelayMS < vc) flashDelayMS ++;   
        }
        {
          if (flashDelayMS == vc)   
          digitalWrite(ledPin, HIGH);
        }

            Serial.println(flashDelayMS);
            Serial.println(vc);
              
    }


    Сообщение отредактировал sanik - Четверг, 21.03.2013, 07:30
     
    SergДата: Суббота, 23.03.2013, 21:24 | Сообщение # 2
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    Нужно добавить проверку условия if (digitalRead(button_BPin) == HIGH) и обнулить переменную flashDelayMS=0
     
    loriДата: Четверг, 28.03.2013, 07:06 | Сообщение # 3
    12 Вольт
    Группа: Пользователи
    Сообщений: 108
    Репутация: 20
    Статус: Offline
    Боюсь, что ваша программа совсем не работоспособна, во всяком случае она не будет выполнять назначенных ей функций. Вам нужно вводить дополнительные переменные для хранения состояния кнопок, иначе программа при нажатии любой кнопки со скоростью работы ATmega, а это 16 МГц, увеличивает значение счетчика этой кнопки пока вы держите ее нажатой, естественно происходит переполнение счетчиков, кроме того напутано с фигурными скобками в операторах if. Я рекомендую вам просмотреть видео-уроки по Arduino, если вы внимательно просмотрите их, то скорее всего сможете исправить ошибки самостоятельно.
    Вот ссылка:

    http://wiki.amperka.ru/#видеоуроки_по_arduino

    удачи!!!
     
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » Подсчет нажатий кнопки (Помогите разобраться!)
    Страница 1 из 11
    Поиск:

    ДВ Робот - Чат