Как использовать библиотеку IRremote с atmega8a
Несколько дней назад я тестировал схему на макетной плате на базе ATmega8a с внутренним генератором 1 МГц. Он может включать и выключать реле на основе полученного ИК-кода, и если он соответствует коду, запрограммированному в EEPROM, он должен включать или отключать реле. Теперь я разработал печатную плату и спаял все вместе, но теперь она не работает. На Arduino Nano все работает нормально.
#include <IRremote.h>
#include <EEPROM.h>
int RECV_PIN = 11;
int RELAY_PIN = 4;
int setpin = 3;
unsigned long work_at;
unsigned long adres;
unsigned long irbuffer;
IRrecv irrecv(RECV_PIN);
decode_results results;
void dump(decode_results *results) {
if(digitalRead(setpin) == 0){
work_at = results->value;
Serial.println(work_at, HEX);
}
irbuffer = results->value;
}
void eeprom_writer(){
if (irrecv.decode(&results)) {
if(digitalRead(setpin) == 0 && work_at != 0){
EEPROM.put(0, work_at); //помещаем значение
Serial.println(work_at, HEX);
adres = work_at;
Serial.println(adres, HEX);
delay(1000); //ждать
}
}
}
void setup()
{
EEPROM.get(0, adres);
pinMode(setpin, INPUT_PULLUP);
pinMode(RELAY_PIN, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Запускаем приемник
}
int on = 0;
unsigned long last = millis();
void loop() {
if (irrecv.decode(&results)) {
// Если прошло не менее 1/4 секунды с момента последнего
// ИК получен, переключаем реле
// if(&results == адрес){
dump(&results);
if (millis() - last > 250) {
on = !on;
if(on == true && adres == irbuffer){
delay(5000);
digitalWrite(RELAY_PIN, on ? HIGH : LOW);
dump(&results);
}else if(on != true && adres == irbuffer){
digitalWrite(RELAY_PIN, on ? HIGH : LOW);
dump(&results);
delay(5000);
}
}
//}
// Serial.println(dump(&results));
// Serial.println(count, DEC);
eeprom_writer();
last = millis();
irrecv.resume(); // Получаем следующее значение
}
}
@Coder_fox, 👍1
Обсуждение1 ответ
Лучший ответ:
Смотрите также:
- Arduino IRremote перестает работать
- Нужна помощь с библиотекой U8GLIB
- Использование библиотеки емкостных датчиков с мультиплексором 74HC4067
- Как сгенерировать файлы .a и .so для добавления в проект arduino
- Использование Broadcom AFBR-S50 с Arduino
- Проблема с Arduino Nano Every и радиопередачей с использованием RH_RF69.h
- Ошибка компиляции для Arduino Nano 33 BLE с библиотекой LiquidCrystal
- Помогите исправить эту ошибку: expected unqualified-id before 'if'|Arduino
@LookAlterno Я припаял его к печатной плате и использовал разъемы для подключения реле iscp uart и ИК-модуля., @Coder_fox
Возможно, мне следует использовать вывод, поддерживающий ШИМ., @Coder_fox