Кнопка с электронной фиксацией на Ардуино Мини.
Здравствуйте.
Подскажите, как реализовать включение-выключение компа на ардуине, как в этой теме http://compcar.ru/forum/showthread.php?t=3163
Ищу давно, но толком ничего нет. Кнопка на 564 серии изготовлена давно, качество работы не устраивает. Может после выключения опять комп включить, или наоборот не включает.
Читал и тут http://compcar.ru/forum/showthread.php?t=5329 и тут http://compcar.ru/forum/showthread.php?t=5804. Но к сожалению доизобрести не смог ничего.
Мне кажется что этот код проще всего дописать, только я не знаю как.
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);}//ждем отпускания кнопки
}
}
}
Заранее благодарен.
ps Ардуину для хорошего дела не жалко.
pps
Цитата:
ещё раз про смысл того, что мне нужно:
я приезжаю на автомойку полностью набитую мойщиками-таджиками
они начинают мыть машину
и пока они там своими кривыми руками и ссаными тряпками всё трут они нажав всего 1 раз на кнопку включают вдобавок ещё и комп, а мне это уж точно не нужно в мойке, где и так полно воды и люботных всяких чертей
или ещё один случай из жизни
например, что-то случилось с компом (ну бывает иногда), а тут старый-добрый приятель попросил довезти его куда-то, а у приятеля ручки шаловливые. Садится он в машинку и вдруг нажимает кнопочку включения НЕ ИСПРАВНОГО компа одновременно задавая вопрос "а что это такая за кнопочка???" - много раз такое видел в своей машине ))))
так вот, чтобы этих всех проблем избежать, мне требуется схема кнопки, которая будет замыкать цепь питания ИМЕННО ПОСЛЕ 3-4 секунд удержания кнопки В НАЖАТОМ СОСТОЯНИИ
фуф...
вот я о чём собственно спрашивал ))))
есть идеи как это реализовать?
Re: Кнопка с электронной фиксацией на Ардуино Мини.
Может я вопрос неправильно задал?:confused::(
Re: Кнопка с электронной фиксацией на Ардуино Мини.
Я правильно понял, что надо в приведенный код длинное нажатие дописать просто?
Если так, то я бы типа такого сделал:
PHP код:
#include <avr/interrupt.h>
#include <avr/io.h>
#define BUTTON 2
#define RELAY 3
#define PAUSE 4
byte time=0;
boolean state=false;
boolean a=false;
ISR(TIMER1_COMPA_vect)
{
TCNT1H=0x00;
TCNT1L=0x00;
if (digitalRead(BUTTON) == LOW)
{
time++;
if(time>PAUSE && !a)
{
if(!state)
{
digitalWrite(RELAY, HIGH);
state=true;
a=true;
}
else
{
digitalWrite(RELAY, LOW);
state=false;
a=true;
}
}
}
}
void setup()
{
pinMode(RELAY,OUTPUT);
pinMode(BUTTON,INPUT);
digitalWrite(BUTTON, HIGH); //подключить внутренний подтягивающий резистор
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x7A;
OCR1AL=0x12;
TIMSK1=0x02;
}
void loop()
{
if (digitalRead(BUTTON) == HIGH)
{
a=false;
time=0;
}
}
Re: Кнопка с электронной фиксацией на Ардуино Мини.
Спасибо, сегодня вечером попробую. Я уже и нечаял, что сбудется. Ты как всегда вовремя.
Re: Кнопка с электронной фиксацией на Ардуино Мини.
Здорово, все работает как надо. Спасибо тебе преогромнейшее. Теперь то можно наворачивать ардуинку. Скорей всего еще попристаю.:D:o
Re: Кнопка с электронной фиксацией на Ардуино Мини.
manu_245 скажи пожалуйста, а буззер можно к этому скетчу прицепить.
Re: Кнопка с электронной фиксацией на Ардуино Мини.
Можно. Только delay я бы в прерывание не ставил. Лучше в таймере флаг звука поднять, а потом из loop уже управлять ногой бузера.
Re: Кнопка с электронной фиксацией на Ардуино Мини.
Лучше сразу бы сказал- застрелись.:D
Re: Кнопка с электронной фиксацией на Ардуино Мини.
Цитата:
Сообщение от
basurman971
Лучше сразу бы сказал- застрелись.:D
Это не решит задачу подключения бузера к ардуино))
Поскольку не было сформулировано, когда, как и сколько раз должен работать излучатель, и, особенно, источник со встроенным генератором или нет, я и написал только общие рекомендации.
PHP код:
#include <avr/interrupt.h>
#include <avr/io.h>
#define BUTTON 2
#define RELAY 3
#define PAUSE 4
#define BUZZER 4
byte time=0;
boolean state=false;
boolean a=false;
boolean buz=false;
ISR(TIMER1_COMPA_vect)
{
TCNT1H=0x00;
TCNT1L=0x00;
if (digitalRead(BUTTON) == LOW)
{
time++;
if(time>PAUSE && !a)
{
buz=true;
if(!state)
{
digitalWrite(RELAY, HIGH);
state=true;
a=true;
}
else
{
digitalWrite(RELAY, LOW);
state=false;
a=true;
}
}
}
}
void setup()
{
pinMode(RELAY,OUTPUT);
pinMode(BUZZER,OUTPUT);
pinMode(BUTTON,INPUT);
digitalWrite(BUTTON, HIGH); //подключить внутренний подтягивающий резистор
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x7A;
OCR1AL=0x12;
TIMSK1=0x02;
}
void loop()
{
if (digitalRead(BUTTON) == HIGH)
{
a=false;
time=0;
}
if(buz)
{
//здесь управляем ногой бузера
//Например:
digitalWrite(BUZZER, HIGH);
delay(1000);
digitalWrite(BUZZER, LOW);
buz=false;
}
}
Re: Кнопка с электронной фиксацией на Ардуино Мини.
Извини не подумал. Я хотел, чтобы при включении-выключении было бип (в смысле включилось-бип, выключилось-бип). Буз простой без генератора. Из щитка QX56.