Нужна помощь со скетчем для ардуино

Тема в разделе "Arduino & Shields", создана пользователем NIM, 20 июл 2018.

  1. NIM

    NIM Нуб

    Недавно начал работать с ардуино и загорелся желанием сделать так чтоб при нажатии на кнопку горел 1 светодиод при отпускании первый тух а 2 загорался ардуино UNO
     
  2. NIM

    NIM Нуб

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

    Код (C++):
    const int LED2=8;
    const int LED=9;
    const int BUTTON=2;

    void setup() {
    pinMode (LED2,OUTPUT);
    pinMode (LED,OUTPUT);
    pinMode (BUTTON,INPUT);
    }

    void loop() {
    int buttonState = digitalRead(BUTTON);
    if (buttonState == HIGH) {

    digitalWrite(LED,LOW );
    digitalWrite(LED2,HIGH );

    }
    else
    {
    digitalWrite(LED,HIGH );
    digitalWrite(LED2,LOW );
    }
    }
     
     
    Последнее редактирование: 20 июл 2018
  3. ostrov

    ostrov Гуру

    Сделайте информативный заголовок. Правильно вставьте код.
     
    Последнее редактирование: 20 июл 2018
    NikitOS нравится это.
  4. Mitrandir

    Mitrandir Гуру

    почитайте про жизненный цикл программы
     
  5. Mitrandir

    Mitrandir Гуру

    какова логика работы вашего алгоритма?
    подали напряжение на МК, ничего не горит, затем нажали кнопку жмем - горит 1 диод. отпустили - загорелся второй ?
     
  6. Mitrandir

    Mitrandir Гуру

    Код (C++):



    #define LED2 8
    #define LED 9
    #define BUTTON 2

    #define STATE_INIT 0
    #define STATE_LED1 1
    #define STATE LED2 3

    char state;

    void setup() {
       pinMode (LED2,OUTPUT);
       pinMode (LED,OUTPUT);
       pinMode (BUTTON,INPUT);
       state = STATE_INIT;
    }

    void loop() {
       int buttonState= digitalRead(BUTTON);

       if (buttonState == HIGH && state == STATE_INIT) {
          digitalWrite(LED,LOW );
          digitalWrite(LED2,HIGH );
          state = STATE_LED1
       }
       else if(buttonState == LOW && state == STATE_LED1)
       {
          digitalWrite(LED,HIGH );
          digitalWrite(LED2,LOW );
          state = STATE_LED2;
        }
    }
    Антидребезг сами добавьте, мне лень
     
    arkadyf и Сусемьбек нравится это.
  7. Уважаемый. А таки как потом state присвоить снова 0? Чтобы программа работала бесконечно? А тс выложите фотографию или схему, как у вас там все подключено. Антидребезг таки да не помешал бы хотябы на delay();
     
  8. Mitrandir

    Mitrandir Гуру

    а тс это просил?
     
    Сусемьбек нравится это.
  9. Limoney

    Limoney Гик

    специально:rolleyes:, чтобы ТС не просто копировал
     
    Mitrandir и Сусемьбек нравится это.
  10. Вон оно что))).
     
    Limoney нравится это.
  11. Mitrandir

    Mitrandir Гуру

    Домашнее задание, добавить антидребезг и сделать переход в конечном автомате )
    всего то одну строку поменять
     
    arkadyf, NIM, Limoney и ещё 1-му нравится это.
  12. NikitOS

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

    А это в 1 сообщении написать нельзя было?
     
    NIM нравится это.
  13. Limoney

    Limoney Гик