Одна кнопка и два светодиода
- Войдите на сайт для отправки комментариев
Пт, 19/02/2016 - 02:28
Привет всем знатокам, прошу не пинать, только начинаю.
Помогите с задачкой пожалуйста, условия таковы:
Нажимаю на кнопку включается на 1сек один светодиод, отпускаю кнопку включается на 1сек другой светодиод. Код ниже, только переключает светодиоды, а нужно вкл. на 1сек.
// задаем константы
const int buttonPin = 2; // номер входа, подключенный к кнопке
const int ledPin = 13; // номер выхода светодиода 1
const int ledPinw = 7; // номер выхода светодиода 2
// переменные
int buttonState = 0; // переменная для хранения состояния кнопки
void setup() {
// инициализируем пин, подключенный к светодиоду, как выход
pinMode(ledPin, OUTPUT);
pinMode(ledPinw, OUTPUT);
// инициализируем пин, подключенный к кнопке, как вход
pinMode(buttonPin, INPUT);
}
void loop(){
// считываем значения с входа кнопки
buttonState = digitalRead(buttonPin);
// проверяем нажата ли кнопка
// если нажата, то buttonState будет HIGH:
if (buttonState == HIGH) {
// включаем светодиод
digitalWrite(ledPin, LOW);
digitalWrite(ledPinw,!digitalRead(ledPinw));//инвертируем состояние пина
}
else {
// выключаем светодиод
digitalWrite(ledPin, HIGH);
digitalWrite(ledPinw, HIGH);
}
}
Вам сюда !
Сергей Р, когда писал про тему, было время и желание. Вы сутки думаете, в середине ночи создаете, а после этого обижаетесь. Кстати Штирлиц, имел в виду не вопросы там задавать, а прочитать внимательно.
Изначальное состояние светиков - выключенное.
Задача: Поймать нажатие кнопки, запомнить это событие (поднять флаг), включить нужный светик, отсчитать 1 секунду, выключить светик.
Дождаться отпускания кнопки, проверить на предыдущее нажатие (флаг), если ИСТИНА, то сбросить флаг, включить второй светик, отсчитать 1 секунду, выключить.
Отсчеты делайте пока на deley(), в дебри позже полезем. Кнопку придется держать более 1сек, или второй светик будет загораться сразу после окончания свечения первого.
Тяк, прочитал предыдущие темы, вам действительно в "Ищу исполнителя" надо было создавать. Только осознайте, что за 50р там писать не будут.
Тяк, прочитал предыдущие темы, вам действительно в "Ищу исполнителя" надо было создавать. Только осознайте, что за 50р там писать не будут.
UPD, возможно, можем сделать скидку, если ТС ученик школы примерно 5-7 класса. т.е понянькаться и объяснить, если у кого есть на это время... ну и желание...
Когда я закончил институт - куратор нашей группы сказал очень правильные напутсвенные слова - мы научили вас самостоятельно УЧИТЬСЯ. Это было в 1985 году.....
Для автора темы - руководство, дадашиты, Керниган и Ритчи, Кнут..... практика и понимание а ЧТО ты хочешь сделать, потом - КАК это сделать.
Когда я закончил институт - куратор нашей группы сказал очень правильные напутсвенные слова - мы научили вас самостоятельно УЧИТЬСЯ. Это было в 1985 году.....
Для автора темы - руководство, дадашиты, Керниган и Ритчи, Кнут..... практика и понимание а ЧТО ты хочешь сделать, потом - КАК это сделать.
Нам (мне) эти слова сказала зам.декана факультета: «Тяжелые времена, трудно найти работу, но мы вас научим учиться, не бросайте учебу» (примерно в 1999году) 1998-2004
Тяк, прочитал предыдущие темы, вам действительно в "Ищу исполнителя" надо было создавать. Только осознайте, что за 50р там писать не будут.
UPD, возможно, можем сделать скидку, если ТС ученик школы примерно 5-7 класса. т.е понянькаться и объяснить, если у кого есть на это время... ну и желание...
Гриша, обрати внимание, это два моих поста последовательно, сперва был готов понянькаться, а потом прочитал посты ТС в других темах. Выжимка - "Мне учить не надо и не хочеться, может больше никогда не понадобится." Там ему добрый человек написал с делеями, ждем, когда вернется с вопросом "как заставить кнопку срабатывать, когда надо мне."
Тебе в теме "Работа с кнопками" в # 623 Сергей С.В написал :
01constintSF = 2;02constintLED_1 = 7;03constintLED_2 = 13;04intSF_1 = 0;05inta = 0;06voidsetup()07{08pinMode(SF, INPUT);09pinMode(LED_1, OUTPUT);10pinMode(LED_2, OUTPUT);11}12voidloop()13{14SF_1 = digitalRead(SF);15if(SF_1 == HIGH)16{17delay(50);18}19if(SF_1 == HIGH && a == 0)20{21digitalWrite(LED_1,HIGH);22delay(1000);23digitalWrite(LED_1,LOW);24a = 1;25}26if(SF_1 == LOW && a == 1)27{28delay(50);29}30if(SF_1 == LOW && a == 1)31{32digitalWrite(LED_2,HIGH);33delay(1000);34digitalWrite(LED_2,LOW);35a = 0;36}37}На держи. На онлайнэмуляторе работает.
И неленись читать форум. Я только месяц учусь по нему программировать и то уже кое чему научился.
Специфика ардуино состоит в том что здесь нужно понимать и электронику и программирование.
К сожалению я встречал немало программистов совершенно оторванных от железа. Ну и изредка попадаются железячники не понимающие программирования. Но не в этом самое главное.
Основная проблема в отсутствии аналитика - постановщика задачи.
Ведь дело то в том что для того чтобы сделать ПРАВИЛЬНЫЙ проект - нужно написать ПРАВИЛЬНУЮ задачу. Причем не в смысле кодирования на том или ином языке - а в смысле просто проработки алгоритма.
Поэтому скажу всем новичкам - ПЕРВОЕ что ты должен сделать - это просто положить на бумагу алгоритм работы устройства которое ты хочешь сделать. Потом уже на макете собрать железо, потом - написАть скетчь - потом (если хватит сил и желания) спаять это в конечный вариант и использовать.
Специфика ардуино состоит в том что здесь нужно понимать и электронику и программирование.
К сожалению я встречал немало программистов совершенно оторванных от железа. Ну и изредка попадаются железячники не понимающие программирования. Но не в этом самое главное.
Основная проблема в отсутствии аналитика - постановщика задачи.
Ведь дело то в том что для того чтобы сделать ПРАВИЛЬНЫЙ проект - нужно написать ПРАВИЛЬНУЮ задачу (UPD - сформулировать ТЗ (Гриша)). Причем не в смысле кодирования на том или ином языке - а в смысле просто проработки алгоритма.
Поэтому скажу всем новичкам - ПЕРВОЕ что ты должен сделать - это просто положить на бумагу алгоритм работы устройства которое ты хочешь сделать. Потом уже на макете собрать железо, потом - написАть скетчь - потом (если хватит сил и желания) спаять это в конечный вариант и использовать.
+1
с Вашего позволения, я нужное выделю и присоединюсь... на этом форуме подобное писал минимум 2 раза
офф. топ.
... если ТС ученик школы примерно 5-7 класса...
Гриша, обрати внимание, это два моих поста последовательно, сперва был готов понянькаться, а потом прочитал посты ТС в других темах. Выжимка ....
а if условие не выпоняется, программа ничего не делает :)))))))))))))))))))))
а if условие не выпоняется, программа ничего не делает :)))))))))))))))))))))
Честно говоря, не понял, расшифруй.
Честно говоря, не понял, расшифруй.
if (ТС ученик школы примерно 5-7 класса==true)
{
можно немного
.... был готов понянькаться...
}
else { сюда }
if (ТС ученик школы примерно 5-7 класса==true)
Тут соглашусь на 100%!
Я учился в сельской школе, в году 1975 попал по журналу в заочную школу МФТИ. Задания были конкретныо тяжкие, но толковые %)
И рад что кому то не было лень проверять мои потуги...... Так что если школьник - попробем помочь хотя бы направлением куда идти и что читать ;)
at0mix, помогай)))
1. Из "Работа с кнопками в помощь....." начиная с 600 поста
Очень горит, буду признателен, даже финансово. Ну нет у меня времени читать книги по С+. Мне это нужно может раз в жизни. Ведь для этого есть специально обученные люди ))"
2. Из "Ищу исполнителя" "помогите написать программу" начиная с 9 поста.
"Знакомые слова, попроси щепотку соли, дак тебе куча советов где купить вагон этой соли.
Люди купили контроллер для своих нужд и нужна программа, просят помощи, а вы хотите чтоб он полностью вник и изучил С++. Форум только для программистов для того чтоб похвастаться какие крутые или дать помощь новичкам? Тогда сделайте раздел для новичков , чтоб не выгонять из разделов и не пинать. Будьте по проще, и люди к вам потянуться."
Первый мой пост накорябал придя сюда из "Ищу исполнителя", второй родился после прочтения вышеприведенного в "Работе с кнопками", между ними прошло 6 минут.
аки коршуны на чувака набросились)))))
аки коршуны на чувака набросились)))))
Аха, читать не хочу, думать не хочу, но я новичек, значит за 20 рублей и быстро. Ладно, возьмусь за 1тыр. Предоплата 70%, зашитая мелкосхема наложенным платежом+почтовые издержки. Можно сразу на плату, но это дороже.))))
Народ, демпингуй пока не поздно.))))
Аха, читать не хочу, думать не хочу, но я новичек....
чувствую, накипело :))) похоже, много времени на ТС было потрачено в пустую... добавлю, однако, ардуино - это интеллектуально развивающее ЛЕГО (детский конструктор) почти для всех возрастов. Нет времени играть, купи готовое, а деньги заработай за время потрачено на изучение ардуино. И не важно, что многие делают реально сложные вещи, все равно - это в первую очередь конструктор, а потом контроллер атмел.
ЗЫ. это для ТС
UPD. вот Доказательство
at0mix, помогай)))
Между "Помоги" и "сделай за меня" как говорят в Одессе две большие разницы.
Извините что не в тему - но скажу свое мнение.
Я тоже зашел и спросил как сделать реквизит для игры в страйкбол, и сразу был отправлен в раздел "Ищу исполнителя". Кстати было пара предложений и не скажу чтоб дорого.
НО - так как я по образованию электронщик а по призванию программист ;) - решил сделать сам.
Да, в процессе задава конкретные вопросы - на которые получал КОНКТЕТНЫЕ советы.
Но я не просил написать ЗА МЕНЯ или СОБРАТЬ за меня.
Да, были проблемы, но при правильном подходе они все решились. И я сделал свой проект даже с перевыполнением - добавил еще одну функцию, первоначально не предусмотренную.
Вот соберу из макета живой образец - выложу!
так как я по образованию электронщик а по призванию программист
я хоть и не особо грамотный, но это слово мне режет слух - в слове электроника, нет буквы Щ.
я, лично, электроник, так и в трудовой записано...
я, лично, электроник, так и в трудовой записано...
это что за специальность такая? каких годов запись - российский диалект русского языка?
*в слове "компьютер" нет буквы "щ" - "компьютерщики" теперь кто? компьютеры?.. учитывая, что это не специальность, а употребление в стиле - просторечие.
я, лично, электроник, так и в трудовой записано...
это что за специальность такая? каких годов запись - российский диалект русского языка?
Единый квалификационный справочник должностей руководителей, специалистов и других служащих (ЕКС)
Инженер-электроник (электроник)
UPD а вот какой из меня электроник - совсем другой вопрос... обсуждать не будем
UPD а вот какой из меня электроник - совсем другой вопрос... обсуждать не будем
не - пока разберёмся, кто тебя электроником назвал.
*так шо там? - инженеры-компьютеры есть в стране дураков?
UPD а вот какой из меня электроник - совсем другой вопрос... обсуждать не будем
не - пока разберёмся, кто тебя электроником назвал.
запросто, практика здесь
запросто, практика здесь
походу, тебя там русский язык разучили понимать, а назвали тебя эдектроником авторы Единый квалификационный справочник должностей руководителей, специалистов и других служащих (ЕКС)
*продолжим о русском языке.
а, вот "банщик" - это, тоже, неправильно? а, как правильно?
или "пулемётчик"? - так понимаю, должно быть "пулемётик".
**великий российский языка...
запросто, практика здесь
походу, тебя там русский язык разучили понимать, а назвали тебя эдектроником авторы Единый квалификационный справочник должностей руководителей, специалистов и других служащих (ЕКС)
*продолжим о русском языке.
а, вот "банщик" - это, тоже, неправильно? а, как правильно?
или "пулемётчик"? - так понимаю, должно быть "пулемётик".
**великий российский языка...
не вижу смысла продолжать, мне это не интересно, удачи... :)
не вижу смысла продолжать, мне это не интересно, удачи... :)
ты не видишь - а, я вижу.
*инженеры-банщики тебе голову намылят, если обозвёшь их банниками.
я, лично, электроник, так и в трудовой записано...
это что за специальность такая? каких годов запись - российский диалект русского языка?
*в слове "компьютер" нет буквы "щ" - "компьютерщики" теперь кто? компьютеры?.. учитывая, что это не специальность, а употребление в стиле - просторечие.
Ну у меня в дипломе вообще написано - "инженер-электрик" ;) 1985 год....
А специальность "Дозиметрия и дозиметрические приборы".....
ты не видишь - а, я вижу.
я запомнил и повторил слова уважаемого человека Соболева В.С., а с вами я лично не знаком и воспринимаю лишь как провокатора - конкретно по данному вопросу.
я запомнил и повторил слова уважаемого человека Соболева В.С., а с вами я лично не знаком и воспринимаю лишь как провокатора - конкретно по данному вопросу.
так, кто из нас провокатор? ты, который на основании того, что у тебя в трудовой чепуха записана, решил докопаться до форумчанина? или я, который пытается выяснить суть твоей проблемы и твоего провокационного поведения?
ИМХО
так, кто из нас провокатор? ты, который на основании того, что у тебя в трудовой чепуха записана, решил докопаться до форумчанина? или я, который пытается выяснить суть твоей проблемы и твоего провокационного поведения?
Давайте жить ДРУЖНО!
С праздником всех! И оставим все обиды и будем решать проблемы по мере их поступления!
Привет всем знатокам, прошу не пинать, только начинаю.
Помогите с задачкой пожалуйста, условия таковы:
Нажимаю на кнопку включается на 1сек один светодиод, отпускаю кнопку включается на 1сек другой светодиод. Код ниже, только переключает светодиоды, а нужно вкл. на 1сек.
// задаем константы const int buttonPin = 2; // номер входа, подключенный к кнопке const int ledPin = 13; // номер выхода светодиода 1 const int ledPinw = 7; // номер выхода светодиода 2 // переменные int buttonState = 0; // переменная для хранения состояния кнопки void setup() { // инициализируем пин, подключенный к светодиоду, как выход pinMode(ledPin, OUTPUT); pinMode(ledPinw, OUTPUT); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin, INPUT); } void loop(){ // считываем значения с входа кнопки buttonState = digitalRead(buttonPin); // проверяем нажата ли кнопка // если нажата, то buttonState будет HIGH: if (buttonState == HIGH) { // включаем светодиод digitalWrite(ledPin, LOW); digitalWrite(ledPinw,!digitalRead(ledPinw));//инвертируем состояние пина } else { // выключаем светодиод digitalWrite(ledPin, HIGH); digitalWrite(ledPinw, HIGH); } }С наступающим вас всех праздником, вот скетч бесплатно, ответ на вопрос выше. Задача решена, пользуйтесь кому надо. Огромное спасибо тем, кто мне в этом помог.
Тема закрыта.
#define button 2 #define white_led 6 #define blue_led 7 // Время свечения светодиода unsigned long delta_t = 1000; // Текущее время unsigned long current_time = 0; // Флаг статуса кнопки boolean flag = false; void setup() { pinMode(blue_led, OUTPUT); pinMode(white_led, OUTPUT); pinMode(button, INPUT); digitalWrite(blue_led, HIGH); digitalWrite(white_led, HIGH); } void loop() { // запоминаем текущее время current_time = millis(); // Выполняем цикл пока нажата кнопка while(digitalRead(button)) { flag = true; // Если прошло не более 1 сек if ( millis() - current_time <= delta_t) // Включаем белы светодиод digitalWrite(white_led, LOW); else // Если прошло более 1 сек, но кнопка все еще нажата // Гасим белый светодиод digitalWrite(white_led, HIGH); } // Гасим белый светодиод digitalWrite(white_led, HIGH); // Если флаг "true" if (flag) { // Включаем синий светодиод digitalWrite(blue_led, LOW); // Секундная задержка delay(delta_t); // Гасим светодиод digitalWrite(blue_led, HIGH); // Сброс флага flag = false; } }Сам написал, али кто подсказал?
bwn подсказал, пост #2
Другие помогли.
Тема закрыта. Спасибо за пинание и критику.
[code] //при нажатии на кнопку срабатывает 1диод, а за тем 2й. При удержании //кнопки срабатывает первый и не зависит от времени удержания, а при //отпускании 2й. const int SF = 10; const int SF1 = 9; const int LED_1 = 11; const int LED_2 = 12; int SF_1 = 0; int SF_2 = 0; int a = 0; int b = 0; void setup() { pinMode(SF, INPUT_PULLUP); pinMode(SF1, INPUT_PULLUP); pinMode(LED_1, OUTPUT); pinMode(LED_2, OUTPUT); } void loop() { SF_1 = digitalRead(SF); if(SF_1 == HIGH) { delay(50); } if(SF_1 == HIGH && a == 0) { digitalWrite(LED_1,HIGH); delay(4); digitalWrite(LED_1,LOW); a = 1; } if(SF_1 == LOW && a == 1) { delay(50); } if(SF_1 == LOW && a == 1) { digitalWrite(LED_2,HIGH); delay(4); digitalWrite(LED_2,LOW); a = 0; } SF_2 = digitalRead(SF1); if(SF_2 == HIGH) { delay(50); } if(SF_2 == HIGH && b == 0) { digitalWrite(LED_1,HIGH); delay(4); digitalWrite(LED_1,LOW); b = 1; } if(SF_2 == LOW && b == 1) { delay(50); } if(SF_2 == LOW && b == 1) { digitalWrite(LED_2,HIGH); delay(4); digitalWrite(LED_2,LOW); b = 0; } } [/code]Помогите разобраться с кодом. Сразу прошу откликнуться тех кто готов хотя бы чем-то помочь, умники и прочие не засоряйте форум дабы такие как я не искали среди кучи бестолковых нравоучений и не парились с познанием ардуины.
Поддерживаю, ну ее нах, эту ардуину!!!!
В "Ищу исполнителя", тему переместить?
Поддерживаю, ну ее нах, эту ардуину!!!!
В "Ищу исполнителя", тему переместить?
Меня просто удивляет всегда одно, с помощью ни кто не торопится (Это уже были коменты моего поста, удалил модератор). А советы давать и тем самым жопить свое время, мол время-деньги! Но при этом строчить рефераты с поучениями! Да уж. Если времени жалко зачем его тратить на такого как я и другие. Можно просто пройти мимо. НИ КОМУ НЕ ПРИНИМАТЬ БЛИЗКО К СЕРДЦУ. Спасибо за помощь. Как нибудь сам. Просьбу о помощи можно считать закрытой!
Меня просто удивляет всегда одно, с помощью ни кто не торопится
Ну, не знаю как другие, но если человек заявляет, что ему не хочется "париться с познанием ардуины", то я лучше потрачу свое время на тех кто хочет париться.
Меня просто удивляет всегда одно
а что вы хотели? Тут форум любителей ардуино - а вы пришли и в первой же строчке пишете, что ардуина вас не интересует.
Ну и зачем пришел, спрашивается? Кому захочется помогать после такого начала?
Париться в плане, выискивать нужную информацию среди кучи мусора оставленного пользователями которые включили "уровень бога" и пишут гадости в адрес других пользователей. На форуме предназначенном для познания ардуины. В этом плане я написал париться, а не в плане писать о помощи и забивать на это. А по поводу оскорблений я писал об этом выше. Модератор их удалил!
Подумал, подумал. Выучил английский-затянуло. С..ный скетч вернул хозяину. И за вечер написал то, что требовалось даже более и деньги остались при мне. А вот некоторым очень грамотным стоит поучить Русский вместо английского. Уж больно грамотно изрекаются. Могу ошибаться- наверное это на С или асемблере, бейсике, паскале или на очень древнем фортране (википедия в помощь). А людей надо уважать. Если задает вопрос, это не означает что он тупей тебя!!!! Может оказаться наоборот!
А ты, шоб Ардуину "познать" прочитал хоть одну книшку?
А ты, шоб Ардуину "познать" прочитал хоть одну книшку?
я прочитал одну, но она не про ардуино, ассемблер от Питера Нортона, этого хватит?
Читер. Надо было Абеля читать.
http://www.lib.ru/CTOTOR/IBMPC/abel.txt_with-big-pictures.html#
Теперь перечитывай всё взат.
учиться лучше на реальных задачах да и помогать местным форумчанам будет тогда интереснее
а кнопка со светодиодом ну что это такое? даже открывать такую тему не интересно)
На Амперке ТС проговорился, что это электронная система запуска двигателя... а тут видимо постеснялся...
а кнопка со светодиодом ну что это такое? даже открывать такую тему не интересно)
кнопка со светодиодом, это не только ценный мух... ну, вы понели
http://arduino.ru/forum/programmirovanie/klass-titanovyi-velosiped-dlya-...
Не постеснялся, просто встретили в штыки и не поитересовались зачем мне это. Я просто описал алгоритм работы и тема подходящая, дабы не создавать новую тему решил поинтересоваться здесь. Так как тестирую на светодиодах этот проэкт. Готов предоставить для желающих алгоритм и свои наработки. Только что-бы воплатить проэкт на ардуино моих знаний пока не достаточно. Для кого-то возможно это будет полезным.