Подскажите новичку
- Войдите на сайт для отправки комментариев
Уважаемые гуру
Нужно сделать таймер, заданное время по нажатию кнопки начинает отсчет до нуля.
При таком цикле кнопку можно и не держать, он всёравно отсчитает до нуля.
А как сделать цикл, что-бы он считал только при нажатой кнопке, а когда отпустил он обратно к заданному времени возвращался.
Вот что я сделал:
#include <LiquidCrystal.h>
#include <EEPROM.h>
LiquidCrystal lcd(4, 5, 10, 11, 12, 9);
int switchPinGO = 8; // номер входа, подключенный к кнопке
int switchPinUp = 7;
int switchPinDown = 3;
int beep=2;
int x;
int a=1;
int y;
void setup()
{
pinMode(switchPinGO, INPUT);
pinMode(switchPinUp, INPUT);
pinMode(switchPinDown, INPUT);
pinMode(beep, OUTPUT);
Serial.begin(9600);
lcd.begin(20, 2);
lcd.print(" Timer");
delay(3000);
}
void loop()
{
if (digitalRead(switchPinUp) == HIGH)
{
x=EEPROM.read(a)+1;
lcd.clear();
lcd.setCursor(9, 0);
lcd.print(x);
EEPROM.write(1, x);
delay(500);
}
else if (digitalRead(switchPinDown) == HIGH)
{
x=EEPROM.read(a)-1;
lcd.clear();
lcd.setCursor(9, 0);
lcd.print(x);
EEPROM.write(1, x);
delay(500);
}
else if (digitalRead(switchPinGO) == HIGH)
{
y=EEPROM.read(a);
while (y!=0)
{
y=y-1;
lcd.clear();
lcd.setCursor(9, 0);
lcd.print(y);
delay(1000);
}}
else
{
if (y==0) tone(beep,1000,300);
y=EEPROM.read(a);
lcd.clear();
lcd.setCursor(9, 0);
lcd.print(y);
delay(50);
}
}
Спасибо
Поконкретнее опишите чего хотите, более подробный алгоритм работы вашего устройства.
Компоненты: ардуино, LCD, 3 кнопки (плюс, минус, старт) , динамик.
Плюс и минус выставляют время старта таймера в секундах и значение записывается в EEPROM.
При нажатии на СТАРТ начинается отсчет времени от значения которое в памяти до нуля.
По достижению нуля звучит звуковой сигнал и показания возвращаются к значению из памяти.
Так вот на данный момент написан цикл, который запускает таймер по нажатии кнопки и независимо от того, будешь ты удерживать кнопку СТАРТ или нет, он досчитает до нуля.
А нужно сделать, что бы нажал на СТАРТ и УДЕРЖИВАЕШЬ, тогда происходит отсчет, а когда отпустил показания возвращаются к значению из EEPOM, независимо, досчитал он до нуля или нет.
Реальное применение это заготовка вставляется в оснастку (происходит нажатие на кнопку внутри остнастки) и греется, через заданное время идет сигнал оператору "вынимай".
Спасибо
Ну попробуйте так:
Ничего не изменилось. К сожалению...
К сожалению опять мимо.
Кнопку СТАРТ отпускаешь, а циферки продолжают отсчитывать время.
Алелуя
Заработало
только новый косяк
Держишь кнопу
Таймер отсчитывает до нуля, пищит и начинает снова отсчитывать.
А это не верно
Здравствуйте! Подскажите пожалуйста, какой шаблонный образ имеет программа на Arduion, что является у программы точкой ввода (подобно main() ) ?
Здравствуйте! Подскажите пожалуйста, какой шаблонный образ имеет программа на Arduion, что является у программы точкой ввода (подобно main() ) ?
Из файла main.cpp:
Спасибо!
У меня есть ещё вопрос)
Можно ли использовать для программирования не оригинальную среду Arduino, но другую среду, например, желательно, Visual Studio ?
Думаю, что нет, я по крайней мере там ничего подобного не видел. Если вы более или менее можите работать в Visual Studio, то вам будет не сложно работать в Arduino IDE.
У меня есть ещё вопрос)
Можно ли использовать для программирования не оригинальную среду Arduino, но другую среду, например, желательно, Visual Studio ?
Можно.
Только сказав А, придется сказать Б и отказаться от применения нативного бутлоадера Ардуино (он работает только в связке с интегрированным в IDE модулем ISP-программирования).
Либо найти в Интернете программу, которая может заливать готовые HEX-файлы в Ардуино, используя его родной бутлоадер (ибо просто заливальщиков просто пруд пруди - с их помощью тот же бутлоадер прописывают в чип).
Либо найти протокол обмена между аплоадером и бутлоадером и написать свою программу, которая будет "правильно" отдавать HEX-файл на устройство.
Но после сказанных А и Б что у вас от Ардуино останется? Только пресловутый форм-фактор, который тоже не догма, ибо mini, nano, fio и прочие lilypad...
А это уже опасная крамола. От нее уже недалеко до мысли о том, а не перейти ли на гораздо более удобную для отладки плату (что-нибудь вроде). А для подобных еретиков есть только один путь - позорное изгнание из рядов истинных ардуинолюбов.
Так что не шутите с огнем... ;)
Тогда на вопрос:
"Можно ли использовать для программирования не оригинальную среду Arduino, а например, блокнот?"
ответ будет:
"Можно.
Только сказав А, придется сказать Б, В, Г и Д...." )