Помощь новичкам

Тема в разделе "Arduino & Shields", создана пользователем Tigr, 18 июн 2016.

  1. Tigr

    Tigr Нуб

    Доброго времени суток,всем! Начал обучение по урокам Джереми Блум, с самого простого, но уже на втором уроке не получается повторить за автором. При нажатии на кнопку должен гореть светодиод, у меня же он горит вообще сам по себе стоит только загрузить скетч в Уно,даже без подключения схемы. Прилагаю скетч:
    кint switchPin = 8;
    int ledPin = 12;
    boolean lastButton = LOW;
    boolean ledOn = false;


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

    void loop()
    {
    if (digitalRead(switchPin) == HIGH && lastButton == LOW)
    {
    ledOn = !ledOn;
    lastButton = HIGH;
    }
    else
    {
    lastButton = digitalRead(switchPin);
    }
    digitalWrite(ledPin, ledOn);
    }
     
  2. seregareal2

    seregareal2 Нерд

    кint switchPin = 8;

    подправте

    и ВАШУ схему в студию)
     
    Последнее редактирование: 18 июн 2016
  3. Tigr

    Tigr Нуб

    Сори, это опечатка при копировании, а на самом скетче все верно прописано, при подключении usb светодиод начинает моргать очень быстро и на подключении схемы никак не реагирует
     
  4. fogary

    fogary Гик

    Случайно не из книги "Изучаем Arduino. Инструменты и методы технического волшебства"? Если да, то Вы уж очень творчески подошли к копированию текста скетча.
     
  5. Tigr

    Tigr Нуб

    Нет, из видеоуроков на ютуб. Так где же ошибка?
    int switchPin = 8;
    int ledPin = 12;
    boolean lastButton = LOW;
    boolean ledOn = false;


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

    void loop()
    {
    if (digitalRead(switchPin) == HIGH && lastButton == LOW)
    {
    ledOn = !ledOn;
    lastButton = HIGH;
    }
    else
    {
    lastButton = digitalRead(switchPin);
    }
    digitalWrite(ledPin, ledOn);
    }
     
  6. fogary

    fogary Гик

    В книге, ближайший похожий на Ваш пример:
    Код (C++):
    const int LED=9; // Контакт 9 для подключения светодиода
    const int BUTTON=2; // Контакт 2 для подключения кнопки
    boolean lastButton = LOW; // Переменная для сохранения предыдущего состояния кнопки
    boolean currentButton = LOW; // Переменная для сохранения текущего состояния кнопки
    boolean ledOn = false; // Текущее состояние светодиода (включей/выключен)

    void setup()
    {
        pinMode (LED, OUTPUT); // Сконфигурировать контакт светодиода как выход
        pinMode (BUTTON, INPUT); // Сконфигурировать контакт кнопки как вход
    }

    /*
    * Функция сглаживания дребезга
    * принимает в качестве аргумента предыдущее состояние кнопки
    * и выдает фактическое.
    */

    boolean debounce(boolean last)
    {
        boolean current = digitalRead(BUTTON); // Считать состояние кнопки
        if (last != current) // Если изменилось...
        {
            delay(5); // Ждем 5 мс
            current = digitalRead(BUTTON); // Считываем состояние кнопки
            return current; // Возвращаем состояние кнопки
        }
    }

    void loop()
    {
        currentButton = debounce(lastButton);
        if (lastButton == LOW && currentButton == HIGH) // Если нажатие
        {
            ledOn = !ledOn; // Инвертировать значение состояния светодиода
        }    
        lastButton = currentButton;
        digitalWrite(LED, ledOn); // Изменить статус состояния светодиода
    }
     
  7. ostrov

    ostrov Гуру

    Заголовок не правильный! Я то думал кто то решил оказывать помощь новичкам и метнулся сюда, а тут со своими вопросами. ))
     
  8. fogary

    fogary Гик

    Вы светодиод к шине +5V или GND подключили? Нужно к GND, а у Вас похоже к +5V.