Jeg gjorde det sånn her:
I de fleste Arduino-eksemplene må man sette hvilken pin (i tillegg til GND/jord) som brukes til sending. Der står GPI04 som regel som standard, og selv om GPI04 er det samme som "D2" på ESP8266, fikk ihvertfall ikke jeg det til å funke før jeg endra variabelen fra "4" til "D2". Leste at det kunne være utslagsgivende i en eller annen ESP8266 FAQ på Github, husker ikke helt hvor. På den annen side har jeg brukt både D2/D3 etc og GPIO-numrene om hverandre i flere andre script som har funka fint, så jeg tipper årsaken er at folk ikke har vært konsekvente med navngivingen, og hard-coda inn ulike referansenavn her og der.
Puh, altfor lang forklaring, men det kan jo hende noen får noe ut av det. Uansett - her er eksemplet som funka hos meg.
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
const uint16_t kIrLed = D2; // ESP8266 GPIO pin to use. Recommended: 4 (D2).
IRsend irsend(kIrLed); // Set the GPIO to be used to sending the message.
// Example of data captured by IRrecvDumpV2.ino
uint16_t rawData[67] = {9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550,
600, 1650, 650, 550, 600, 1650, 650, 1650, 650, 1650,
600, 550, 650, 1650, 650, 1650, 650, 550, 600, 1650,
650, 1650, 650, 550, 650, 550, 650, 1650, 650, 550,
650, 550, 650, 550, 600, 550, 650, 550, 650, 550,
650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 1650,
650, 1650, 650, 1650, 650, 1650, 600};
// Example Samsung A/C state captured from IRrecvDumpV2.ino
uint8_t samsungState[kSamsungAcStateLength] = {
0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
0x01, 0xE2, 0xFE, 0x71, 0x40, 0x11, 0xF0};
void setup() {
irsend.begin();
#if ESP8266
Serial.begin(115200, SERIAL_8N1, SERIAL_TX_ONLY);
#else // ESP8266
Serial.begin(115200, SERIAL_8N1);
#endif // ESP8266
}
void loop() {
Serial.println("NEC");
irsend.sendNEC(0x00FFE01FUL);
delay(2000);
Serial.println("Sony");
irsend.sendSony(0xa90, 12, 2); // 12 bits & 2 repeats
delay(2000);
Serial.println("a rawData capture from IRrecvDumpV2");
irsend.sendRaw(rawData, 67, 38); // Send a raw data capture at 38kHz.
delay(2000);
Serial.println("a Samsung A/C state from IRrecvDumpV2");
irsend.sendSamsungAC(samsungState);
delay(2000);
}
Jeg så forresten at det lå en annen eksempelfil tilgjengelig for Arduino, som konverterer ir-koder mellom de ulike protokollene (som man også kan gjøre her: http://irdb.tk/convert/).
Hilsen Andreas
IoT-entusiast, Programmerer, webutvikler, musikkprodusent og mye mer
atchoo.net • fredloes.no • atchoo.net/dev/telldus/blink1