Arduino для начинающих. Урок 2. Подключение кнопки

Конструкторы для обучения детей робототехнике

Share Button

bannerПродолжаем серию уроков “Arduino для начинающих”. Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть). Это одна из базовых схем, которая неоднократно пригодиться вам в будущем и может использоваться для управления роботом на Arduino. В вашем будущем роботе по нажатию кнопки могут происходить самые разные действия.

В посте помимо видео-инструкции приводим листинг программы и схему подключения.

Видео-инструкция сборки модели кнопки на Arduino:

Для сборки модели нам потребуется:

  • плата Arduino
  • Breadboard
  • 5 проводов и/или перемычек «папа-папа»
  • светодиод
  • кнопка
  • резисторы на 10 кОм и 220 Ом.
компоненты

Что понадобится для подключения кнопки на Arduino?

Схема подключения модели Arduino с кнопкой и светодиодом:

подключить на Arduino кнопку и светодиод

Схема подключения кнопки и светодиода на Arduino

Также вам потребуется программа Arduino IDE, которую можно скачать с сайта Arduino.

Для работы этой модели подойдет следующая программа (программу вы можете просто скопировать в Arduino IDE):
int button = 2;
int led = 8;
void setup() {
pinMode(led, OUTPUT);
pinMode(button, INPUT);
}
void loop(){
if (digitalRead(button) == HIGH) {
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
}

Так выглядит собранная модель Arduino кнопки со светодиодом:

схема

Готовая модель с кнопкой и светодиодом на Arduino

На этом второй урок «Arduino для начинающих» закончен. Продолжение следует!

саша

Смотрите также:

Учебный курс «Arduino для начинающих»: главная страница.

Посты по урокам:

  1. Первый урок: Светодиод
  2. Второй урок: Кнопка
  3. Третий урок: Потенциометр
  4. Четвертый урок: Сервопривод
  5. Пятый урок: Трехцветный светодиод
  6. Шестой урок: Пьезоэлемент
  7. Седьмой урок: Фоторезистор
  8. Восьмой урок: Датчика движения (PIR) и E-mail
  9. Девятый урок: Подключение датчика температуры и влажности DHT11 или DHT22

Все посты сайта «Занимательная робототехника» по тегу Arduino.

Наш YouTube канал, где публикуются видео-уроки.

Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.

Автор: Александр Гагарин

Share Button

46 комментариев к статье “Arduino для начинающих. Урок 2. Подключение кнопки”

  1. Сергей

    02.11.2014

    Мне очень понравилось с фоторезистором. А сделайте пожалуйста навесным монтажом.

    Ответить на этот комментарий
  2. Вячеслав

    28.02.2015

    С +5V провод идет на кнопку и через резистор на землю? Это же почти к.з.?

    Ответить на этот комментарий
  3. Констатин

    06.03.2015

    Добрый день!
    Подскажите пожалуйста уже 100500 раз собирал эту схему у вас в видео светодиод не горит, а после нажатия кнопки горит, у меня он горит всегда только после нажатия кнопки он горит чуть ярче. в чем может быть дело?

    Ответить на этот комментарий
    • Занимательная робототехника

      07.03.2015

      Добрый день. Если просто соединить выводы кнопки через резистор с пином контроллера и землей, то это не работает. При нажатии кнопки пин соединяется с землей, и digitalRead будет считывать логический 0, но при отпущенной кнопке пин не будет соединен ни с какой линией и будет «висить в воздухе», и программа будет считать с вывода и 0 и 1 случайным образом. Правильное подключение предполагает, что в разомкнутом состоянии пин должен быть соединен через резистор с шиной питания, а в замкнутом — с землей, либо наоборот. Попробуйте и так, и так.
      Внутри микроконтроллера есть подтягивающие резисторы. Но они могут быть программно включены или выключены. Попробуйте включить и выключить подтягивающие резисторы программно.
      После того, как пин установлен в режим входа, чтобы включить на нем подтягивающий резистор нужно «записать в него 1» с помощью digitalWrite.

      void setup() {
      pinMode(8, OUTPUT);
      pinMode(2, INPUT);
      digitalWrite(2, HIGH); //включаем подтягивающий резистор
      }
      void loop() {
      digitalWrite(8, !digitalRead(2));
      }

      Ответить на этот комментарий
    • Марина

      04.10.2016

      Была такая же проблема, долго не понимала в чем дело.
      Оказалось, просто не до конца воткнула кнопку :)

      Ответить на этот комментарий
  4. Михаил

    15.05.2015

    Что нужно изменить в вашем коде, чтобы было так :
    нажал на кнопку один раз — лампочка включилась,
    нажал второй раз — выключилась… и так далее.. ?

    Ответить на этот комментарий
    • Денис

      19.05.2015

      Есть множество вариантов решения данной задачи. Например такой:

      const int buttonPin = 2;
      const int ledPin = 13;

      void setup() {
      // initialize the LED pin as an output:
      pinMode(ledPin, OUTPUT);
      // initialize the pushbutton pin as an input:
      pinMode(buttonPin, INPUT);
      }

      void loop() {
      digitalRead(buttonPin);
      while(!digitalRead(buttonPin)){}
      digitalWrite(ledPin, HIGH);
      while(digitalRead(buttonPin)){}
      while(!digitalRead(buttonPin)){}
      digitalWrite(ledPin, LOW);
      while(digitalRead(buttonPin)){}

      }

      Ответить на этот комментарий
      • Роман

        30.05.2015

        Здравствуйте, можно ли void loop() построчно комментарий?

        Ответить на этот комментарий
        • Занимательная робототехника

          30.05.2015

          void loop() {
          digitalRead(buttonPin); //считываем значение с кнопки
          while(!digitalRead(buttonPin)){} //пока кнопка не нажата ждем
          digitalWrite(ledPin, HIGH); //включаем светодиод
          while(digitalRead(buttonPin)){} //пока кнопка еще нажата ждем
          while(!digitalRead(buttonPin)){}//пока кнопка не нажата ждем
          digitalWrite(ledPin, LOW); //выключаем светодиод
          while(digitalRead(buttonPin)){} //пока кнопка еще нажата ждем
          }
          То есть: ждем нажатия кнопки и включаем светодиод, затем ждем отжатия кнопки и повторного нажатия, выключаем светодиод, ждем отжатия кнопки.

          Ответить на этот комментарий
          • Толик

            13.10.2016

            ошибки выдаёт с воид лупом чёта

      • Youjinn

        21.10.2016

        Подскажите что может быть, заюзал ваш код для кноки, все вроде работает но на 5-6 нажатия когда светодиод должен выключаться он горит, или должен гореть — выключаеться. В общем не 100% получаеться связь между кнопкой и светодиодом. Иногда проскакивает

        Ответить на этот комментарий
    • Денис

      19.05.2015

      или можно запустить образец из digital -> debounce
      он делает то же самое

      Ответить на этот комментарий
  5. Вячеслав

    30.06.2015

    Здравствуйте подскажите что нужно добавить в скейч что б алгоритм работы был таков: 2 кнопки Одно нажатие на кнопку 1 светодиод загорается горит 5 сек и затухает,если нажать на вторую то светик сразу гаснет??

    /*
    intledPin = 12;
    int buttonApin = 8;
    int buttonBpin = 7;
    byte leds = 0;
    void setup()
    {
    pinMode(ledPin, OUTPUT);
    pinMode(buttonApin, INPUT_PULLUP);
    pinMode(buttonBpin, INPUT_PULLUP);
    }
    Void loop()
    {
    if (digitalRead(buttonApin) == LOW)
    {
    digitalWrite(ledPin, HIGH);
    delay(5000);
    digitalWrite(12, LOW);
    }
    if (digitalRead(buttonBpin) == LOW)
    {
    digitalWrite(ledPin, LOW);
    }
    }

    Ответить на этот комментарий
  6. Занимательная робототехника

    30.06.2015

    Ваш скетч не работает, потому что программа выполняет delay(5000), в этот момент ничего больше выполняться не может.
    Можно использовать функцию millis(), возвращающую, сколько миллисекунд прошло с начала работы программы.

    int ledPin = 12;
    int buttonApin = 8;
    int buttonBpin = 7;
    void setup()
    {
    pinMode(ledPin, OUTPUT);
    pinMode(buttonApin, INPUT_PULLUP);
    pinMode(buttonBpin, INPUT_PULLUP);
    }
    void loop()
    {
    unsigned long currentMillis = 0;
    if (digitalRead(buttonApin) == LOW)
    {
    digitalWrite(ledPin, HIGH);
    currentMillis = millis();
    }
    if (digitalRead(buttonBpin) == LOW || millis()-currentMillis>5000)
    {
    digitalWrite(ledPin, LOW);
    }
    }

    Ответить на этот комментарий
  7. Антон

    08.08.2015

    Помогите пожалуйста. 100 раз все проверил — светодиод не загорается. Такое ощущение, что не идет питание 5V с платы. Как можно просто диагностировать эту неисправность?

    Ответить на этот комментарий
    • Денис

      10.08.2015

      Во-первых, нужно убедиться, что пины правильные. Далее, лучше всего проверить мультиметром.
      Еще для простоты можно светодиод воткнуть напрямую к 5в и земле. Если будет гореть (может и взорвется), то питание идет и проблема в подключении.
      Чтобы проверить подключение собственно кнопки можно загрузить код
      int pushButton = 2;

      void setup() {
      Serial.begin(9600);
      pinMode(pushButton, INPUT);
      }

      void loop() {
      int buttonState = digitalRead(pushButton);
      Serial.println(buttonState);
      delay(100);
      }

      И зайти в монитор порта. Если выдает при нажатии 1, то кнопка работает.

      Ответить на этот комментарий
  8. Михаил

    11.08.2015

    Почему не удаётся плавно запустить светодиод?

    //Свет плавно загорается после нажатия кнопки, кнопка нажимается ещё раз, свет моргает и гаснет.
    int button = 2;
    int led = 9;
    int i = 0;

    void setup() {

    pinMode(led, OUTPUT);

    pinMode(button, INPUT);

    }

    void loop() {
    digitalRead(button); //считываем значение с кнопки
    while(!digitalRead(button)){} //пока кнопка не нажата ждем
    do{
    analogWrite(led, i);
    i = i+1;
    }
    while(i==255);//включаем светодиод плавно
    digitalWrite(led, HIGH); //включаем светодиод
    while(digitalRead(button)){} //пока кнопка еще нажата ждем
    while(!digitalRead(button)){}//пока кнопка не нажата ждем
    digitalWrite(led, LOW);//моргаем несколько раз
    delay(100);
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
    delay(100);
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
    delay(100);
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW); //выключаем светодиод
    while(digitalRead(button)){} //пока кнопка еще нажата ждем
    }

    Ответить на этот комментарий
  9. Михаил

    11.08.2015

    Благодарю, Денис! Сейчас въехал, у меня проверка условия была не верна. Сделал вот так, сейчас всё красиво.
    //Свет плавно загорается после нажатия кнопки, кнопка нажимается ещё раз, свет моргает и гаснет.
    int button = 2;
    int led = 9;
    int i = 0;

    void setup() {

    pinMode(led, OUTPUT);

    pinMode(button, INPUT);

    }

    void loop() {
    digitalRead(button); //считываем значение с кнопки
    while(!digitalRead(button)){} //пока кнопка не нажата ждем
    do
    {
    analogWrite(led, i);
    i = i+1;
    delay(10);
    } while(i<100);//включаем светодиод плавно медленно
    do
    {
    analogWrite(led, i);
    i = i+1;
    delay(5);
    } while(i<200);//включаем светодиод плавно средне
    do
    {
    analogWrite(led, i);
    i = i+1;
    delay(1);
    } while(i<255);//включаем светодиод плавно быстро
    i = 0;//обнуление счётчика
    digitalWrite(led, HIGH); //включаем светодиод
    while(digitalRead(button)){} //пока кнопка еще нажата ждем
    while(!digitalRead(button)){}//пока кнопка не нажата ждем
    digitalWrite(led, LOW);//моргаем несколько раз
    delay(100);
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
    delay(100);
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
    delay(100);
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW); //выключаем светодиод
    while(digitalRead(button)){} //пока кнопка еще нажата ждем
    }

    Ответить на этот комментарий
  10. Влад

    19.10.2015

    Объясните пожалуйста неучу=) кнопка соединена с с +5v и с землей через резистор. Зачем вообще нужно соединять с землей кнопку? Может я что то недопонимаю в принципе работы кнопки?

    Ответить на этот комментарий
    • Занимательная робототехника

      20.10.2015

      Когда кнопка разомкнута, то если не было бы резистора, то на вход могли бы поступать хаотичные сигналы вместо ожидаемого нами отсутствия напряжения. Можно встретить терминологию «оставить вход в «подвешенном» состоянии». Причина — шумы, образующиеся вокруг провода производят электричество из электромагнитных волн среды.
      Стягивающий резистор рядом со входом гарантирует отсутствие напряжения при разомкнутой цепи (кнопка не нажата — цепь разомкнута).

      Ответить на этот комментарий
  11. sergey

    15.11.2015

    Подтягивающий резистор всегда ставится к +5в а тут наоборот . Почему? Почему не используется внутренний подтягивающий резистор?

    Ответить на этот комментарий
  12. Ренат

    29.11.2015

    Здравствуйте.Как можно проделать этот алгоритм .По кнопке меняется режим скорости переключения диодов (5с 2c 1c 0.5c)

    Ответить на этот комментарий
  13. ЗёБрА

    04.12.2015

    Подскажите как создать светильник из ARDUINO UNO У меня набор «Матрёшка» НО он выводит ОЩИБКЮ!!!!! когда вожу код

    Ответить на этот комментарий
  14. Владимир

    20.01.2016

    Скажите пожалуйста, насколько я понимаю, перед записью нового кода, нужно удалить старый с памяти платы. Как это сделать?

    Ответить на этот комментарий
  15. Александр

    28.01.2016

    помогите пожалуйста
    нужно чтобы при зажатии кнопка тоесть нажал и не отпускаеш
    загорелся светодиод и проигрался на mini MP3 1 трек и мр3 выключился а светодиод продолжал гореть если отпустить кнопку то все должно выключится
    у меня просто получается что Mp3 гоняет один трек по кругу и я не совсем понимаю как мр3 должен выйти из цикла

    #include
    #include
    int switchPin = 9;
    int ledPin = 7;

    void setup()
    {
    Serial.begin (9600);
    mp3_set_serial (Serial);
    mp3_set_volume (5);
    delay (100);
    pinMode (switchPin, INPUT);
    pinMode (ledPin, OUTPUT);
    }

    void loop()
    {

    if (digitalRead(switchPin) == HIGH)
    {
    digitalWrite(ledPin, HIGH);

    }
    else
    {
    digitalWrite(ledPin, LOW);

    }
    if (digitalRead(switchPin) == HIGH)
    {
    delay(500);
    mp3_play(1);
    delay(5000);
    mp3_stop();

    }
    else
    mp3_stop();

    }

    Ответить на этот комментарий
    • Денис

      30.01.2016

      Т.е. проблема в том, что если кнопка зажата то мп3 должен проиграть мелодию и после этого остановиться, а сейчас при зажатии трек повторяется?

      Ответить на этот комментарий
  16. Александр

    28.01.2016

    как мне выйти из цикла только для mp3 не совсем понимаю

    Ответить на этот комментарий
  17. ромча

    06.03.2016

    very very veryveryvery GOOD!
    пРЕКРАСНО

    Ответить на этот комментарий
  18. Alex

    16.03.2016

    Почему то малое напряжение если подключать на одну нагрузку несколько управляющих кнопок, светодиод включается но напряжение 1,3 вольта.

    int led_1 = 2;
    int led_2 = 3;
    int led_3 = 4;
    int led_4 = 5;

    int button_1 = 6;
    int button_2 = 7;
    int button_3 = 8;
    int button_4 = 9;

    int button_5 = 10;
    int button_6 = 11;
    int button_7 = 12;
    int button_8 = 13;

    int button_9 = A0;
    int button_10 = A1;
    int button_11 = A2;
    int button_12 = A3;

    int button_13 = A4;
    int button_14 = A5;

    void setup()
    {
    Serial.begin(9600);
    Serial.println();

    pinMode(led_1, OUTPUT);
    pinMode(led_2, OUTPUT);
    pinMode(led_3, OUTPUT);
    pinMode(led_4, OUTPUT);

    pinMode(button_1, INPUT);
    pinMode(button_2, INPUT);
    pinMode(button_3, INPUT);
    pinMode(button_4, INPUT);

    pinMode(button_5, INPUT);
    pinMode(button_6, INPUT);
    pinMode(button_7, INPUT);
    pinMode(button_8, INPUT);

    pinMode(button_9, INPUT);
    pinMode(button_10, INPUT);
    pinMode(button_11, INPUT);
    pinMode(button_12, INPUT);

    pinMode(button_13, INPUT);
    pinMode(button_14, INPUT);

    }

    void loop()

    {

    if (digitalRead(button_1) == HIGH)
    {
    digitalWrite(led_1,HIGH);
    }
    else
    {
    digitalWrite(led_1,LOW);
    }

    if (digitalRead(button_2) == HIGH)
    {
    digitalWrite(led_2,HIGH);
    }
    else
    {
    digitalWrite(led_2,LOW);
    }

    if (digitalRead(button_3) == HIGH)
    {
    digitalWrite(led_3,HIGH);
    }
    else
    {
    digitalWrite(led_3,LOW);
    }

    if (digitalRead(button_4) == HIGH)
    {
    digitalWrite(led_4,HIGH);
    }
    else
    {
    digitalWrite(led_4,LOW);
    }
    //**************************************

    if (digitalRead(button_5) == HIGH)
    {
    digitalWrite(led_1,HIGH);
    }
    else
    {
    digitalWrite(led_1,LOW);
    }

    if (digitalRead(button_6) == HIGH)
    {
    digitalWrite(led_2,HIGH);
    }
    else
    {
    digitalWrite(led_2,LOW);
    }

    if (digitalRead (button_7) == HIGH)
    {
    digitalWrite(led_3,HIGH);
    }
    else
    {
    digitalWrite(led_3,LOW);
    }

    if (digitalRead (button_8) == HIGH)
    {
    digitalWrite(led_4,HIGH);
    }
    else
    {
    digitalWrite(led_4,LOW);
    }
    //**********************************

    if (digitalRead (button_9) == HIGH)
    {
    digitalWrite(led_1,HIGH);
    }
    else
    {
    digitalWrite(led_1,LOW);
    }

    if (digitalRead (button_10) == HIGH)
    {
    digitalWrite(led_2,HIGH);
    }
    else
    {
    digitalWrite(led_2,LOW);
    }

    if (digitalRead (button_11) == HIGH)
    {
    digitalWrite(led_3,HIGH);
    }
    else
    {
    digitalWrite(led_3,LOW);
    }

    if (digitalRead (button_12) == HIGH)
    {
    digitalWrite(led_4,HIGH);
    }
    else
    {
    digitalWrite(led_4,LOW);
    }
    //**********************************

    if (digitalRead (button_13) == HIGH)
    {
    digitalWrite(led_1,HIGH);
    }
    else
    {
    digitalWrite(led_1,LOW);
    }

    if (digitalRead (button_14) == HIGH)
    {
    digitalWrite(led_3,HIGH);
    }
    else
    {
    digitalWrite(led_3,LOW);
    }

    }

    Ответить на этот комментарий
  19. Макс

    31.08.2016

    Подскажите мне не грамотному, как в уроке № 2, где собирают кнопку+диод, как модифицировать схему, чтобы нажимаешь на кнопку и диод продолжает гореть, еще раз нажимаешь диод гаснет. В исходном решении нажимаешь — горит, отпускаешь гаснет. Спасибо

    Ответить на этот комментарий
  20. Дмитрий

    26.10.2016

    Помогите пожалуйста моя идея работы скетча такая : один раз нажмешь на кнопку и все 6 светодиодов приемом бегущего огонька работают все время пока не нажмешь второй раз кнопку. Если второй раз нажать на кнопку то они перестают работать.

    int button = 10;

    int led = 2;

    void setup() {
    int pin = 2;
    for (pin = 2 ; pin <= 7 ; pin = pin + 1) {
    pinMode ( pin , OUTPUT) ;
    }
    pinMode(led, OUTPUT);
    pinMode(button, INPUT);
    bool flag = false;
    }

    int delay_len = 20 ;

    void loop() {
    if (button == 1) {
    for (pin = 2 ; pin <= 7 ; pin = pin + 1) {
    blink (pin);
    }
    void blink ( int pin ) {
    digitalWrite ( pin, HIGH ) ;
    delay ( delay_len );
    digitalWrite ( pin, LOW ) ;
    delay ( delay_len );
    }
    }
    if (digitalRead (button) == HIGH)
    if (flag == true ;
    if flag == false ;
    else
    if flag == true) {
    digitalWrite(pin, HIGH);
    else
    digitalWrite(pin, LOW);
    delay(500);
    }
    }

    Ответить на этот комментарий
    • Артем

      29.10.2016

      Такая же проблема, один в один. Никак не могу понять как комбинировать несколько кодов вместе. По отдельности все работает, а как объединить кнопку и бегущую строку не понимаю.

      Ответить на этот комментарий
  21. Александр

    02.11.2016

    Подскажите пожалуйста как добавить кнопку чтобы отключались 6 ть каналов шим ? Вот мой код :
    [code]
    int buttonPin = 7;
    int ledPin = 9;
    int potPin = A0;
    int led1Pin =3; // Светодиод подключен к выходу 3
    int led2Pin =5; // Светодиод подключен к выходу 5
    int led3Pin =6; // Светодиод подключен к выходу 6
    int led4Pin =9; // Светодиод подключен к выходу 9
    int led5Pin =10; // Светодиод подключен к выходу 10
    int led6Pin =11; // Светодиод подключен к выходу 11

    int analog1Pin = 3; // потенциометр подключен к выходу 3
    int analog2Pin = 3; // потенциометр подключен к выходу 3
    int analog3Pin = 3; // потенциометр подключен к выходу 3
    int analog4Pin = 3; // потенциометр подключен к выходу 3
    int analog5Pin = 3; // потенциометр подключен к выходу 3
    int analog6Pin = 3; // потенциометр подключен к выходу 3

    int val1 = 0; // переменная для хранения значения
    int val2 = 0; // переменная для хранения значения
    int val3 = 0; // переменная для хранения значения
    int val4 = 0; // переменная для хранения значения
    int val5 = 0; // переменная для хранения значения
    int val6 = 0; // переменная для хранения значения
    void setup()
    {
    pinMode(buttonPin, INPUT);
    pinMode(ledPin, OUTPUT);
    pinMode(led1Pin, OUTPUT); // установка порта на выход
    pinMode(led2Pin, OUTPUT); // установка порта на выход
    pinMode(led3Pin, OUTPUT); // установка порта на выход
    pinMode(led4Pin, OUTPUT); // установка порта на выход
    pinMode(led5Pin, OUTPUT); // установка порта на выход
    pinMode(led6Pin, OUTPUT); // установка порта на выход
    }

    void loop()
    {
    val1 = analogRead(analog1Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led1Pin, val1 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val2 = analogRead(analog2Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led2Pin, val2 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val3 = analogRead(analog3Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led3Pin, val3 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val4 = analogRead(analog4Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led4Pin, val4 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val5 = analogRead(analog5Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led5Pin, val5 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val6 = analogRead(analog6Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led6Pin, val6 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    }

    [/code]

    Ответить на этот комментарий
  22. Александр

    02.11.2016

    Подскажите пожалуйста как добавить кнопку чтобы при однократном нажатии отключало 6 ть каналов шим одновременно а при повторном — включало? Вот мой код :
    [code]
    int buttonPin = 7;
    int ledPin = 9;
    int potPin = A0;
    int led1Pin =3; // Светодиод подключен к выходу 3
    int led2Pin =5; // Светодиод подключен к выходу 5
    int led3Pin =6; // Светодиод подключен к выходу 6
    int led4Pin =9; // Светодиод подключен к выходу 9
    int led5Pin =10; // Светодиод подключен к выходу 10
    int led6Pin =11; // Светодиод подключен к выходу 11

    int analog1Pin = 3; // потенциометр подключен к выходу 3
    int analog2Pin = 3; // потенциометр подключен к выходу 3
    int analog3Pin = 3; // потенциометр подключен к выходу 3
    int analog4Pin = 3; // потенциометр подключен к выходу 3
    int analog5Pin = 3; // потенциометр подключен к выходу 3
    int analog6Pin = 3; // потенциометр подключен к выходу 3

    int val1 = 0; // переменная для хранения значения
    int val2 = 0; // переменная для хранения значения
    int val3 = 0; // переменная для хранения значения
    int val4 = 0; // переменная для хранения значения
    int val5 = 0; // переменная для хранения значения
    int val6 = 0; // переменная для хранения значения
    void setup()
    {
    pinMode(buttonPin, INPUT);
    pinMode(ledPin, OUTPUT);
    pinMode(led1Pin, OUTPUT); // установка порта на выход
    pinMode(led2Pin, OUTPUT); // установка порта на выход
    pinMode(led3Pin, OUTPUT); // установка порта на выход
    pinMode(led4Pin, OUTPUT); // установка порта на выход
    pinMode(led5Pin, OUTPUT); // установка порта на выход
    pinMode(led6Pin, OUTPUT); // установка порта на выход
    }

    void loop()
    {
    val1 = analogRead(analog1Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led1Pin, val1 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val2 = analogRead(analog2Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led2Pin, val2 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val3 = analogRead(analog3Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led3Pin, val3 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val4 = analogRead(analog4Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led4Pin, val4 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val5 = analogRead(analog5Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led5Pin, val5 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    val6 = analogRead(analog6Pin); // считываем значение с порта, подключенному к потенциометру
    analogWrite(led6Pin, val6 / 4); // analogRead возвращает значения от 0 до 1023, analogWrite должно быть в диапозоне от 0 до 255
    }

    [/code]

    Ответить на этот комментарий
  23. islam

    20.11.2016

    int button = 2;
    int led = 8;
    void setup() {
    pinMode(led, OUTPUT);
    pinMode(button, INPUT);
    }
    void loop(){
    if (digitalRead(button) == HIGH) {
    digitalWrite(led, HIGH);
    }
    else {
    digitalWrite(led, LOW);
    }
    }
    помогите пожалуйста вместо одной кнопки сделать две кнопки

    Ответить на этот комментарий
  24. Adam

    27.03.2017

    Добрый день,есть кнопка нажимаешь включаешь 1 светодиод 2 паралельно мигает отпускаеш кнопку отключаешь обе светодиода

    Ответить на этот комментарий
  25. Ксения

    13.04.2017

    всем привет, подскажите, пожалуйста! мы сделали модель и код. рабоет так: нажал на кнопку — диод горит, еще раз нажал- потух. сейсам мне надо сделать так: нажал- слабо горит, еще нажал- сильнее горит, еще нажал- сильно горит, нажал еще-потух диод. прежний код выглядит так.
    int ledPin = 13;
    int switchPin = 8;
    boolean lastButton = LOW;
    boolean ledOn = false;
    boolean currentButton = LOW;

    void setup()
    {
    pinMode(ledPin, OUTPUT);
    pinMode(switchPin, INPUT);
    }

    boolean debounce (boolean last)
    {
    currentButton = digitalRead (switchPin);
    if (last != currentButton)
    {
    delay (5);
    currentButton = digitalRead (switchPin);
    }
    return currentButton;
    }

    void loop() {
    currentButton = debounce (lastButton);
    if(lastButton == LOW && currentButton == HIGH)
    {
    ledOn = !ledOn;
    }
    lastButton = currentButton;

    digitalWrite(ledPin, ledOn);
    }

    Ответить на этот комментарий
  26. Ivan

    29.04.2017

    Объясните пожалуйста, зачем в землю резистор. Объясните пожалуйста максимально простыми словами, никак не могу понять:(

    Ответить на этот комментарий
  27. питер

    02.07.2017

    Доброго дня . Подскажите пожалуйста зачем нужно резистором тянуть землю на кнопку , если при нажатии кнопка пропускает плюс ?

    Ответить на этот комментарий

Оставить комментарий

© 2014-2017 Занимательная робототехника, Гагарина Д.А., Гагарин А.С., Гагарин А.А. All rights reserved / Все права защищены. Копирование и воспроизведение в любой форме запрещено. Политика кофиденциальности. Соглашение об обработке персональных данных.
Наверх