изменять значение delay кнопками
- Войдите на сайт для отправки комментариев
Пнд, 21/04/2014 - 14:53
Подскажите пожалуйста, как проще всего сделать управление кнопками в таком простом коде, но только чтобы была возможность изменять значение delay с шагом 1 от 0 до 1000 к примеру
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
digitalWrite(3, HIGH);
delay(1);
digitalWrite(3, LOW);
delay(1);
}
------------
здесь чтобы изменять значение delayMicroseconds с шагом 10 от 0 до 1000000 ? реально такое? а то может я зря только ищу :)
void setup() {
pinMode(8, OUTPUT);
}
void loop() {
digitalWrite(8, HIGH);
delayMicroseconds(100000);
digitalWrite(8, LOW);
delayMicroseconds(100000);
}
реально. не зря ищете.
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no... читали?
А в чем проблема зауинуть значение задержки в переменую?
управление функцией delay кнопками,не совсем правильно делать,так как на время этого самого delay кнопки реагировать никак не будут ,ни нового значения поставить,ни отменить текущий delay.
реально. не зря ищете.
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no... читали?
По поводу Второй картинки в статье у меня возник вопрос, а при замыкании кнопки 5вольт придет на порт контроллера, он сам ток ограничит, или все таки надо резистор еще добавить?
>
управление функцией delay кнопками,не совсем правильно делать,так как на время этого самого delay кнопки реагировать никак не будут ,ни нового значения поставить,ни отменить текущий delay.
а как надо правильно?
управление функцией delay кнопками,не совсем правильно делать,так как на время этого самого delay кнопки реагировать никак не будут ,ни нового значения поставить,ни отменить текущий delay.
а как надо правильно?
через прерывания
управление функцией delay кнопками,не совсем правильно делать,так как на время этого самого delay кнопки реагировать никак не будут ,ни нового значения поставить,ни отменить текущий delay.
а как надо правильно?
через прерывания
Прерывания это не совсем то что надо автору.
управление функцией delay кнопками,не совсем правильно делать,так как на время этого самого delay кнопки реагировать никак не будут ,ни нового значения поставить,ни отменить текущий delay.
а как надо правильно?
через прерывания
Прерывания это не совсем то что надо автору.
а можно готовый пример показать, а то только запутался :)
Примерно так, только надо добавить еще защиту от дребезга
тс, а вы как хотите изменять задержку-то - одно нажатие один шаг или как громкость на пульте телевизора, нажали держим и само ползет? так как от этого логика меняется
Geronimo
чёта вот в этой строке не так или я может подтупливаю
if(millis()-last > delTM)
тс, а вы как хотите изменять задержку-то - одно нажатие один шаг или как громкость на пульте телевизора, нажали держим и само ползет? так как от этого логика меняется
хорошо бы конечно чтоб кратковременными нажатиями и длительными можно было делать, нажал держу, поехала частота меняться. ещё бы неплохо чтоб было вывод информации о длительности и заджке, сделать на экране монитора компьютера. у меня ардуино уно, но об этом я просить стесняюсь, потому что думаю это нафиг никому ненадо, решать за меня мои задачи. я в юношестве бейсик очень хорошо знал, а потом армия и прочее. сейчас приспичило, хочу сделать устройство с самозапиткой, но не хватает знаний в программировании. а там нужен алгоритм который будет делать к примеру сначала 10 импульсов на одном транзисторе, и один на другом. а так как я не шарю в си, поэтому всё так затягивается. вот если бы помогли ) я бы был очень рад, и то что получилось отдал бы всем даром! (если бы заработало :) ) просто боюсь всё спрашивать,так как на большинстве форумов каждый сам за себя .
пишет вот такую бороду
sketch_apr22a.ino: In function 'void loop()':
sketch_apr22a:27: error: 'delTM' was not declared in this scope
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h:99: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
sketch_apr22a:33: error: at this point in file
вам бы с азов начать. изучить все примеры, что идут вместе со средой программирования
> 'delTM' was not declared in this scope
> too few arguments to function 'void digitalWrite(uint8_t, uint8_t)
Для начала переведите эти сообщения об ошибках.
P.S. Geronimo конечно сделал пару опечаток, но выявлять и фиксать подобные вещи нужно уметь за пару секунд. Если хотите когда-нибудь уметь сами писать код.
ну ничего не остается , придется всё сначала :(
а можно исправить как должно быть а я потом сам?
а ещё лучше исправить и сказать что не так :)
я с телефона писал, клава м большой сделала
Ну и в дигиталВрайт забыл указать первым параметром номер пина с диодом
блин, я бы так и искал в чем там проблема, но не подумал бы о большой букве :)
спасиб тебе добрый человек ) ещё не опробовал
ну ничего не остается , придется всё сначала :(
а можно исправить как должно быть а я потом сам?
а ещё лучше исправить и сказать что не так :)
Компилятор сказал что не так
Вставка программного кода в тему/комментарий
P.S. Ну не понимаю. Ну ведь прикрепленная же ветка. Почему столько людей не читают? Почему бросаются сразу "что-то писать спрашивать", вместо того что-бы "осмотреться на местности"?
спасиб тебе добрый человек ) ещё не опробовал
не надо пробовать, надо с логикой разобраться
будет работать только до первого нажатия кнопки увеличения
спасиб тебе добрый человек ) ещё не опробовал
не надо пробовать, надо с логикой разобраться
будет работать только до первого нажатия кнопки увеличения
Хммм... Где я ошибся? Хотя уже понял, при нажатии наплюсует кучу раз, надо делей поставить.
> надо делей поставить.
Плохой путь. То есть "сейчас может и прокатит", но в будущем, когда продолжите "усложнять логику" может "конкретно вылезти боком".
Я вам уже намекал что чтение прикрепленных веток сеет разумное доброе вечное :) (вижу, что поправили вставку своего кода, спасибо). Посмотрите внимательно. Там есть еще одна тема. Про кнопки. Там рассказывают как без delay() все это сделать.
да, нихрена не работаеть :)
буду читать сам, деваться некуда
Да не психуйте. "Нихрена не работает" это 80% времени нормального процесса разработки.
>буду читать сам, деваться некуда
Само собой. От этого никуда не денешься.
А вообще "Нихрена не работает" - это метод. Метод - это показывать свой код. Иначе как мы узнает куда вас занес процесс размышлений/чтений?
А код из #19 - он довольно близок к правде.
Смотрите что вам нужно сделать, что-бы обойтись без delay(). Вам нужно, когда кнопка была нажата не только поменять интервал мигания (переменную delTm), но еще и запомнить время "когда кнопка была нажата".
А потом, в условии где вы проверяете "нажата-ли кнопка", добавить еще и проверку "прошло ли достаточно времени с прошлого нажатия". Скажем 0.5 сек. Если "не прошло", то ничего с delTm делать не нужно.
Как "запомнить время события" и "проверить сколько прошло времени" вы можете подсмотреть чуть ниже. Там мы переключаем состояние светика (переменная ledState), и запоминаем когда это сделали c помщью millis(). И все это обернуто if-фом, который проверяет "прошло ли достаточно времени с прошлого переключения".
читаю, не психую, жму на кнопки, моргаю светодиодом, вспоминаю бейсик, очень похоже
по поводу, прошло время, ещё не понел :) переключаем состояние светика тоже чета непонятно.
короче читаю )
а будет ли разница от того, к аналоговому входу подключена кнопка или к цифровому? и не страшно ли если подтягивающий резистор будет 9.2 килоома?
>а будет ли разница от того, к аналоговому входу подключена кнопка или к цифровому?
Если для ее чтения используете digitalRead - не будет. Ну только нормер пина, естественно нужно правильный передавать.
Если вы сказали что пин аналоговый- значит аналоговый.
Если сказали что цифровой- значит цифровой.
Вам решать.
Да хоть 1 Ом, если ваша кнопка 5 Ампер скоммутирует и блок питания эти 5 Ампер выдаст.
Парни, а может кто за небольшое вознагрождение написать код, я опишу всё что от него будет требоваться? а то пока я ладу дам со всей этой хренотенью, и померать уже придётся, а у меня ещё масу дел кроме этого, а то хоть по готовому примеру буду разбираться постепенно. И вопрос такой, а можно дать подробные комментарии по коду выше, чтобы знать что в каком месте делает программа? и чёта он у меня не работает, максимум могу поднять чуть чуть частоту, и чуть убавить. и дребезг не пойму какой туда примастырить. В от жеж, говорила мне Мама, учи уроки :)