Indice
Descrizione
In questo video scoprirai come ricevere i segnali ad infrarossi con Arduino.
Imparerai come collegare un ricevitore ad infrarossi e scrivere gli sketch per comandare Arduino tramite un telecomando.
#include <IRremote.h>
#define IR_RECEIVE_PIN 11
void setup() {
Serial.begin(9600);
IrReceiver.begin(IR_RECEIVE_PIN);
}
void loop() {
if (IrReceiver.decode()) {
IrReceiver.printIRResultShort(&Serial);
IrReceiver.resume();
}
}
#include <IRremote.h>
#define IR_RECEIVE_PIN 11
#define RED_PIN 9
#define GREEN_PIN 6
#define BLUE_PIN 5
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
IrReceiver.begin(IR_RECEIVE_PIN);
}
void loop() {
if (IrReceiver.decode()) {
setColor(IrReceiver.decodedIRData.decodedRawData);
IrReceiver.resume();
}
}
void setColor(uint32_t code) {
if (code == 0xE619FF00) { // 0 - spento
rgb(0, 0, 0);
} else if (code == 0xBA45FF00) { // 1 - rosso
rgb(255, 0, 0);
} else if (code == 0xB946FF00) { // 2 - arancione
rgb(255, 20, 0);
} else if (code == 0xB847FF00) { // 3 - giallo
rgb(255, 70, 0);
} else if (code == 0xBB44FF00) { // 4 - verde
rgb(0, 255, 0);
} else if (code == 0xBF40FF00) { // 5 - ciano
rgb(0, 255, 255);
} else if (code == 0xBC43FF00) { // 6 - blu
rgb(0, 0, 255);
} else if (code == 0xF807FF00) { // 7 - magenta
rgb(255, 0, 70);
} else if (code == 0xEA15FF00) { // 8 - viola
rgb(170, 0, 255);
} else if (code == 0xF609FF00) { // 9 - bianco
rgb(255, 255, 255);
}
}
void rgb(int red, int green, int blue) {
analogWrite(RED_PIN, red);
analogWrite(GREEN_PIN, green);
analogWrite(BLUE_PIN, blue);
}
#include <IRremote.h>
#define IR_RECEIVE_PIN 11
#define RED_PIN 9
#define GREEN_PIN 6
#define BLUE_PIN 5
#define FADE_DELAY_MIN 0
#define FADE_DELAY_MAX 5
int fadeDelay = 3;
int index = 0;
unsigned long lastChange = 0;
bool enable = false;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
IrReceiver.begin(IR_RECEIVE_PIN);
}
void loop() {
if (IrReceiver.decode()) {
if (IrReceiver.decodedIRData.decodedRawData == 0xE31CFF00) { // OK
enable = !enable;
if (!enable) {
rgb(0, 0, 0);
}
} else if (IrReceiver.decodedIRData.decodedRawData == 0xE718FF00) { // ^
fadeDelay--;
} else if (IrReceiver.decodedIRData.decodedRawData == 0xAD52FF00) { // v
fadeDelay++;
}
fadeDelay = constrain(fadeDelay, FADE_DELAY_MIN, FADE_DELAY_MAX);
IrReceiver.resume();
}
if (!enable) {
return;
}
if ((millis() - lastChange) > fadeDelay) {
rgbFade(index);
index = (index+1) % 768;
lastChange = millis();
}
}
void rgbFade(int i) {
if (i < 256) {
rgb(255-i, i, 0);
} else if (i < 512) {
rgb(0, 511-i, i-256);
} else {
rgb(i-512, 0, 767-i);
}
}
void rgb(int red, int green, int blue) {
analogWrite(RED_PIN, red);
analogWrite(GREEN_PIN, green);
analogWrite(BLUE_PIN, blue);
}