Stap 1: Verkrijgen de codes voor knoppen (I)
Ten eerste moeten we om te verkrijgen van de codes voor elke knop van de afstandsbediening.
Dus, het circuit te bouwen op het breadbord zoals aangegeven op figuur.
De Ir ontvanger TSOP 1738 heeft drie pinnen.
De eerste is de output, aangesloten op pin 11 in Arduino.
De tweede gaat naar een Gnd, en de derde die is verbonden met + 5V.
Download de IrRemote bibliotheek geschreven door Ken Shirriff. Deze bibliotheek laten verzenden en ontvangen van externe Ir-codes in meerdere protocollen zoals Nec, Philips RC5, Philips RC6 en raw.
We hebben een infrarood sensor zoals de osp1738 verbinden met elke digitale invoer pin.
Downloaden vanaf hier de schets
#include
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultaten;
VOID Setup {}
Serial.begin(9600);
irrecv.enableIRIn(); Start de ontvanger
}
Stortplaatsen uit de structuur decode_results.
Noemen dit na IRrecv::decode()
VOID * compiler probleem omzeilen
VOID dump(void *v)
{/ / decode_results * resultaten = (decode_results *) v
VOID dump(decode_results *results)
{int count = resultaten -> rawlen;
Als (resultaten -> decode_type == onbekend)
{Serial.print ("Onbekende codering:");
}
anders als (resultaten -> decode_type == NEC)
{Serial.print ("gedecodeerd NEC:");
} else if (resultaten -> decode_type == SONY)
{Serial.print ("gedecodeerd SONY:");
}
anders als (resultaten -> decode_type == RC5)
{Serial.print ("gedecodeerd RC5:");}
anders als (resultaten -> decode_type == RC6)
{Serial.print ("gedecodeerd RC6:");}
anders als (resultaten -> decode_type == PANASONIC)
{Serial.print ("gedecodeerd PANASONIC – adres:");
Serial.Print (resultaten -> panasonicAddress, HEX);
Serial.Print ("waarde:");}
anders als (resultaten -> decode_type == JVC)
{Serial.print ("gedecodeerd JVC:");}
Serial.Print (resultaten -> waarde, HEX);
Serial.Print ("(");
Serial.Print (resultaten -> bits, DEC);
Serial.println ("bits)");
Serial.Print ("Raw (");
Serial.Print (telling, DEC);
Serial.Print("):");
for (int i = 0; ik < telling; i ++)
{Als ((i % 2) == 1)
{Serial.print (resultaten -> rawbuf [i] * USECPERTICK, DEC);}
anders
{Serial.print (-(int) resultaten -> rawbuf [i] * USECPERTICK, DEC);}
Serial.Print("");}
Serial.println("");}
void loop
{
Als (irrecv.decode (& resultaten))
{
Serial.println (results.value, HEX);
dump (& resultaten);
irrecv.resume(); De volgende waarde ontvangen
}
}