Включение светодиода одной кнопкой а отключене другой
- Войдите на сайт для отправки комментариев
Втр, 01/08/2017 - 22:58
Ребятя помогите)))
Момогите люди....чтобы светодиод включался одной кнопкой а выключался другой. При включеном состояни светодиод должен моргать.... и плюс к этому при нажатии кнопки включения светодиода с ним включаться реле на 5 сек.
Логика вроде как не сложная но явстал в ступар((( с чего начать копать
с чего начать копать
Начинать надо всегда с одного и того же - внятно и чётко расписать задачу. Если бы Вы это сделали, считйте, что остальное дело техники.
Просто словами, чётко и ясно напишите логику работы программы. Не крик души, как у Вас, а чёткую точную логику.
Попробуйте, а я подскажу, что дальше делать.
Да вроде понятно. И кажется я догадываюсь в чем ступор - в мигающем, параллельно работающим кнопкам, светодиоде небось ? Хотя может все и хуже :)
Если попытаться упростить задачу - какой вариант вы можете одолеть самостоятельно ? Просто вкл/выкл светодиода без реле двумя кнопками получится ? А то черт его знает что подсказывать, просто написать неинтересно, вы же должны помучиться :)
просто написать неинтересно, вы же должны помучиться :)
дед Фрейд танцует в гробу.
с какого перепуга кто-то должен мучиться?
Чтобы нам тут было веселее :) oO
Чтобы нам тут было веселее :) oO
Маркиз де Сад одобряет этот пост.
Привет ему, давно не виделись :)
ребята помогите я в программироване нуль((( хотябы вкл светодиода одной а откл другой, при включеном состоянии должен моргать..... пожалуйста кто разбираеться....
ребята помогите я в программироване нуль(((
Это так печально... ( Вам сюда https://code.org/learn
А чтобы не скучали вот вам скетч, который включает светодиод при замыкании 2го пина на землю (
#define LED 13 #define SWITCH_ON 2 int LED_State = LOW; void setup() { pinMode(LED, OUTPUT); pinMode(SWITCH_ON, INPUT_PULLUP); } void loop() { if (digitalRead(SWITCH_ON) == LOW) { delay(50); if (digitalRead(SWITCH_ON) == LOW) { LED_State = HIGH; } } digitalWrite(LED, LED_State); }Добавьте сюда выключение второй кнопкой и я покажу как мигать этим светодиодом.
ребята помогите я в программироване нуль((( хотябы вкл светодиода одной а откл другой, при включеном состоянии должен моргать..... пожалуйста кто разбираеться....
Я же Вам сказал, что делать в посте №1. И сказал, что помогу, если будете делать, что сказано. Почему не делаете? Желаете на блюдечке с голубой каёмочкой? Самому делать западло? Тогда топайте в Ищу исполнителя или делайте, что говорят
я подумал можно же отключать светодиод рестартом)))
так что осталось сделать
при замыкание контатов включаеться свтодиод и горить и в месте с ним включаеться реле но на 5 секунд..
Ах ты... жук ! Вот что лень животворящая делает :) Вот так будет мигать
#define LED 13 #define SWITCH_ON 2 int LED_State = LOW; int SW_State = LOW; unsigned long time; void setup() { pinMode(LED, OUTPUT); pinMode(SWITCH_ON, INPUT_PULLUP); } void loop() { if (digitalRead(SWITCH_ON) == LOW) { delay(50); if (digitalRead(SWITCH_ON) == LOW) { SW_State = HIGH; } } if (SW_State == HIGH) { if ((millis() - time) > 1000 ) { time = millis(); if (LED_State == LOW) LED_State = HIGH; else LED_State = LOW; } digitalWrite(LED, LED_State); } }А вот реле такие выкрутасы подключить не помогут ! бе бе бе
не помогут? т.е это не рельно реализовать?
Спасибо за пример!!!
не помогут?
Фокусы с ресетом ? Вряд ли ) А вот изучение программирования хотя бы по code.org может быть...
т.е это не рельно реализовать?
Оно почти реализовано. Такой же "светодиод", но на отдельной ноге и мигает (включается) только 1 раз.
Совсем никаких мыслей нет по этому поводу ? )
ясно,спасибо! щя буду внекать конкретно.... так сказать с нуля...
Внекай конкретно, внекай. Как внекнешь, расскажешь! :))))))))
Вы же говорите почти реализовано...
Я поробывал прописать К 13 выходу +12 выходу ну что бы одновремено моргали.. НЕ неполучаеться короче наченает 12 выход моргать а 13 молчит(( как так то?
Это все, что вы прописали ? Можете пояснить вашу логику ? Ну т.е. что по вашему вы сделали ?
Действительно... как так то ? )
Даю наводку - можно скопировать вот эту часть
if (SW_State == HIGH) { if ((millis() - time) > 1000 ) { time = millis(); if (LED_State == LOW) LED_State = HIGH else LED_State = LOW; } digitalWrite(LED, LED_State); }и поправить её под другую ногу с реле
Я подумал... для начало надо сделать хотябы что бы два выхода включались 13 и 12, Затем прописать что бы 12 выкл через 5 сек но теперь тока вкл 12 выход... (моргание диода я откинул на задний план он не так важен...)
моргает оно вот тут
digitalWrite(LED, LED_State);и LED - это конкретная нога. чтобы две ноги моргали вместе - должно быть так
digitalWrite(LED, LED_State);digitalWrite(RELAY, LED_State);соответственно вверху, где вы прописали 12, должно быть тоже две - одна LED, а другая RELAY
А не проще взять простой RS тригер правда светодиод будет постоянно гореть а реле будет работать
Совет может и тупой но начать програмировать я только собираюсь
или попробуй так
Включение по условию и выключение по условию
например если К1 вкл и К2 вкл выход вкл
если К1 выкл и К2 выкл выход выкл
третьего не дано
Можеш посьотреть чтото очень похожее по єтой ссьлке Это упрравление насосом в колодце поциклу когда вода касается верхнего датчика насос вкл когда вода опускается ниже нижнего датчика выкл . Также подобный прэкт у Амперки можеш посмотреть на YouTube.
http://arduinoprom.ru/arduino/206-reguljator-urovnja-vody-v-bake.html
http://wiki.amperka.ru/projects:barrel
Ав этой ссылке конкретный ответ на твой вопрос просмотри видео и можеш скачать скетч
Как установить ArduBlock Программирование Arduino блоками - YouTube
может я слишком назойлив но попробуй вот этот скетч
bool _trgs1 = 0;
void setup()
{
pinMode(2, OUTPUT);
}
void loop()
{
//Плата:1
if(( (analogRead (1))) == (500)) _trgs1 = 1;
if(( (analogRead (0))) == (500)) _trgs1 = 0;
digitalWrite(2, _trgs1);
}
написал его я сам с помощью FLProg поле 1,5 часогого просмотра первого урока но всего за 5 минут
проверить не могу так как нет ни Ардуинки ни программы эмулятора
аналоговые входы были выбраны не случайно так как этот среч у меня должын работать для кододца где возможно на входах будет напряжение ниже 5В а также тут введена константа 500 предотвращающая дребезг контактов
Не вижу ничего сложного. Главное иметь желание,голову и руки. А скетч решается в легкую
/**/ unsigned long mill;// переменая под millis() //-----Cl_Led---------------------------------------------- // класс светодиод class Cl_Led { protected: const byte pin;// нога const bool inv;// инверсия bool led;// состояние светодиода unsigned long time, past; // время включ,внут таймер bool statON = 0; // 1 - отработка вкл паузы bool statblink = 0; // 1 отработка мигания public: /* конструктор Cl_Led описание подключить светодиод ввод _pin:пин ноги _inv:инверсия вывода вывод нет */ Cl_Led (byte _pin, bool _inv): pin(_pin), inv(_inv) {} /* функция setup() описание для нормальной работы вставить в тело программы setup() ввод нет вывод нет */ void setup() { pinMode(pin, OUTPUT); OFF(); } /* функция ON() описание включить светодиод ввод нет вывод нет */ void ON() { digitalWrite(pin, led = !inv); statON = 0; statblink = 0; } /* функция OFF() описание выключить светодиод ввод нет вывод нет */ void OFF() { digitalWrite(pin, led = inv); statON = 0; statblink = 0; } /* функция ON() описание включить светодиод на время ввод _time: длительность вкл в миллисек вывод нет */ void ON(unsigned long _time) { time = _time; statON = 1; statblink = 0; digitalWrite(pin, led = !inv); past = mill; } /* функция blink() описание мигать светодиодом ввод _time: длительность полупериода в миллисек вывод нет */ void blink(unsigned long _time) { time = _time; statON = 0; statblink = 1; digitalWrite(pin, led = !led); past = mill; } /* функция loop() описание для нормальной работы вставить в тело программы loop() ввод нет вывод нет */ void loop() { if (statON && mill - past > time) OFF(); if (statblink && mill - past > time) { digitalWrite(pin, led = !led); past = mill; } } }; //----Cl_Btn----------------------------------------------- // класс кнопка class Cl_Btn { protected: const byte pin;// нога кнопки void (*Do)();//обработчик нажатия кнопки unsigned long past; // время включ,внут таймер bool btn, old_btn; public: /* конструктор Cl_Btn описание подключить кнопку ввод _pin:пин ноги _inv:инверсия вывода вывод нет */ Cl_Btn (byte _pin, void (*_Do)()) : pin(_pin), Do(_Do) {} /* функция setup() описание для нормальной работы вставить в тело программы setup() ввод нет вывод нет */ void setup() { pinMode(pin, INPUT_PULLUP); old_btn = digitalRead(pin); } /* функция loop() описание для нормальной работы вставить в тело программы loop() ввод нет вывод нет */ void loop() { bool new_btn = digitalRead(pin); if (!new_btn && old_btn) { old_btn = 0; (*Do)(); } if (new_btn && !old_btn) { old_btn = 1; } } }; //-----Компоновка---------------------------------------------- Cl_Led Led1(/*пин светодиода*/13,/*инверсия*/0); Cl_Led Relay1(/*пин реле*/12,/*инверсия*/0); const unsigned long time_5s = 5000; // длительность 5 сек const unsigned long time_200ms = 200; // длительность 0,2 сек void DoBtn1() { Led1.blink(time_200ms); Relay1.ON(time_5s); } Cl_Btn Btn1(/*пин кнопки*/2,/*обработчик кнопки*/DoBtn1); void DoBtn2() { Led1.OFF(); } Cl_Btn Btn2(/*пин кнопки*/3,/*обработчик кнопки*/DoBtn2); //-----main()---------------------------------------------- void setup() { Led1.setup(); Relay1.setup(); Btn1.setup(); Btn2.setup(); } void loop() { mill = millis(); Led1.loop(); Relay1.loop(); Btn1.loop(); Btn2.loop(); } /*Скетч использует 1560 байт (4%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 57 байт (2%) динамической памяти, оставляя 1991 байт для локальных переменных. Максимум: 2048 байт. */Вопрос по сложнее, можно ли на одном порту реализовать такой алгоритм ?
1.в исходном режиме подключена нормальноразомкнутая кнопка и светодиод,
2. при нажатии на кнопку сигнал считывается и включает на этом же порту светодиод,
Реально это или нет ???
Я встал в ступар.
Вопрос по сложнее, можно ли на одном порту реализовать такой алгоритм ?
1.в исходном режиме подключена нормальноразомкнутая кнопка и светодиод,
2. при нажатии на кнопку сигнал считывается и включает на этом же порту светодиод,
Реально это или нет ???
Можно. Купить кнопку со встроенным светодиодом. При нажатии он будет загораться и ардуина будет видеть что нажата кнопка, можно что-то еще делать.
Я встал в ступар.
может по 50))))
чел на нобелевку прётся....
Не, мужики, задача не так проста как кажется. Она даже на "по сложнее" как поскромничал автор вопроса, а, я бы сказал, "на сложнее".
Надо ещё фототранзистор / фоторезистор расположить рядом с кнопкой
фототранзистор / фоторезистор не могут видеть (а выто и не знали )
Как минимум камера .
Как это она будет видеть?
Если подключить одну ногу свветодиода через резюк к +5В, а вторую на пин подтянутый к верху и на этот же пин повесить обычным образом кнопку, второй конец которой будет на земле. При разомкнутой кнопке светодиод не светится по понятным причинам, при нажатой кнопке на пине 0 и светодиод загорается и ардуина по состоянию пина видит нажатие кнопки.
А вообще хрень полная :)
фототранзистор / фоторезистор не могут видеть (а выто и не знали )
Как минимум камера .
Да, это я чёт лопухнулся. Действительно, камера с нормальным видеопроцессором - только так это можно решить.
Да и подключать через wi-fi как-то ненадёжно. А ну как там нет wi-fi? Лучше, пожалуй, через спутник.
Оно конечно можно и кнопку купить, но задача другая нужно чтобы ардуинка отследила нажатие кнопки на линии и на той же линии включила светодиод.
P.S. конечно если это возможно.
1.в исходном режиме подключена нормальноразомкнутая кнопка и светодиод,
2. при нажатии на кнопку сигнал считывается и включает на этом же порту светодиод,
Реально это или нет ???
Или я еще не проснулся, или вы зря троллите вопрошающего.
Анод светодиода через резистор подключается к +5В, катод - к пину. К этому же пину подключается кнопка, второй контакт которой подключается к земле.
Пин настраивается на вход. Светодиод не горит. При опросе пина, если кнопка не нажата, то получаем "1" (напряжение через резистор и светодиод поступает на пин). При нажатии же кнопки там будет "0". Переводим пин на выход и выставляем на нем "0" - теперь светодиод светится. Когда надо будет следующий раз опросить кнопку, то кратковременно (на время опроса) переводим пин на вход.
Единственное, чего надо остерегаться, так это подачи на пин "1" в режиме выхода - нажатие на кнопку спалит пин. Но это уже на совести программиста.
Ну вот один толковый ответ из десяти !
vk007 Спасибо !
Или я еще не проснулся
Ну, вот, блин! Всё веселье испортил! :(
Просыпаться надо, прежде, чем на форум заходить :)
Ну, вот, блин! Всё веселье испортил! :(
Ой, я Вас прошу! :) Я просто уверен, что сегодня (а также завтра, послезавтра и т.д.) будет еще не один повод повеселиться :) Или Вы можете вспомнить тот выдающийся день, когда какой-нибудь очередной залетный "яженовичок" не задавал действительно тупых вопросов? "Эта музыка будет вечной" :)