Для начала что за кнопка ? я думаю о физической кнопке. Может она у вас программная на мониторе ?
Я иммею ввиду
22.3777
23.3777
2114.3777
Если кнопка физическая самое простое решение вашей проблемы.
Последний раз редактировалось oops1; 20.11.2009 в 18:12.
Я не предлагал поменять кнопку
Сорри, моя вина. Не доглядел.
Спасибо за Ваше предложение решения проблемы. Если честно, то я даже не знал о существовании таких реле.
Но я хотел бы оставить кнопку и реле неизменными в моей задаче. Поясню. Программист из меня, как видно, никакой (учусь ), но что-то мне подсказывает, что не должно быть сложно написать код управления. Исходя из выше сказанного и того, чтоу меня есть куча реле, свободные каналы на контроллере, предположу, что выбранный путь - самый лучший. Мне просто нужна помошь в написании кода. Еще одним плюсом является универсальность. Не удивлюсь, что через полгода придумаю что-то новое - и надо только поменять код (например, управлять этой же реле контроллером по некоторому алгоритму и по кнопке параллельно). Возможно я и ошибаюсь. Время покажет.
Еще раз, спасибо за Ваш вариант.
Вот код накидал в спешке, оптимизировать некогда , сейчас убегаю.
Состояние реле будет видно на светодиоде D13
Кнопка подключается на D12 и на GND
PHP код:
unsigned char button_state;
unsigned char button_mem;
#define BUTTON 12
#define RELAY 13
void setup()
{
pinMode(RELAY,OUTPUT);
pinMode(BUTTON,INPUT);
digitalWrite(BUTTON, HIGH); //подключить внутренний подтягивающий резистор
}
void loop()
{
button_state = digitalRead(BUTTON); //прочитать состояние кнопки
delay(30); // пауза для проверки дребезга
if (digitalRead(BUTTON) == LOW && button_state == LOW && button_mem == 0)
{
digitalWrite(RELAY, HIGH);
button_mem=255; //запомнить состояние реле
while(digitalRead(BUTTON) == LOW){ delay(10);}//ждем отпускания кнопки
} else
{
if (digitalRead(BUTTON) == LOW && button_state == LOW && button_mem == 255)
{
digitalWrite(RELAY, LOW);
button_mem=0; //запомнить состояние реле
while(digitalRead(BUTTON) == LOW){ delay(10);}//ждем отпускания кнопки
}
}
}
Последний раз редактировалось Chip; 23.11.2009 в 01:06.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)