кнопки для ардуино с таймером и одна кнопка стоп
- Войдите на сайт для отправки комментариев
Пнд, 15/04/2019 - 00:28
написал скетч
int LedV = 12; // светодиод(реле) int LedN = 11; int Butt12 = 2; //кнопка int Butt13 = 3; //кнопка int Butt21 = 4; //кнопка int Butt23 = 5; //кнопка int Butt31 = 6; //кнопка int Butt32 = 7; //кнопка unsigned long Timer; unsigned long Waiting12 = 20000; //величина выдержки unsigned long Waiting13 = 45000; //величина выдержки unsigned long Waiting21 = 20000; //величина выдержки unsigned long Waiting23 = 25000; //величина выдержки unsigned long Waiting31 = 43000; //величина выдержки unsigned long Waiting32 = 25000; //величина выдержки void setup() { pinMode(LedV, OUTPUT); pinMode(LedN, OUTPUT); pinMode(Butt12, INPUT); pinMode(Butt13, INPUT); pinMode(Butt21, INPUT); pinMode(Butt23, INPUT); pinMode(Butt31, INPUT); pinMode(Butt32, INPUT); digitalWrite(8,HIGH); digitalWrite(Butt12, 1); digitalWrite(Butt13, 1); digitalWrite(Butt21, 1); digitalWrite(Butt23, 1); digitalWrite(Butt31, 1); digitalWrite(Butt32, 1); } void loop() { if (digitalRead(Butt12) == 0 && Timer == 0) { //если таймер не взведен и кнопка нажата Timer = millis() + Waiting12; // то взводим таймер digitalWrite(LedV, 1); //и активируем диод } if (digitalRead(Butt13) == 0 && Timer == 0) { //если таймер не взведен и кнопка нажата Timer = millis() + Waiting13; // то взводим таймер digitalWrite(LedV, 1); //и активируем диод } if (digitalRead(Butt21) == 0 && Timer == 0) { //если таймер не взведен и кнопка нажата Timer = millis() + Waiting21; // то взводим таймер digitalWrite(LedN, 1); //и активируем диод } if (digitalRead(Butt23) == 0 && Timer == 0) { //если таймер не взведен и кнопка нажата Timer = millis() + Waiting23; // то взводим таймер digitalWrite(LedV, 1); //и активируем диод } if (digitalRead(Butt31) == 0 && Timer == 0) { //если таймер не взведен и кнопка нажата Timer = millis() + Waiting31; // то взводим таймер digitalWrite(LedN, 1); //и активируем диод } if (digitalRead(Butt32) == 0 && Timer == 0) { //если таймер не взведен и кнопка нажата Timer = millis() + Waiting32; // то взводим таймер digitalWrite(LedN, 1); //и активируем диод } if (Timer <= millis() && Timer != 0) { //если таймер был взведен и текущее время его превысило digitalWrite(LedV, 0); // то тушим свет digitalWrite(LedN, 0); // то тушим свет Timer = 0; // } }
который нужен для упраления тельфером между 1 и 3 этажом принцип такой на каждом этаже по 2 кнопки отправления тельфера на определённый этаж по времени и одна кнопка нужна для экстренной остановки 6 кнопок прописал как они должны работать но как в этот скетч добавить кнопку стоп не пойму. пробовал в начале void loop() написать
digitalWrite(LedV,!digitalRead(8)); digitalWrite(LedN,!digitalRead(8));
работает стоп но перстают работать все остальные кнопки а вконец ставлю не работает стоп но работают все остальные
работает стоп но перстают работать все остальные кнопки а вконец ставлю не работает стоп но работают все остальные
Как пробовал? Секрет? Чего не показываешь? Вот прям так и писал? А таймер кто будет сбрасывать? Остальные кнопки заработают только когда таймер закончится.
И, кстати, ты с миллис неправильно работаешь. Он заглючит при переполнении. Почитай - http://arduino.ru/forum/programmirovanie/velikoe-perepolnenie-millis
я и сам понимаю что многое что написал неправильно и с милис я также особо не разобрался так что если не сложно допишите как надо а часть кода стоп вставлял без милис вот так
и вот так в конце
почитал эту статью которую вы дали но если честно так и не понял мне надо просто добавить одну строку для милис?
а часть кода стоп вставлял без милис вот так
Код надо приводить полностью. Просто выложи код (не часть) в который ты что-то там вставил.
почитал эту статью которую вы дали но если честно так и не понял
Чего там можно не понять? Там жирным шрифтом написано
А ты что делаешь?
Timer = millis() + Waiting12;
// то взводим таймер
как раз складываешь! Так вот именно этого делать и нельзя!
сложно допишите как надо
Нет уж, родной, здесь хоббийный форум, тут каждый сам пишет. Приведи нормально код (целиком), может и подскажу чего, если увижу, а писать - это самостоятельно.
ну спасибо и за такую помощь любая помощь хороша
получается там где милисс надо везде поменять + на - а вот стоп наверное буду делать просто рестарт ардуино целиком.
но может быть возникнут вопросы по другому поводу мне надо будет ещё что бы при нажатие на 2 других кнопки поднимался или опускался тельфер без всяких милис
Так вы слоника, на мелкие части порежте, кушать лекше будет. В одной части, пусть кнопы читает и значения возвращает, другая часть, по значениям, к следующим отправляет, где с миллисом, где без, а хде и с делеями. От так как-то. Даже.))))
ещё не пробовал скетч делить в теории слышал что так можно .подскажите как, какие то примеры дайте
ещё не пробовал скетч делить в теории слышал что так можно .подскажите как, какие то примеры дайте
Так не можно, так нужно. ИМХО. Пароль - функция, подпрограмма. Как ни странно, выполняет именно одну, свою функцию. Например, считывает-декодирует значения кнопок и возвращает код кнопки, пищалка буззер - написали внутри for и приняли значение, сколько раз пискнуть, можем вызвать из разных мест, с разными значениями и т.д.
ещё не пробовал скетч делить в теории слышал что так можно .подскажите как, какие то примеры дайте
ну спасибо и за такую помощь любая помощь хороша
получается там где милисс надо везде поменять + на - а вот стоп наверное буду делать просто рестарт ардуино целиком.
но может быть возникнут вопросы по другому поводу мне надо будет ещё что бы при нажатие на 2 других кнопки поднимался или опускался тельфер без всяких милис
Ну, если код целиком выложить влом (или нет его вовсе), то,значит, так.
код целиком в первом посте был я просто + поменял нв минус и пока ничего не делал и не проверял но вот ещё 2 кнопки надо будет дописать на поднятие и опускание наверное сегодня попробую
Не было там кода. Там была приписка, что мол "пробовал написать ...". А чего пробовал, как пробовал - всё в секрете. Тебя и просили показать как пробовал. Ты в ответ какой-то огрызок привёл. В общем, ты разберись, покажи как именно ты пробовал и что не получилось. А нет - так сам этим занимайся.
скетч был такой пока не переписывал ничего но мне надо вписать кнопки верх и вниз
пробую пока дописать кнопки верх низ и вывел их отдельно правильно ли это или нет ?
проверить пока не могу
Ну, как сможешь, проверь. Или тут кто-то должен за тебя проверять? Будут конкретные вопросы - задавай.
Подскажите что я не так сделал строка 41 ,42 не дают всем кнопкам работать только кнопки верз и вниз работают если коментирую эти строки то работают остальные кнопки а эти две конечно не работают. Куда поставить эти две строки
Они просто обозваны некошерно. Надо Up() и Down(), тада все заработает. Наерна. :-)
Они просто обозваны некошерно. Надо Up() и Down(), тада все заработает. Наерна. :-)
обозвал их как вы посоветовали но конгечно не работает осталось также . Наверное куда то надо вставить строку 41 и 42 в другое место или как то по другому а не просто Up(); Down();
Так ты проверил или нет? Опиши результаты проверки подробнее - как оно себя ведёт?
И ещё, тебе тут уже неделю говорят, что "millis() + ..." писать нельзя. Ты это когда-нибудь исправишь?
Так ты проверил или нет? Опиши результаты проверки подробнее - как оно себя ведёт?
ну да сейчас проверяю плюсы поменял на минусы а ведёт себя так если строка 41 и 42 написаны то работают только кнопки верх (int ButtV = 9; //кнопка) или низ (int ButtN = 10; //кнопка) и соотвесвенно остальные кнопки вообще не реагируют а если закоментировать эти строки то работают эти 6 кнопок а вот верх вниз не работают
и кстати после замены плюсов на минусы кнопка срабатывает но не срабатывает милис тоесть не возвращает реле обратно через определённое время
строка 42 и 43 написаны правильно? куда их вставить чтобы они не мешали всему коду и вообще эти строки должны быть написаны просто?
Up();
Down();
А с чего ты взял, что они не работают? Всё работает, просто очень быстро - ты заметить не успеваешь.
Ты, что делаешь в своих Up и Down в том случае. если соотв. кнопка НЕ нажата? Вот ответь, что ты делаешь?
А с чего ты взял, что они не работают? Всё работает, просто очень быстро - ты заметить не успеваешь.
Ты, что делаешь в своих Up и Down в том случае. если соотв. кнопка НЕ нажата? Вот ответь, что ты делаешь?
я думаю так
Слушайт тебе задан простой простой вопрос: что делает твоя программа, когда кнопка не нажата. Вот также просто и ответь:
1. Гасит светодиод
2. Зажигает светодиод
3. Ничего не делает.
Можешь просто ответить, не пихая мне в мороду кусков кода, который ты, похоже, не понимаешь?
Слушайт тебе задан простой простой вопрос: что делает твоя программа, когда кнопка не нажата. Вот также просто и ответь:
1. Гасит светодиод
2. Зажигает светодиод
3. Ничего не делает.
Можешь просто ответить, не пихая мне в мороду кусков кода, который ты, похоже, не понимаешь?
я думаю ничего не делает
А ты не думай, а посмотри на код (который ты мне в нос тычешь). Проведи по нему пальцем, шепча "если ... то ... иначе ... то" и скажи мне наконец, что делает ТВОЙ код
Начинаю думать, что самая первая фраза первого поста "написал скетч" является ... помягче ... вымыслом, т.к. в скетчах ты, похоже, не понимаешь ни одной буквы.
В общем, проводи пальцем, читай шпаршалки и скажи, наконец, правильно.
А ты не думай, а посмотри на код (который ты мне в нос тычешь). Проведи по нему пальцем, шепча "если ... то ... иначе ... то" и скажи мне наконец, что делает ТВОЙ код
Начинаю думать, что самая первая фраза первого поста "написал скетч" является ... помягче ... вымыслом, т.к. в скетчах ты, похоже, не понимаешь ни одной буквы.
В общем, проводи пальцем, читай шпаршалки и скажи, наконец, правильно.
ты прав в скетчах я очень слаб но учиться очень хочется и когда было написано что я написал скетч имелось ввиду что был готовый код на одну кнопку и я его доработал под себя. а теперь что касается кнопки если нажимаю кнопку то включается реле и пока я её держу реле включено а когда отпускаю реле выключается.
кодом я никому не тыкаю носом а просто пытаюсь объяснить мою проблемку и если не сложно подскажите что надо сделать так как хочется научиться
Никуда. В таком виде это работать не будет независимо от того, куда Вы их вставите.
Как раз сегодня в другой теме уже был правильный ответ на вопрос "что надо сделать" - читайте.
По другому не получится. Нельзя программировать, не умея этого делать.
Никуда. В таком виде это работать не будет независимо от того, куда Вы их вставите.
Как раз сегодня в другой теме уже был правильный ответ на вопрос "что надо сделать" - читайте.
По другому не получится. Нельзя программировать, не умея этого делать.
я понял если у самого мазгов не хватает выучить блокнот ардуинщика и написать код то надо заплатить вам или кому то ещё которые в этом сильны и уже научились. Так что извините за потреченное вами время на такого неуча как я
Никуда. В таком виде это работать не будет независимо от того, куда Вы их вставите.
Как раз сегодня в другой теме уже был правильный ответ на вопрос "что надо сделать" - читайте.
По другому не получится. Нельзя программировать, не умея этого делать.
я почему то думал что мне смогут объяснить как написать и куда что вставить чтоб заработало
я понял если у самого мазгов не хватает выучить блокнот ардуинщика и написать код
Уверен, что вполне хватает. Там нет ничего такого, чего не мог бы освоить любой нормальный человек (больных людей мы не рассматриваем).
заплатить вам
Нет, не мне. Я не беру там заказов. Я помогаю только бесплатно.
то надо заплатить вам или кому то ещё которые в этом сильны и уже научились.
Так всегда бывает. Любое дело человек или делает сам, или платит тому, кто сделает. Вот только сегодня я сдал в ремонт сотовый и вызвал на завтра сантехника ... и обоим надо платить. Жизнь такова, какова она есть.
я почему то думал что мне смогут объяснить как написать и куда что вставить чтоб заработало
Вы ошиблись.
Я пытался. Задал Вам простейший вопрос "что делают три строчки Вашего кода",. Если бы я получил ответ, я бы пояснил почему такой код не может нормально работать. Но ответа я не получил и сделал вывод, что объяснить Вам невозможно, т.к. у Вас не хватает знаний понять объяснение. Вам нужно прокачивать знания. А пока можно только сделать за Вас. А "делать за Вас" это уже не помощь - это услуга. Этим я здесь не занимаюсь, извините.
Нет, не мне. Я не беру там заказов. Я помогаю только бесплатно.
так подскажи что я делаю не так чтоб не лопатить кучу литературы так как я ардуино занимаюсь два три раза в год и оно мне может быть никогда не пригодится
Ты меня не понимаешь. Вопрос про тот код и был подсказкой. Причём очевидной - в лоб. Тебе нужно прокачивать знания - ты просто не понимаешь, что тебе подсказывают.
А по поводу
чтоб не лопатить кучу литературы так как я ардуино занимаюсь два три раза в год и оно мне может быть никогда не пригодится
Ты недавно говорил:
Ты уж определись, родной. Если тебе "хочется научиться", то учись. Литературу начального уровня я тебе подсказал. Появятся вопросы - отвечу. А если хочется "не лопатить кучу литературы", так заплати тому, кто уже перелопатил.