Помогите с задержками)
- Войдите на сайт для отправки комментариев
Пт, 20/12/2019 - 17:58
Доброго времени суток, я новичок в программировании и очень прошу помочь,
поставили задачу сделать подобие СПУ на советский печатный станок, надо считывать количество напечатаных страниц (геркон плюс магнит на вал, один оборот вала одна напечатанная страница) и сделать пару кнопок чтоб можно было задать количество страниц которые надо напечатать, и после всего этого останавливать печать, суть проблемы:
как сделать так чтоб при нажатии кнопки либо срабатывании датчика счетчик плюсовал только один раз пока кнопку не отпустить, либо пока датчик не передаст 0
#include <LCD_1602_RUS.h> LCD_1602_RUS lcd(0x27, 16, 2); const int rele = 7; int count1 = 10; int count = 0; int val = 0; void setup() { pinMode(12, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); pinMode(rele, OUTPUT); digitalWrite(rele, LOW); Serial.begin(9600); lcd.init(); lcd.backlight(); lcd.clear(); } void loop() { { if ( digitalRead(12) == HIGH ) ; else if (count = count + 1); } { if ( digitalRead(3) == LOW ) ; else if (count1 = count1 + 10); } { if ( digitalRead(4) == LOW ) ; else if (count1 = count1 + 100); } if (count == count1) {digitalWrite(rele, HIGH);} lcd.setCursor(0, 0); lcd.print("Напечатано:" ); lcd.setCursor(0, 1); lcd.print("Напечатать:" ); lcd.setCursor(11, 0); lcd.print(count ); lcd.setCursor(11, 1); lcd.print(count1); }
Почитайте про кнопки для начала
А потом - вы ставите флаг нажатия кнопки и выполняете действие. И пока она нажата при флаге=1 ничего не делаете. Как только кнопка отпускается флаг=0 и ждем нажатия кнопки.
Большое спасибо пойду пробовать.
upd сделал вот так
Да, и флагом, обычно, назначают логические переменные. В теории - занимают меньше места. :)
И не забудьте инициировать флаг=0 в сетапе.
как сделать так чтоб при нажатии кнопки либо срабатывании датчика счетчик плюсовал только один раз пока кнопку не отпустить, либо пока датчик не передаст 0
очень просто - надо отслеживать не текущее состояние кнопки "нажато", а смену состояний "отпущено -> нажато". Для этого надо хранить в отдельной переменной прежнее состояние кнопки и реагировать только тогда, когда нынешнее состояние "нажато", а предыдущее было "отпущено"
А не подскажете мне как это сделать? достаточно просто ссылки на урок или статью, спасибо заранее =)
Задал не помогло, все равно счетчик просто постоянно считает +1 не зависимо от показаний датчика
Задал не помогло, все равно счетчик просто постоянно считает +1 не зависимо от показаний датчика
Программу в студию!
сейчас пробую еще так, но ардуина никак не реагирует на датчик теперь
Пример
http://arduino.ru/forum/programmirovanie/klass-titanovyi-velosiped-dlya-delay-bez-delay
Огромное спасибо вам мил человек
в таком виде все заработало.
в таком виде все заработало.
Успехов!