Уроки Arduino #7 - подключение светодиода
ฝัง
- เผยแพร่เมื่อ 10 ส.ค. 2017
- В этом уроке рассмотрим подключение светодиодов к Arduino, научимся рассчитывать токоограничивающий резистор, а также управлять светодиодом при помощи кнопки.
▼ Пачку светодиодов можно купить здесь▼
alexgyver.ru/electronics/
▼ Огромный стартовый набор GyverKIT ▼
kit.alexgyver.ru/
▼ Уроки Arduino на сайте ▼
alexgyver.ru/lessons/
▼ Модули и датчики с Али ▼
alexgyver.ru/arduino_shop/
▼ Страница "Заметок Ардуинщика" ▼
alexgyver.ru/arduino_lessons/
Теги: #arduino #уроки #ардуино #alexgyver
●●●●●●●●●●●●●●●●●●●●
► Основной канал: / alexgyvershow
► Поддержать автора alexgyver.ru/support_alex/
► Официальный сайт: alexgyver.ru/
► Почта: alex@alexgyver.ru - วิทยาศาสตร์และเทคโนโลยี
Ребята, я берусь за уроки с новыми силами, сейчас озвучено ещё 4 штуки, и ещё для нескольких написан сценарий. В начале осени думаю выйдут все уроки! Дальше будем распиливать библиотеки и всякие модули
Скорее бы, мы заждались!)
Заметки Ардуинщика УРРАААА!!!! ТЫ ВЕРНУЛСЯ!!!! спасибо огромное, мы очень ждали!!!
Заметки Ардуинщика урааааа, я так ждал этого!
красный ниндзя у него 3 канала на ютубе.И один основной,где 500 000 человек ждут КАЧЕСТВЕННЫЕ И ТРУДНЫЕ САМОДЕЛКИ.
Dmitry Changli А че за третий канал?
Благодаря тебе познакомился с ардуино и сижу в 30 лет светодиоды включаю)
Спасибо, Саша. Лучшие уроки!
В 50
В 13
В 30)
в 35)))
В 13
Просто супер понятно, логично. Нет воды! Все наглядно. Глаз радуется качественному контенту! Спасибо большое!
Спасибо за то, что ты делаешь) уже на данный момент это ЛУЧШЕЕ пособие в рунете
Ура, ты вернулся!
Лайк не глядя, продолжай пилить видосы про ардуино, у тебя классно получается!
Наконец то, новые Заметки Ардуинщика! Ура.
Сделай пожалуйста новых уроков - уже третий день смотрю и всё проделываю сам - очень круто и очень тебе благодарен за новые знания и твоё время!!
Балдежный урок. Простая тема, но объяснения проще этого не видел)
Крутые уроки! Купил набор, учусь!
Здорово, понятно и прочая хвала). Заказал стартер набор ардуино , будем пробовать.
Наконец-то новый урок :)
D4 и D5 пин. (2 светодиода)
Код, который убирает нужду в перезагрузке после загорания всех светодиодов.
boolean butt_flag = 0;
boolean butt;
boolean led_flag = 0;
unsigned long last_press;
byte LEDcounter = 4;
void setup() {
pinMode(A5, INPUT_PULLUP);
Serial.begin(9600);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(4, 0);
digitalWrite(5, 0);
}
void loop() {
butt = !digitalRead(A5); // считать текущее положение кнопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 100) {
butt_flag = 1;
Serial.println("Button pressed");
digitalWrite(LEDcounter, 1); //Включаем светодиод с текущим номером
LEDcounter++;
if (LEDcounter > 6) { // У нас 4 и 5 pin, 6-го нет, поэтому сбрасываем.
digitalWrite(4, 0); // Выключаем D4 pin
digitalWrite(5, 0); // Выключаем D5 pin
LEDcounter = 4; // Сбрасываем до первого pin'a
}
last_press = millis();
}
if (butt == 0 && butt_flag == 1) {
butt_flag = 0;
Serial.println("Button released");
}
}
а как сделать так чтобы они по нажатию кнопки поочередно тухли, если можно напиши )))
@Maks Tarasenko я добавил еще 1 переменную и выключил поочередно диоды в обратном порядке, но не могу вернуть переменным исходное состояние чтобы не перезагружать, напишите свой код пожалуйста)
@@user-lv7xz1ih3z int led = 2;
bool butt;
bool zap = false;
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, INPUT_PULLUP);
}
void loop() {
butt = !digitalRead(5);
delay(170);
if(butt == true && zap == false){
digitalWrite(led,HIGH);
led++;
if(led == 5) {zap = true;led--; }
butt = false;
}
if(butt == true && zap == true ){
digitalWrite(led, LOW);
led--;
if(led == 1) {zap = false;led++;}
butt = false;
}
}
@@user-lv7xz1ih3z он очень кривой, но работает, хотя вряд ли вопрос актуален. Может кому-то потом пригодится
@@user-ek8nn7ym1f вопрос, где ты переменную led взял?
Какие неадекваши в комментариях, уф...
Хороший урок - простой, понятный, короткий, наглядный! И тема с домашним заданием и разбором на следующем уроке очень крутая
Большое спасибо за хорошие видео уроки. Ну прям неистовое состояние, Я В ПЕРВЫЕ САЖУСЬ ЗА УРОКИ ВОПРЕКИ ЧТО ЭТО ДОМАШНЯЯ РАБОТА. Знаешь это как в прорубь зайти. Год как школу закончил. А тут за домашку сел. СПАСИБО!!!
Очень жду твоих уроков!!!!!
Оно живое! Живое!
Сижу 3.5 ч. пытаюсь сообразить домашнее задание
byte LED = A4;
byte click3 = 0;
click3++;
if (click3 == 8) {
LED--;
click3 = !click3;
byte click3 = 0;
} else if (click3 > 3) {
digitalWrite(LED,0);
LED++;
Serial.println("2");
} else {
digitalWrite(LED,1);
LED--;
Serial.println("1");
}
@@miwma8254 я уже 2день сижу и немогу ето разобрать ппц , помможет кто в коментах!???
@@TheMakckir Я же написал в коммах код, как это сделать
@@miwma8254 непонимаю зачем аналоговый пин а4 ??
@@miwma8254 ваше непонимаю твоего кода куда что и зачем
Идея для видео "на потом" - собрать и прошить свою ардуину - с удобными портами, с немного поменянной для удобства и производительности рассыпухой, на самодельной плате, со своим форматом шилдоф=)
Ура! Ты жив!!!
Спасибо за видео и советы
Оно живое!
Здравствуйте. У Вас прекрасно посвленно дикция и алгоритм разъяснения тем. Не хотели бы Вы попробовать объяснить программу FLPlog. Спасибо
спасибо за уроки
чувак тебя надо раскрутить! )) неплохо у тебя это получается - видео уроки делать... так держать!
Спасибо друг
Класс)! Ещё!!!
Жду видео о spi и i2c устройствах
Спасибо! Огромнейшая работа.
Спасибо!
Спасибо АлекГайвер. Интересно библиотеки и разбивание данных на части и разные издевательство над отдельные части строки (-_-)
По больше бы такиз уроков!
Скрытая видео/аудио камера по датчику движения.
Технология умный дом. Ни одного путного видео на эту тему на базе ардуино.
Кто за - ставь лайк посту чтобы Алекс увидел
1. Чтобы получить внятный ответ, распиши функционал требуемого решения.
2. Установка скрытого видеонаблюдения запрещена по закону (в России по крайней мере)
Не Ардуино а esp8266 d1 например
Ну в актив. 🤗. Лайк. Не тупо, на всякий пожарный, как говорил Семен Семеныч.
если вдруг кому надо то я написал прошивку на 3 диода (основа для управления вентилятором на 3 скорости):
boolean btn;
boolean btn_flag = 0;
unsigned long last_press;
byte press_count = 0;
void setup() {
pinMode(7, INPUT_PULLUP); // сюда подключена кнопка
Serial.begin(9600);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
digitalWrite (6, 0);
digitalWrite (4, 0);
digitalWrite (5, 0);
}
void loop() {
btn = !digitalRead(7); // считать текущее положение кнопки
if (btn == 1 && btn_flag == 0 && millis() - last_press > 100) {
btn_flag = 1;
if (press_count > 3){
press_count = 0;
}
press_count ++;
if (press_count == 1) {
Serial.println("fan 0");
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
}
if (press_count == 2) {
Serial.println("fan 1");
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
}
if (press_count == 3) {
Serial.println("fan 2");
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 0);
}
if (press_count == 4) {
Serial.println("fan 3");
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 1);
}
last_press = millis();
}
if (btn == 0 && btn_flag == 1 && press_count >= 0 && millis() - last_press > 100) {
btn_flag = 0;
last_press = millis();
}
}
Отлично!!!
Это то, что я искал)
А не подскажишь, как прописать в этот код 2 или 3 кнопки, которые будут управлять также, но только другими пинами?
@@AizekMorze Нужно просто заменить числа в коде.
digitalWrite(4, 0);
эту четверку меняешь на что-то другое
извините, а можно урок про пищалку сделать
Ура, после длительного перерыва ))
Для экономии энергии, LED можно подключать через SMD катушку вместо резистора, получается понижайка - BUCK CONVERTER.
Привет! Спасибо огромное за материалы! Все очень подробно, понятно = полезно. Занимаюсь по твоим материалам. Обнаружил мини не существенную опечатку в этом видосе (1:14 - вместо анод, написано аноид). Ни на что не влияет это, просто внимательно занимаюсь, вот и заметил, решил написать). С уважением!
Спасибо! Подскажите пожалуйста, можно ли подключать резистор со стороны катода, а не анода? И можно ли убрать резистор, если поставить последовательно 2 или 3 светодиода (по аналогии с лампами накаливания)?
спасибо
Супер
Ура, наконец
Александр вернулся:) Где пропадал?
спасибо за урок! а что делает сопротивление то? физически
На счёт домашних заданий, было классно, если бы можно было их скинуть на почту, а в некст уроке разбирать ошибки. Дабы защитить пространство-время от индусского кода
Сделай часы из светодиодной ленты, я видел как парень собирал, но там прошивка кривая, да и оригинальностью не блещет, а из сервомашин вообще шикарные, но сложные, а ты такое любишь, да вот тебе идея, 7сегментный индикатор из п-образного профиля, залей каждый сегмент эпоксидкой или засыпь битым стеклом - будет смотреться офигенно, куда ты их повесишь только не знаю :) Подаришь кому-то на днюху
Ну лайк. 🤗.
датчик влажности почвы можно запитать с цифрового выхода? сколько он потребляет?
Привет! хотел бы посмотреть уроки по созданию разных эффектов для WS2812.Cкачал библиотеку Неопиксель,там всего 3 примера.Пытался разобраться изменяя скетч,но не проходит компиляция.единственное что разобрался как менять цвет и вкл и выкл по адресам светодиоды.Не могу понять как их заставить бегать туда сюда или при вкл.кнопки поочерёдно загорались,а при выключении поочерёдно гасли.Вобщем хотелось бы разобраться как создавать разные эффекты.
то что один пин выдерживает ток 40 ма, это так но по моему весь мк в целом тоже имеет ограничение, если взять мегу 8 к примеру на 4 порта то она не может комутировать ток в 1,2 ампера. Там есть общий показатель потребляемого максимального тока который тоже учитывается.
На пищялку от спикера ПК не хватает тока, нужно ставить эмиттерный повторитель (наследие аналоговой электроники). Если источник 5 вольт то оптимально всегда ставить 200 ом, если источник 12 то 1К. отталкиваемся от 1К. Как программировать если у человек дизлексия?
Как работает опускание флага? в скетче светодиоды только загараются. погасить их можно только кнопкой RESET попытка вставки команды break не удается
И вот с этого момента я начал доставать бред борд)
началась практика после серии теории!
Привет! Я дописал твой скетч, добавил либу GyverButton. При двухкратном нажатии на кнопку все светодиоды вырубаются. При трёхкратном - мигание. Если бы в твоей либе были четырёх и пятикратные нажатия, добавил бы ещё эффектов. Если хочешь мой код, я могу прислать на почту или в вк!
Друзья, подскажите пожалуйста источник, где для чайников описаны взаимодействия напряжения, тока, сопротивления и прочих полезных формулок для работы с ардуино и подключения датчиков. Вообще ничего не понимаю в эл. цепях
добрый вечер, а у вас есть оролик как задействовать команды из библиотеки на живом примере?
Годно
Как думаешь, можно построить Гаусс пушку на Ардуино и мосфетах?
Подскажите, пожалуйста, стало интересно - а как работают гирлянды с выбором режима освещения? Допустим, чтобы все светодиоды зажигались не одновременно, а последовательно? В гирлянде обычно несколько десятков (или даже под сотню) светодиодов, и, само собой, каждый диод по отдельности не подключают к своему собственному выводу микроконтроллера, а заводят на один-два. Так как же они заставляют последовательно подключённые к одному выводу МК светодиоды включаться по очереди? Целый день голову ломал, но так и не додумался :/
Жду)
Alex, спасибо за видосы. Очень интересно! У меня очень базовый вопрос т.к. с электричеством давно не работал. При последовательном подключении резистора ток не меняется, а меняется напряжение которое будет равно нужному для светодиода из таблицы. Почему тогда вы называете резистор токопонижающим?
Накосячил автор ролика, это называется токограничивающий резистор. А вы забыли про I=U/R. Что будет с I при постоянном U и меняющимся R? То-то же
Дружище, задача такая, мне нужно запрограммировать шаговый двигатель, чтобы он перегонял бегунок по резьбовому валу в конкретные точки. Сигналом для них будут кнопки. На каждое положение бегунка будет своя кнопка. Реально это сделать на Ардуино?
Отличный урок. Только одна ремарка - практика показывает, что начинающие иногда входят в ступор, когда слышат "светодиод питается током, а не напряжением". Ведь напряжение мы таки на него подаём. :-)
Видимо лучше сказать так - яркость светодиода пропорциональна току, а не напряжению. Поскольку он имеет нелинейную характеристику.
Всем привет! Подскажите, а нельзя ли вместо 6 резисторов между каждым пином и каждым светодиодом - поставить всего лишь один такой же резистор между землёй на макетной плате и пином земли на Ардуино? Как от этого поменяются: Ток, Напряжение ? Что изменится?🤔
колличество целых пальцев
Цвет светодиода зависит от запрещенной зоны в атоме кремния, соответственно величина запрещенной зоны и есть величина падения напряжения на диоде.
Как задать цвет на отдельный светодиод на светодиодной ленте?
Например первые 2 светодиоды горят красным, 5 следующих синим, и следующие 2 белыми?
Объясните, пожалуйста, а то я немного недалекий)
Расскажи про подключение динамика, а то у меня он что-то не пищит, подключаю по схеме с сайтов, динамик рабочий
спасибо, 5 минут и программку светофор на делеях написал)))
Мм вспомнил про этот канал спс
привет ,сегодня купил Arduino uno если не сложно помоги плиз как записывать скетч чтобы выходные выводы работали не зависимо друг от друга , 2 выхода полно устраивает ,спасибо
Подскажи пожалуйста я в этих делах полный ноль . есть такая штука WS2812B программируется лента или сам Ардуино .
В какой программе ты рисуешь разводку???
Расскажи про сдвиговые регистры 74HC595 и им подобные
а чё там? по даташиту подключай и всё
Что значат надписи на плате ардуино возле светодиодов TX L ...?
Здравствуй! я собрал схемку на светодиодах и написал скетч.При включении ардуины у меня 5 светодиодов загораются поочереди ,но не знаю как сделать это через кнопку.То есть при включеном ардуино нажав на кнопку светодиоды поочереди включаются,отпустив кнопку в обратном порядке гаснут.
а как домашнее задание сделать, с выключением светодиодов, после того, как они все зажглись ? есть подсказка ?
Красавчег
Спасибо Вам огромное за старания! Прекрасные уроки, Ардуино открыл для себя буквально пару дней назад. Сегодня выходной. Завёл по Вашему совету тетрадку, всё конспектирую, и это отличный метод для понимания. Сегодня начал изучать Ваши уроки, с утра, дошёл до 7 урока, и мне очень захотелось сделать так, чтобы диоды по очереди зажигались, и в обратном порядке гасли. Я вспомнил про такую штуку, как Switch, и благодаря ей реализовал то, что хотел. У меня всего три диода, вот такой код получился:
boolean butt_flag = 0;
boolean butt;
boolean led_flag = 0;
unsigned long last_press;
byte LEDcounter = 4;
void setup() {
pinMode(3, INPUT_PULLUP); // сюда подключена кнопка
Serial.begin(9600);
pinMode(4, OUTPUT); // сюда подключен светодиод
pinMode(5, OUTPUT); // сюда подключен светодиод
pinMode(6, OUTPUT); // сюда подключен светодиод
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
}
void loop() {
butt = !digitalRead(3); // считать текущее положение кнопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 300) {
butt_flag = 1;
Serial.println("Button pressed");
digitalWrite(LEDcounter, 1); // включить светодиод с текущим номером
LEDcounter++; // увеличить номер для следующего включения
switch (LEDcounter) {
case 8:digitalWrite(6, 0);
break;
case 9:digitalWrite(5, 0);
break;
case 10:digitalWrite(4, 0);
LEDcounter=4;
break;
}
last_press = millis();
}
if (butt == 0 && butt_flag == 1) {
butt_flag = 0;
Serial.println("Button released");
}
}
Привет, надеюсь ответишь, а ты можешь пожалуйста объяснить, почему у тебя case8, case9, case10, а не например другие цифры с case, однако понимаю что это для чего-то, но пока не понимаю почему именно 8, 9, 10, заранее спасибо!
Привет! Насколько помню, просто диоды были припаяны к выводам 4, 5 и 6, при каждом нажатии LEdCounter увеличивается на 1, т.е. нажали раз - LEdCounter стал равен 5 и засветился диод на 4 выводе, при следующем нажатии 6, загорелся на выводе 5, при следующем 7 и загорелся на выводе 6, при следующем 8 - по этому case8
@@ohmygodisaprettyfalcon ааа вот что оно, теперь я понял, благодарю за ответ!
Напишите код последовательного выключения, сразу после последовательного включения. На выключение просто меняем в войде значения с 0 на 1 и в цикле с 1 на 0.
Где найти урок, чтобы было подключено несколько ржб светодиодов с динамической индикацией, и с помощью ШИМ они изменяли яркость, каждый по отдельности? Не могу найти, и возможно ли это.. У меня в динамической индикации шим мерцает на ардуино нано..
В какой программе или сайте ты создавал макеты
Добрый день. Каким образом можно подключить к ардуино двухцветный светодиод с двумя ножками?
Последовательное включение и выключение в обратном порядке:
boolean knopka; //переменная отвечающая за нажатие кнопки .
boolean flagLed; // светодиод
boolean vkl=1; //вкл-выкл светодиода
byte Led=4; // определяет номер порта который необходимо вкл. или выкл.
byte y=1; //для добавления или вычитание портов, на которые необходимо подать сигнал.
nsigned long lastTime; //время задержки после нажатия
void setup() {
pinMode (3, INPUT_PULLUP);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
Led = 4;
}
void loop() {
knopka=!digitalRead(3);
if (knopka==1 && flagLed==0 && millis()-lastTime>300) {
flagLed=1;
digitalWrite(Led,vkl);
Led = Led + y;
if (Led==8) {
y=-1;
vkl=!vkl;
}
if (Led==3) {
y=1;
vkl=1;
}
lastTime = millis();
}
if(knopka == 0 && flagLed == 1 ) {
flagLed = 0;
}
}
Спасибо. Я чуть не сжёг ардуино и свой пукан
Привет. Такой вопрос по поводу ардуино, в частности про мини. На вывод А6 вывел вывод дисплея 20*4 "RS" а на вывод А7 подвел кнопку. Ни дисплей ни кнопка не работают. Пришлось переделывать печатную плату и переназначить эти подключения на другие вывода. Вопрос: Так - как вывода А6 и А7 не являються аналоговыми, и в качестве цифровых они тоже не работают, для чего они вообще могут быть использованы? (вместо а6 и а7 задействовал 0 и 1, тем самым заблокировал возможность мониторинга и отладки собранного устройства так, как это вывода tx и rx) Все цифровые и аналоговые вывода, за исключением А6 и А7 заняты. Можно ли эти вывода как - то использовать, чтоб освободить RX и TX?
Ура
Товарищи подскажите про схему скетч взял у гайвера собрал по схеме,в порте отображаются слова,а диод не горит. Перебрал кучу диодов,и сопротивления. Всеравно не горит. Может есть настройки о которых я не знаю?
У меня случилась проблема с домашним заданием. Я не понял что нужно было сделать, по этому на кнопке сделал триггер, и по нему выбираю направление движения бегущего огня.
Беда ждала меня с Pullup, если код обработки кнопки один в программе то он работает идеально. А вот если я добавляю код бегущих огней, на 3 цифровой начинается произвольный дребезг, как будто Pullup нету совсем. Я сначала думал что проблема с источником питания (шум), но на батарейках эффект остался прежним. Я был вынужден поставить внешний 10кОм подтягивающий резистор на +5. Но вопрос у меня остался что в коде может отключить програмно включенный pullup ? Посмотрел предварительно интернет, и уточнил что pullup есть только в цифровых режимах пинов, перевод в аналоговый отключает pullup, как бы не мой случай я воткнулся с D3...
Код на всякий случай, может кто подскажет:
boolean butt_flag = 0;
boolean butt;
boolean endd;
boolean led_flag = 0;
unsigned long last_press;
unsigned long last_invert;
byte LEDcounter = 10;
void setup() {
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
pinMode(4, OUTPUT); //сюда подключен красный
pinMode(5, OUTPUT); //сюда подключен желтый
pinMode(6, OUTPUT); //сюда подключен синий
pinMode(7, OUTPUT); //сюда подключен зеленый
pinMode(8, OUTPUT); //сюда подключен красный
pinMode(9, OUTPUT); //сюда подключен желтый
pinMode(12,OUTPUT); // триггер
}
void loop() {
butt = !digitalRead(3); // считать текущее положение кнопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 100) {
butt_flag = 1; // записать в переменную что кнопка нажата
Serial.println("Button press and led_flag = " + String(led_flag));
led_flag = !led_flag; //инвертировать триггер
last_press = millis();
digitalWrite(12, led_flag);
}
if (butt == 0 && butt_flag == 1) {
butt_flag = 0;
Serial.println("Button released and led_flag = " + String(led_flag));
}
//Код который дальше наглухо отрубает Pullup на пине 3, вопрос почему ?
if (millis() - last_invert > 200) {
last_invert = millis();
if (led_flag == 1 ) {
digitalWrite(LEDcounter - 1, LOW);
digitalWrite(LEDcounter, HIGH);
digitalWrite(LEDcounter + 1, LOW);
Serial.println("Start LEDcounter = " + String(LEDcounter));
LEDcounter++;
if (LEDcounter >= 11) {
digitalWrite(LEDcounter - 1, LOW);
LEDcounter = 4;
}
} else {
digitalWrite(LEDcounter + 1, LOW);
digitalWrite(LEDcounter, HIGH);
digitalWrite(LEDcounter - 1, LOW);
last_invert = millis();
Serial.println("Start invert LEDcounter = " + String(LEDcounter));
LEDcounter--;
if (LEDcounter
Добрый день! У меня есть вопрос.
4 светодиода должны вкл. и выкл. независимо друг от друга, несколько раз, каждый с разным режимом времени.
Напр,
све-д 1 - вкл. на 13мин
све-д 2 - пауза - 1мин. вкл. на 5мин.
све-д 3 - пауза - 2мин. вкл. на 7мин.
све-д 2 - пауза - 2мин. вкл. на 3мин.
све-д 4 - пауза - 3мин. вкл. на 7мин.
све-д 3 - пауза - 1мин. вкл. на 5мин.
све-д 4 - пауза - 2мин. вкл. на 3мин
све-д 2 - пауза - 3мин. вкл. на 1мин.
и тому подобное. Через какое то время все выкл. и программа останавливается. Пример - скетч, если можно!
Заранее Спасибо!!!
Alex, скажи, пожалуйста, кто-нибудь прислал правильно сделанное домашнее задание по выключению светодиодов? На уровне 7-го урока, я понимаю, что нужно использовать условие, но это условие мне видится очень громоздким. Наверняка есть какой-то простой способ. Покажи, пожалуйста, как это сделать. Или хотя бы намекни, в какую сторону копать.
помогите скетчем. включить светодиод красный на 5 сек. кнопкой 1 . или зеленый на 5 секунд кнопкой 2. при этом срабатывает светодиод синий и горит пока не нажмем 3 ю кнопку.
Спасибо за уроки! Очень хорошее объяснение материала.
А для всех троечников уставших думать над домашним заданием отправляю решение для очередного зажигания и отключения светодиодов.
Объявите вторую переменную byte LEDcounter2 = 10; и присвойте её для состояния порта...
if (LEDcounter > 10) {
LEDcounter2--;
digitalWrite(LEDcounter2, 0);
Serial.print("LEDcounter2 = "); // вывод в монитор порта для мониторинга
Serial.println(LEDcounter2); // вывод в монитор порта для мониторинга состояния переменной 2 счетчика
}
if (LEDcounter == 16){ // при достижении первого счетчика значения 16
LEDcounter = 4; // "обнуляем" счетчики и дальше зажигаем огни и радуемся!
LEDcounter2 = 10;
}
P.S. Для понимания гляди на изменения счетчиков в мониторе порта!
можешь выслать весь код от начала до конца, если судить по этой части то они у тебя изначально все горят и по том их ты по одному гасишь после чего обнуляешь и опять всё по кругу
@@user-he8he6ge7u Вот полный код половина из него точь в точь как в уроке.
boolean butt_flag = 0;
boolean butt;
boolean led_flag = 0;
unsigned long last_press;
byte LEDcounter = 4;
byte LEDcounter2 = 10;
void setup() {
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
}
void loop() {
// put your main code here, to run repeatedly:
butt = !digitalRead(3); //считать текущее положение кнопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 500) {
butt_flag = 1;
Serial.println("Button pressed");
digitalWrite(LEDcounter, 1); // включить светодиод с текущим номером
LEDcounter++; // увеличить номер для следующего включения
last_press = millis();
Serial.print("LEDcounter = ");
Serial.println(LEDcounter);
if (LEDcounter > 10) {
LEDcounter2--;
digitalWrite(LEDcounter2, 0);
Serial.print("LEDcounter2 = ");
Serial.println(LEDcounter2);
}
if (LEDcounter == 16){
LEDcounter = 4;
LEDcounter2 = 10;
}
}
if (butt == 0 && butt_flag == 1) {
butt_flag = 0;
//Serial.println("Button released");
}
}
Вторую переменную догадался сделать. Вот только я через else все сделал. И у меня фигня какая то получилась. Через раз 2 и 8 пины отключались, а после 8 нажатий отключались все полностью.
Есть 5 светодиодов, можно ли сделать и 5 выводов, чтобы на один из выводов подавалось 5 вольт и загорался соответствующий светодиод
Давай светодиодный индикатор уровня громкости на колонки
Пожалуйста, объясните мне: если при первом нажатии на кнопку флаг был поднят, то следующие нажатия ничего не изменят, пока мы не опустим флаг. Где условие опускания флага? Пересмотрел много раз. И почему нельзя написать: "if (butt == 1) butt_flag = !butt_flag" ?
Доброго времени суток
Спасибо Вам за такие подробные и полезные уроки, очень интересно смотреть
Дошел я значит до урока №7 посмотрел и решил, что пока не сделаю ДомашнееЗадание дальше смотреть не буду. Потратил чуть меньше 10 часов пока всё не испробовал и не дошел до нужного результата. Ниже я его представил. Не могли бы вы ответить, такой должен быть ответ или же у вас есть иной способ как выполнить Ваше ДЗ???
-----сам код-----
/* ДОМАШНЕЕ ЗАДАНИЕ (включить все диоды по одному и по порядку, после чего выключить их все в обратном порядке )
кнопка установлена на 2 пину!!!
диоды следует подключать по порядку (главное не от пина №3) послендний диод может быть вставлен в пин №12 (больше не было, поэтому дальше не подключал) !!! (ЭТО ОЧЕНЬ ВАЖНО)
*/
//------------переменные для кнопки----------------
boolean butt_flag = 0;
boolean butt; // переменная для считывания кнопки
unsigned long last_press; // пременная для устронения дребезга кнопки командой
//-----------переменные для вкл/выкл диодов-------------
byte LEDshet = 4; // переменная где вставлен самый первый диод
boolean led_flag = 0; // переключатель диодов
boolean ON = 0; // флажок включения
boolean OFF = 0 ; // флажок выключения
void setup() {
pinMode(2, INPUT_PULLUP); // пин №2 установлен как прием сигнала от нажатия кнопки с встроенным резистром ((подключена кнопка))
//указываем выходы для пинов по порядку в количестве диодов
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
// присваеваем пинам
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
}
void loop() {
// --------------начало цикла для кнопки-----------------
butt = !digitalRead(2); // считывеаем нажатие кнопки
if (butt == 1 && butt_flag == 0 && millis() - last_press > 500) {
butt_flag = 1;
//---------------------- начало структуры работы диодов----------------------------------
//-----------------------условие для включения диодов по порядку------------------
if (led_flag == 0 && ON == 0 && OFF == 0) {
led_flag = !led_flag;
digitalWrite(LEDshet, led_flag);
LEDshet++;
ON = 1;
OFF = 0;
}
//--------------------условие для выключения диодов по порядку---------------------
if (led_flag == 1 && ON == 0 && OFF == 1) {
led_flag = !led_flag;
digitalWrite(LEDshet, led_flag);
LEDshet--;
ON = 0;
OFF = 1;
}
//-----------------------условие для включения диодов по порядку------------------
if (LEDshet = 4 && led_flag == 0 && ON == 0 && OFF == 1) { // здесь за место укажите № пина первого диода
led_flag = 1;
ON = 0;
OFF = 1;
}
//----------------------условия поворотного момента на включение диодов--------------------
if (LEDshet == 3 && led_flag == 0 && ON == 0 && OFF == 1) { // здесь на один меньше № пина первого диода (пример: если у вас первый диод вставлен в пин №5 вам следует здесь указать )
LEDshet++;
led_flag = 0;
ON = 0;
OFF = 0;
}
//---------------------- конец структуры работы диодов----------------------------------
last_press = millis();
}
if (butt == 0 && butt_flag == 1) {
butt_flag = 0;
}
//-------------конец цикла для кнопки-------------
}
Хороший цикл уроков. Я вроде не новичок, а кое-что новое для себя узнал. Правда по сравнению с архитектурой чистых AVRок тут прям все примитивно.
А на Arduino UNO можно повторить этот урок?
А что если с земли поставить резистор для всех светодиодов, что есть в цепи?
Когда будут уроки про сон?