Перейти к содержанию

PJufa

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Ufa

Электроника

  • Стаж в электронике
    3-5 лет

Достижения PJufa

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. PJufa

    проблема с кнопкой

    народ, беда, помогите разобраться if (timer != timerPress) не срабатывает эта строка && timer <= (timerPress + 300) и эта часть код и монитор порта прологаю версия arduino IDE 1.8.2 есть светодиод (полевик и набор из 20 шт 5730) хочу управлять им и с пульта и с кнопки поэтому там button пульт будет задействован позже. на пульте есть неиспользуемая кнопка... она сделана для других стран я уже пробовал ее - работает код получен и прочее СУТЬ! при нажатии на кнопку длительностью меньше 300 миллисекунд включает val = 255 - подаем на светодиод при повторном нажатии меньше 300 миллисекунд подает val = 0 при удержании с выключенного положения больше 300 миллисекунд начинает прибавлять значение val (скажем прибавили до 180) при нажатии менее 300 мс val=0 при длительном нажатии начинает убавлять(скажем 150) совсем не светит почти и при длительном нажатии опять начинает прибавлять... гладко было было на бумаге, да вот чет не ожидал что так сразу вспотыкаться начну... всем спасибо за конструктивные ответы int val = 0; // создаем переменную регулировки и определяем её значение boolean button = false; // нажатие кнопки (пульта или клацалки) boolean flag = false; // сработка кнопки unsigned long timer = 0; // таймер с момента включения unsigned long timerPress = 0; // таймер удержания кнопки int gatePin = 3; // указываем пин который будем управлять затвором int buttonPin = 5; // указываем пин кнопки int regim = 0; // режим int trend = 1; //направление переключения режимов в большую или меньшую сторону void setup() { pinMode(buttonPin, INPUT); Serial.begin(9600); } void loop() { timer = millis(); button = digitalRead(buttonPin); // нажатие кнопки if (button == true) //если кнопка нажата ... { flag = true; //поднимаем флаг if (timer != timerPress) // и если таймеры не равны { timerPress = timer; // то таймеру нажатия присваивается значение таймера } } //отпускание кнопки if (button == false && regim == 0 && flag == true && timer < (timerPress + 300) ) // если кнопка отжата и режим 0 и таймер меньше таймера нажатия на 300 мс { flag = false; // опускаем флаг regim = 255; // режим равен 255 } if (button == false && regim == 255 && flag == true && timer < (timerPress + 300) ) // если кнопка отжата и режим 255 и таймер меньше таймера нажатия на 300 мс { flag = false; // опускаем флаг regim = 0; // режим равен 0 } // ружимы if (regim == 0) { val = 0; } if (regim == 1) { val = 180; } if (regim == 2) { val = 180; } if (regim == 3) { val = 190; } if (regim == 4) { val = 200; } if (regim == 5) { val = 200; } if (regim == 6) { val = 210; } if (regim == 7) { val = 220; } if (regim == 8) { val = 230; } if (regim == 9) { val = 240; } if (regim == 10) { val = 255; } //вывод значения analogWrite(gatePin , val); //вывод в монитор Serial.print(" timer-"); Serial.print (timer); Serial.print(" timerPress-"); Serial.print (timerPress); Serial.print(" button-"); Serial.print (button); Serial.print(" flag-"); Serial.print (flag); Serial.print(" val-"); Serial.println(val); //делея тут не будет в итоге delay(10); } монитор порта в скрине ткните носом в косяк
×
×
  • Создать...