arduino

Тема в разделе "Arduino & Shields", создана пользователем minzdraw, 20 авг 2019.

  1. minzdraw

    minzdraw Нуб

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

    int potPin = A0;
    int ledPin = 10;
    void setup(){
    pinMode(10,OUTPUT);
    }
    void loop(){
    int val=analogRead(A0);
    if(val>1000){
    digitalWrite(10,HIGH);
    delay(50);
    digitalWrite(10, LOW);
    delay(50);
    }
    else(val=0);
    {
    digitalWrite(10,LOW);
    }
    }
     
  2. NikitOS

    NikitOS Король шутов Администратор

    Код вставьте правильно (5.9)
    И заголовок нормальный сделайте
     
  3. Daniil

    Daniil Гуру

    Плохо вставленный код мы не читаем.

    Я бы завел 1 "таймер" и флаг подачи напряжения.

    если текущее время меньше, чем время подачи напряжения + 5 сек И флаг напряжения есть, то мигать, иначе если напряжения на пине нет, то сбрасывать флаг напряжения.
    При этом если флаг напряжения был ложью, а напряжение на пине есть, то засечь время и выставить флаг напряжения.

    Как-то так)
     
    Последнее редактирование: 20 авг 2019
    arkadyf и NikitOS нравится это.
  4. trimmer2007

    trimmer2007 Нерд

    Зря ты сюда за помощью пришёл, сейчас подтянется вся братия и как бог черепаху тебя разнесут!
     
  5. NikitOS

    NikitOS Король шутов Администратор

    Авбан?
     
    Airbus нравится это.
  6. DetSimen

    DetSimen Guest

    этта шо за конструкция?
     
  7. trimmer2007

    trimmer2007 Нерд

    Только не бросайте меня в терновый куст!
     
  8. NikitOS

    NikitOS Король шутов Администратор

    Будет исполнено!

    Это из серии "Я нифига не понял, гуглить не буду, читать книжки тоже, лучше на форуме потуплю"
     
    Airbus нравится это.
  9. parovoZZ

    parovoZZ Гуру

    так нельзя только по правилам MISRA. А остальным можно. Я тоже иногда if ... else в одну строчку писал без фигурных скобок. Сейчас так не пишу.
     
  10. DetSimen

    DetSimen Guest

    Мне кажется, это не то, чего хотел добиться ТС. Посмотри в контексте
     
  11. KindMan

    KindMan Гуру

    Я тут "взял выходной" (Крюгер Бархатное 1Л + 0.5 Алтайское Бархатное) (ни тёщи ни семьи) и подобрел, решил помочь стоящему на нижней ступени, от меня, студенту, в восприятии Ардуино. Не ругайте, пожалуйста, товарищи педагоги, знаю, что не правильно, но иногда находит .... и по мотивам сообщения
    решил сворганить это
    Код (C++):
    #define PinNapryajenie A0
    #define Svetodiod 10

    uint32_t Timer;
    uint32_t TimerMiganie;
    uint8_t FlagNapryajenie;
    uint8_t FlagMiganie;

    const uint32_t VremyaMiganiya = 5000;
    const uint32_t IntervalMiganie = 500;

    void setup() {
      // put your setup code here, to run once:
      pinMode(Svetodiod, OUTPUT);
    }

    void loop() {
      // put your main code here, to run repeatedly:
    if (!FlagNapryajenie) {
      if (digitalRead(PinNapryajenie)) {
        Timer = millis();
        FlagMiganie = true;
        FlagNapryajenie = true;
      }
    }
    if (FlagMiganie) {
      if (millis() - Timer < VremyaMiganiya) {
          if (millis() - TimerMiganie > IntervalMiganie) {
            digitalWrite(Svetodiod, !digitalRead(Svetodiod));
            TimerMiganie = millis();
          }
      } else {
        FlagMiganie = false;
        digitalWrite(Svetodiod, LOW);
      }
    }
    if (!digitalRead(PinNapryajenie)) FlagNapryajenie = false;
    }
    Может где косякнул, и не всё понял по задаче, но как есть. ТС, пробуй, отпишись!
     
    ИгорьК, Airbus и Daniil нравится это.
  12. Daniil

    Daniil Гуру

    Я тоже периодически нападаю с помощью)
    Я бы парочку ифов объединил бы, а так как по тексту, только я забыл рассказать как мигать без делея(
     
    Последнее редактирование: 20 авг 2019