Детская викторина из двух кнопок и двух светодиодов,помощь новичку
- Войдите на сайт для отправки комментариев
Чт, 17/01/2019 - 08:03
Доброго дня форумчане.Это первый мой проект.Прошу помощи в написании скетча.
Алгоритм такой:
Есть две кнопки - "Button 1" и "Button 2".
Есть два светодиода - "LED 1" и "LED 2".
При нажатии "Button 1" должен загореться "LED 1" на время 6 секунд и погаснуть
При нажатии "Button 2" должен загореться "LED 2" на время 6 секунд и погаснуть
Есть одно условие: если загорелся "LED 1" то "LED 2" загораться не должен и наоборот если загорелся "LED 2" то "LED 1"загораться не должен.
Вот скетч от которого происходят мои пляски:
int button = 3;
int led = 12;
void setup() {
pinMode(led, OUTPUT);
pinMode(button, INPUT);
}
void loop(){
if (digitalRead(button) == HIGH) {
digitalWrite(led, HIGH);
delay(6000);
}
else {
digitalWrite(led, LOW);
}
}
Не получается добавить вторую кнопку со светодиодом и не могу прописать условие описанное выше.
Я думаю для грамотного Arduinщика написание такого скетча,это как раз плюнуть.
Прошу помочь..
Я думаю для грамотного Arduinщика написание такого скетча,это как раз плюнуть.
http://arduino.ru/forum/obshchii/pesochnitsa-dlya-vsekh-novichkov
Я думаю для грамотного человека прочитать здешние правила,это как раз плюнуть.
ПС: Аналогично и для трех и более кнопок.
Amperka.ru - вики- эксперимент 12- кнопочные ковбои. Ваш случай.
Спасибо за ответ!
Что нужно прописать в квадратных скобках в 1 и 10 пункте?
Как исключить из данного скетча пищалку?
Спасибо за ответ!
Что нужно прописать в квадратных скобках в 1 и 10 пункте?
В первой строке написать /*,
а в10 */
Т.е готовый скетч будет выглядеть вот так:
Платформа Arduino Nano с процессором ATmega328P
Муж_Долговой, Вы человеку который одну строку из скетча выкинуть не может, специально такие советы даёте типа {DDRD=24;}? Чтобы уж точно ничего не понял и поменять у себя не смог?
И ещё. Вам нужно два пина включить на выход - зачем Вы остальные пины порта (включая пины сериала!) на вход переключаете? А настройки пинов кнопок в Вашем скетче нет.
Может зря Вы так про плинтус-то? Не рано Вам?
Ты сам понял, что написал? Про DDRD?
P.S. Специадьно для общего развития kalapanga:
DDRD = 24 - означает "назначить выходом пины 3 и 4". (8 + 16) = 24.
Что анологично двум строкам Ардуино UNO:
pinMode (ledPin3, OUTPUT);
pinMode (ledPin4, OUTPUT);
Входы и так входы. Что их настраивать?
Муж_Долговой, я с Вами на брудершафт не пил и не собираюсь. Не тыкайте мне. Я сделал три замечания:
1) Вы нахамили незнакомому человеку (своими остротами про плинтусы)
2) Вы предложили совершенно нулёвому новичку излишне сложное для него решение c регистром (лучше было использовать pinMode...)
3) С регистром правильнее было бы обращаться так: DDRD |= 24;
Вы с чем-то из этого несогласны? Впрочем, можете не отвечать, мне это безразлично.
Один неадекват хочет пожизненный эцик с гвоздями?
Так и я о том же! Не понимает ... а туда же. Замечание делает.
Я про тебя
Тебе тоже мой скетч новичку не нравится? Работает. Проверил.
Все условия выполняются.
Что не так?
Спорить не собираюсь. Посты с наездами буду тереть. Заработай себе репутацию сначала, чтоб опускать всех без разбора и новичков и старожилов.
После #5 это был единственный способ ТС оживить.
Тебе тоже мой скетч новичку не нравится? Работает. Проверил.
Что не так?
послушай, чей-то там муж.
Не далее чем 3 дня назад ты сам тут нес полную чушь в ветке "не все условия if выполняются" - ссылку дать? (одно название уже чего стоит - что-то из разряда "Помогите, мой компьютер тайком редактирует мои документы!")
Скетч твой, хоть формально и правильный - яркий образец говнокода.
Во-первых - несколько операторов на строке и полное отсутсвие форматирования
Во-вторых - если ты решил выпендрится и заменить pinMode работой с регистрами - почему у тебя в скетче остались digitalWrite и digitalRead? - или боишься не осилить?
В-третьих, если у ТС задержка 6сек - почему в твоем коде 5995? - думаю, опять пустой выпендреж от недалекого ума...
В-четвертых прежде чем поучать новичков - научись хотя бы код в сообщение вставлять
5997 потому, что на остальные строки контроллер затрачивает время.
В сумме выходит 6 сек. Ничего личного.
А внутри if действительно не все инструкции выполнялись. Потму что работа велась с виртуальнчми портами через Blynk -сервер. А там время отклика 0,5 сек. Они просто не успевали.Вам это не понять. Слишком сложно. А я сам догадался. Хоть и новичок.
Тебе тоже мой скетч новичку не нравится? Работает. Проверил.
Все условия выполняются.
Что не так?
Серьезно? Работает именно так как нужно ТС-у?
5997 потому, что на остальные строки контроллер затрачивает время.
Ну я так и думал, что это от большого ума :) Слабо самому прикинуть, сколько занимает один IF и одна запись в пин в таоем скетче? :)
Это тебе проходное задание. Не осилишь - лучше тебе выбрать другой форум. все равно засмеют.
А внутри if действительно не все инструкции выполнялись. Потму что работа велась с виртуальнчми портами через Blynk -сервер. А там время отклика 0,5 сек. Они просто не успевали.
Выводы на уровне "ветер дует, потому что деревья качаются". С такими способностями к анализу причин и следствий в программировании делать нечего.
b707 + 100500
А внутри if действительно не все инструкции выполнялись. Потму что работа велась с виртуальнчми портами через Blynk -сервер. А там время отклика 0,5 сек. Они просто не успевали.
Выводы на уровне "ветер дует, потому что деревья качаются". С такими способностями к анализу причин и следствий в программировании делать нечего.
Я же писал, что не поймёшь.
А пишу без отступов потому что лень далеко гонять туда-сюда по IDE во время наладки. Компилятор всё равно игнорирует все пробелы и переносы.
Я же писал, что не поймёшь.
там и понимать нечего - это чушь, очевидная для любого человека, хоть чуть-чуть умеющего читать исходный код.
Давай так - если ты правильно посчитаешь, какая задержка должна стоять для 6 сек в коде выше - я тебе обьясню, что не так с IF-ами
Время зрительное впечатление глаза после выключения учитывать?
Время зрительное впечатление глаза после выключения учитывать?
ты бы не умничал, а? Не надо пытаться соскочить - ты сам написал. что уменьшил задержку "на время выполнения других операторов". Вот это время и считай.
И в любом случае, 5мс НИКАКОГО отношения к периоду реакции глаза не имеют.
А внутри if действительно не все инструкции выполнялись. Потму что работа велась с виртуальнчми портами через Blynk -сервер. А там время отклика 0,5 сек. Они просто не успевали.
Выводы на уровне "ветер дует, потому что деревья качаются". С такими способностями к анализу причин и следствий в программировании делать нечего.
Там, поди, blynkWrite() просто внутри сразу делало return, если с момента предыдущего его вызова пакет еще не ушёл на сервер )) Поэтому всё от эфирного ветра зависело. Сильно дует - if() всё успевает выполнить, слабо - не всё...
Там, поди, blynkWrite() просто внутри сразу делало return, если с момента предыдущего его вызова пакет еще не ушёл на сервер )) Поэтому всё от эфирного ветра зависело. Сильно дует - if() всё успевает выполнить, слабо - не всё...
ну это же не означает, что программа выборочно исполнила операторы в цикле? :) Операторы в IF-е у "мужа" исполняются все, просто результата нет.
У человека банальные проблемы с логикой - он не различает подачи команды от получения результата. Условно говоря - если он нажал кнопку, а лифт не приехал - он пойдет палец лечить, потому что "кнопка не нажалась"
220
Там, поди, blynkWrite() просто внутри сразу делало return, если с момента предыдущего его вызова пакет еще не ушёл на сервер )) Поэтому всё от эфирного ветра зависело. Сильно дует - if() всё успевает выполнить, слабо - не всё...
ну это же не означает, что программа выборочно исполнила операторы в цикле? :) Операторы в IF-е у "мужа" исполняются все, просто результата нет.
У человека банальные проблемы с логикой - он не различает подачи команды от получения результата. Условно говоря - если он нажал кнопку, а лифт не приехал - он пойдет палец лечить, потому что "кнопка не нажалась"
Вот это вот всё трудно было сразу пояснить? И подсказать куда костыли ставить. Я же новичок. Это мой первый проект на третьем скетче. Или корона бы слетела?
Пока сам не догадался. Завёл реальные переменные. С ними провожу вычисления и циклы. Потом эти значения присваиваю виртуальным портам. А они уж ... когда увидели - тогда увидели. Всё работает.
У человека банальные проблемы с логикой - он не различает подачи команды от получения результата. Условно говоря - если он нажал кнопку, а лифт не приехал - он пойдет палец лечить, потому что "кнопка не нажалась"
Так я не спорил на этот счёт вроде как. Даже сам такого мнения придерживаюсь.
Уважаемые! Мне не шашечки ... мне ехать надо было.
Может пойдём меня гнобить на мою тему? Нехорошо как то ... в гостях.
220
'это что такое? Если время - то в какие единицах? - секунды, миллисекунды, микро, нано?
Время зрительное впечатление глаза после выключения учитывать?
Весело у вас тут.
Хотел тоже чёнить умное сказать, но придумать умное ума не хватило :(
LOL
Слона-то я и не приметил :))
Уважаемый "муж" - не обьясните ли Вы, что по вашему делает эта шикарная конструкция? :)
значит код проверяли, "работает правильно"?
Как исключить из данного скетча пищалку?
Убрать:
Шоу временно закрывается. Выпимши на форумах не пишу. Из уважения к другим диванным теоретикам.
Шоу временно закрывается. Выпимши на форумах не пишу. Из уважения к другим диванным теоретикам.
Слив защитан. Попрошу вас впредь в форуме не сорить.
Теперь ответ на вопрос - сколько же времени занимает выполнение одного IF с digitalWrite() и digitalRead(). Чтобы не лезть в теоретические дебри - можно просто померить той же ардуиной. Понятно, что ответ получится приблизительным, но забегая вперед - даже такая грубая оценка показывает, насколько Вы далеки от реальности.
Напишем простой скетч, в котором в цикле прокрутим строчку
10 тыс раз и измерим время выполнения:
Результат исполнения на Ардуино Уно - 66023 мкс
То есть одно исполнение интересующей нас строчки занимает не более 6-7 микросекунд. "Не более" - потому что тут добавляются еще расходы на обслуживание цикла FOR, сравнимые с измеряемым временем. Но даже эта, очень приблизительная цифра - примерно в 1000 раз меньше оценки обсуждаемого автора.
Как сделать что бы светодиоды не просто горели,а моргали?
Как сделать что бы светодиоды не просто горели,а моргали?
самое простое: купить моргающие светодиоды.
Дед, как всегда, в точку!
А код вставлять так и не научились :(
не обьясните ли Вы, что по вашему делает эта шикарная конструкция? :)
Знаю одного специалиста, который бы объяснил, что здесь просто читаются нулевой и первый пины, а написано так, чтобы "потроллить дураков" вроде нас с Вами. Не раз уже такие объяснения слышал :)))))
Йэх, злые вы все, воскодячую звезду, в пузо, на взлете. Темен будет небосклон ваш.
Как сделать что бы светодиоды не просто горели,а моргали?
Может так
Как сделать что бы светодиоды не просто горели,а моргали?
Уважаемый гость, в первом посте (#1 DetSimen) Вас попросили ознакомиться с правилами и там есть информация как правильно вставлять программный код (в первом посте от bwn #1) . Ваши посты со скетчами не читабельны.
Дед, как всегда, в точку!
А код вставлять так и не научились :(