Вопрос почему светодиод вместо того чтоб включиться и выключиться гаснет ступенями просто включается и за i проходов изменяет яркость? Код (Text): void loop() { long int time = millis() - time_start; bool led_on = false; for (int i = 0; i < Pulse_red; i++) { if (millis() - time <= ligth_time_red + next_red) { led_on = true; } if ((time>=(time_start + ligth_time_red + pulseIntervalRed*i))) { led_on = false; } digitalWrite(RED_PIN, led_on); } }
Видать не суждено этому проекту жить... Может кто нибудь подскажет как этот loop должен на самом деле выглядеть? Не получается у меня справиться с ним
Да видать не разобраться мне с ним. Так синий светодиод не работает И еще парадокс когда пытался заставить работать один красный то вместе с ним загорался зеленый хотя в коде ни слова не было про него Код (Text): { long int time = millis() - time_start; bool led_onBlue = false; bool led_onRed = false; if (digitalRead (PIN_BTN_START)) { for (int i = 0; i < Pulse_red; i++) { if ((time<=(time_start + ligth_time_red + next_red + pulseIntervalRed*i))) { led_onRed = true; } if ((time>=(time_start + ligth_time_red + pulseIntervalRed*i))) { led_onRed = false; } digitalWrite(RED_PIN, led_onRed); } for (int i = 0; i < Pulse_blue; i++) { if ((time<=(time_start + ligth_time_blue + next_blue + pulseIntervalBlue*i))) { led_onBlue = true; } if ((time>=(time_start + ligth_time_blue + pulseIntervalBlue*i))) { led_onBlue = false; } } } }
Вобще как только не пробовал ничего ни выходит разные варианты мучал немогу добиться того что надо приблизительно только.
Посмотрите еще раз первый мой пример. Там написано как должна выглядеть функция loop() в случае одного импульса.
Если импульсов несколько, заменяете соответствующий if() циклом /точнее пару if() отвечающую за включение и выключение/, который вычисляет значение led_on. Сами светодиоды внутри этих циклов не трогаете, никаких digitalWrite() ! Это все нужно только для того, чтобы вычислить, должен ли гореть светодиод в данный момент времени или нет, при условии что импульсов несколько и между ними определенные промежутки.
Только потом, в конце loop(), в зависимости от значения соответствующей цвету переменной led_on_X, на самом деле зажигаете или гасите светодиод.
Спасибо за помошь! Я даже понятия не имею как это сделать (заменяете соответствующий if() циклом /точнее пару if() отвечающую за включение и выключение/, который вычисляет значение led_on.) не понять мне этого , Загружу в него Blink и пускай мигает чтоб не валялся просто так..А сам займусь более полезным делом... и так потерял зря кучу времени...
здравствуйте, подскажите пожалуйста как можно сделать циклический таймер. Может кто делал. Заранее спасибо
Как еще можно это зписывать теперь он тупо гаснет снова зажигается и горит когда стоял break он просто горел Код (Text): void loop() { long int time = millis() - time_start; bool led_on = false; for (int i = 0; i < Pulse_red; i++) { if ((time>=(time_start + next_red))) { led_on = true; } if ((time>=(time_start + ligth_time_red))) { led_on = false; } if ((time>=( + pulseIntervalRed*i))) { led_on = true; } } digitalWrite(RED_PIN, led_on); }
он да, но мне надо что бы это время можно было менять, а это лучше делать на микроконтроллере и вывод на дисплей информации
не могу разобраться как создать бесконечный цикл, пока не будет нажата кнопка выхода в настройки времени таймеров