Проверьте простенький скетч...если не лень, конечно))плз
- Войдите на сайт для отправки комментариев
Пнд, 12/10/2015 - 00:45
Идея такова - управление светодиодом led при помощи кнопки и ик пульта. ее я реализовал(заранее узнав код кнопок ик). а теперь вот хочу прикрутить обучение этой штуке. алгоритм - кнопку learn нажимаем - загорается светодиод learnled, запускается обучение, а потом кнопкой пульта(которую запомнила ардуина) включаем/выключаем светодиод led.
что добавить или убрать?
//управление нагрузками (светом) при помощи ик пульта и тактовой кнопки.
#include <IRremote.h>
#include <Bounce.h>
#include <EEPROM.h>
#define BUTTON 2
#define led 13
#define RECV_PIN 11
#define learn 10
#define learnled 7
#define IR_CODE_DATA_ADDRESS 0
//создаем объект класса Bounce. Указываем пин, к которому подключена кнопка, и время дребезга в мс.
Bounce bouncer = Bounce(BUTTON,10);
Bounce bouncerlearn = Bounce(learn,5);
//задаем начальное состояние светодиода "выключен"
int ledValue = LOW;
int learnledValue = LOW;
// переменные
int ledStat = 0;
int leearnledStat = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
//определяем режимы работы пинов
pinMode(BUTTON,INPUT);
pinMode(led,OUTPUT);
pinMode(learn,INPUT);
pinMode(learnled,OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Запуск приемника
}
void loop() {
//если сменилось состояние кнопки
if ( bouncer.update() ) {
//если считано значение 1
if ( bouncer.read() == HIGH) {
//если свет был выключен, будем его включать
if ( ledValue == LOW ) {
ledValue = HIGH;
//если свет был включен, будем выключать
} else {
ledValue = LOW;
}
//записываем значение вкл/выкл на пин со светодиодом
digitalWrite(led,ledValue);
}
}
if ( bouncerlearn.update() ) {
//если считано значение 1
if ( bouncerlearn.read() == HIGH) {
//если свет был выключен, будем его включать
if ( learnledValue == LOW ) {
learnledValue = HIGH;
//задаем ожидание команды с пульта
Serial.println(results.value);
if (results.value = 0xFFFFFFFF){
EEPROM.write(results.value, IR_CODE_DATA_ADDRESS); }
//если свет был включен, будем выключать
} else {
learnledValue = LOW;
}
//записываем значение вкл/выкл на пин со светодиодом
digitalWrite(learnled,learnledValue);
}
}
if (irrecv.decode(&results))
{
Serial.println(results.value);
//красный
if (results.value == EEPROM.read(IR_CODE_DATA_ADDRESS)
&& ledValue == 0)
{
digitalWrite(led, HIGH);
ledValue = 1;
}
else
if (results.value == EEPROM.read(IR_CODE_DATA_ADDRESS)
&& ledValue == 1)
{
digitalWrite(led, LOW);
ledValue = 0;
}
irrecv.resume(); // Получить слудующее значение
}
}
значение
}
}
забыл сказать - для продвинутых - знаю, что код некрасивый совсем, однако с чего то надо начать, сильно не пинаем (хотя можно и поворчать для развлекухи)
ардуино уно использую