Всем доброго времени суток. Нужен простой скетч для уно. Что то всю голову сломал.Суть в том что при нажатии на кнопку и ее удержании (при нажатии на кнопку на цифровой пин подается низкий уровень) загорался светодиод, который бы горел пока кнопку удерживают но не более 2 секунд даже если кнопку продолжают удерживать (таймер на millis), но что бы светодиод тут же гас если кнопку отпустили ранее этого времени (2 секунд).
Вопрос решается через Конечные автоматы или Машину состояний. Выписываешь все состояния системы, все возможные воздействия и смотришь как они взаимодействуют. Затем переносишь в программу.
… через 3-5 тыс знакомому программисту
В том то и дело что пока ничего в голову не лезет. Поэтому и обратился сюда. Задача налить жидкость в стакан за время пока нажата кнопка но не более 2 секунд своего рода дозатор и что бы была возможность прекратить подачу раньше по отпусканию кнопки.
так и не полезет, пока не начнете писать код.
Пробовали?
Готов оплатить эту сумму конечно же. Просто еще время поджимает…
500 руб. По предоплате.
Предоплата, т.к. кто то может сделать и даром или за меньшие деньги.
Ок куда оплатить то?
Угу, а потом окажется, что у ТС ардуина не того калибру, да и “жидкость в стакан” напрямую от пина…
Не окажется…
Написал в личку
5000 тыщь, 100% предоплата, и пофиг если кто на халяву сделает)))
2 млн.
Блин, опоздал… (
в мААскаве дороже )))
const int myBtnPin=5;
void setup(){
PinMode(myBtnPin,INPUT_PULLUP);
PinMode(13,OUTPUT);
}
void loop(){
static uint32_t ms=millis();
switch(digitalRead(myBtnPin){
case 0:
if(millis()-ms>=2000){
digitalWrite(13,0) ;
}else{digitalWrite(13,1);
}
break;
case 1:
digitalWrite (13,0);
ms=millis();
}
Ну Кактус, ну и хулюган…
exit status 1
‘PinMode’ was not declared in this scope
И это еще не всё )))
Пару скобок забыл... ))
const int myBtnPin = 5;
void setup() {
pinMode(myBtnPin, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
static uint32_t ms = millis();
switch (digitalRead(myBtnPin)) {
case 0:
if (millis() - ms >= 2000) {
digitalWrite(13, 0) ;
} else {
digitalWrite(13, 1);
}
break;
case 1:
digitalWrite (13, 0);
ms = millis();
break;
}
}
Скетч использует 1052 байт (3%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 21 байт (1%) динамической памяти, оставляя 2027 байт для локальных переменных. Максимум: 2048 байт.
Я пока на маршрутке ехал с остановки до работы (метров 500), написал, тут же в окне ввода сообщений. Не проверял совсем…
Последний break не обязателен.
А скобки, да , не считал, одной не хватает.
Двух… “)” у свича и “}” в конце loop()… ))
Я еще и default всегда пишу… )
Вы-штрекбрехер, или на крайняк-демпенгист
а если кнопку отжать и потом снова нажать?