Доброго времени суток,всем! Начал обучение по урокам Джереми Блум, с самого простого, но уже на втором уроке не получается повторить за автором. При нажатии на кнопку должен гореть светодиод, у меня же он горит вообще сам по себе стоит только загрузить скетч в Уно,даже без подключения схемы. Прилагаю скетч: к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); }
Сори, это опечатка при копировании, а на самом скетче все верно прописано, при подключении usb светодиод начинает моргать очень быстро и на подключении схемы никак не реагирует
Случайно не из книги "Изучаем Arduino. Инструменты и методы технического волшебства"? Если да, то Вы уж очень творчески подошли к копированию текста скетча.
Нет, из видеоуроков на ютуб. Так где же ошибка? 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); }
В книге, ближайший похожий на Ваш пример: Код (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); // Изменить статус состояния светодиода }
Заголовок не правильный! Я то думал кто то решил оказывать помощь новичкам и метнулся сюда, а тут со своими вопросами. ))