Hur man styr luftkonditionering A/C hemma med Arduino, även på distans! (2 / 5 steg)
Steg 2: Hur du ställer in olika data
/ * Uppdaterad av Chris Targett
* Nu innehåller mer protokoll
* Novemeber 2011
* IRremote: IRrecvDump - dump Detaljer för IR koder med IRrecv
* En IR-detektor/demodulator måste anslutas till ingången RECV_PIN.
* Version 0.1 juli, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*
* Ändrat av Chris Targett att påskynda processen med att samla in
* IR (HEX och DEC) koder från en fjärrkontroll (till sätta in och .h fil)
*
*/
#include < IRremote.h >
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultat.
void setup()
{
Serial.BEGIN(9600);
irrecv.enableIRIn(); Starta mottagaren
}
Dumpar ut decode_results struktur.
Kalla detta efter IRrecv::decode()
void * Undvik compiler problemet
void dump(void *v) {
decode_results * resultat = (decode_results *) v
void dump(decode_results *results) {
int count = resultat -> rawlen;
om (resultat -> decode_type == okänd) {
Serial.Print ("okänd kodning:");
}
annars om (resultat -> decode_type == NEC) {
Serial.Print ("avkodas NEC:");
}
annars om (resultat -> decode_type == SONY) {
Serial.Print ("avkodas SONY:");
}
annars om (resultat -> decode_type == RC5) {
Serial.Print ("avkodas RC5:");
}
annars om (resultat -> decode_type == RC6) {
Serial.Print ("avkodas RC6:");
}
annars om (resultat -> decode_type == SAMSUNG) {
Serial.Print ("avkodas SAMSUNG:");
}
annars om (resultat -> decode_type == JVC) {
Serial.Print ("avkodas JVC:");
}
annars om (resultat -> decode_type == PANASONIC) {
Serial.Print ("avkodas Panasonic:");
}
Serial.Print (resultat -> värde, HEX);
Serial.Print("(");
Serial.Print (resultat -> bitar, DEC).
Serial.println ("bitar)");
Serial.Print ("#define Something_DEC");
Serial.println (resultat -> värde, DEC).
Serial.Print ("#define Something_HEX");
Serial.println (resultat -> värde, HEX);
Serial.Print ("Raw (");
Serial.Print (antal, DEC);
Serial.Print("):");
för (int jag = 0; jag < greve; i ++) {
om ((i % 2) == 1) {
Serial.Print (resultat -> rawbuf [i] * USECPERTICK, DEC);
}
annat {
Serial.Print (-(int) resultat -> rawbuf [i] * USECPERTICK, DEC);
}
Serial.Print("");
}
Serial.println("");
}
void loop() {
om (irrecv.decode (& resultat)) {
dump (& resultat);
irrecv.Resume(); Ta emot nästa värde
}
}
Du kan se på bilden hur du länkar Arduino med enheten.
Efter lastning koden på Arduino, bör vi tryck knappar på fjärrkontrollen och kopia någonstans de resultat som visas av följetongen.
I mitt fall fick jag följande sekvens av kodningar:
Accensione 20 C ° Caldo
RAW (150):-5320 3000-3000 3000-4400 550-1600 600-550 550-1650 550-550 550-550 550-1650 550-550 550-1650 500-550 550-1650 550-550 550-500 600-500 600-550 550-550 550-1650 500-550 550-600 500-1700 500-550 550-550 550-550 550-600 500-550 550-550 550-550 550-550 550-1650 550-1650 550-1650 500-1650 550-1650 550-550 550-550 550-550 550-550 550 - 1650 550-1650 550-500 550-550 550-1700 500-1650 550-550 550-500 600-550 550-550 550-550 550-550 550-550 550-1650 500-1700 500-550 550-550 550-550 550-550 550-550 550-600 500-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-1650 550-500 550-1700 500-550 550-550 550-550 550-1650 550
Spegnimento
RAW (150):-3276 3100-2900 2950-4400 700-1500 700-400 700-1500 700-400 650-450 550-1650 550-550 650-1500 600-500 600-1600 600-500 600-500 600-450 650-450 600-550 550-550 550-550 550-600 500-1600 600-500 600-500 600-550 550-500 600-500 600-550 550-550 550-1600 600-500 600-500 600-500 550-1650 550-1600 600-500 600-500 600-550 550-550 550 - 1600 600-1600 550-550 550-550 550-1650 550-1600 600-550 550-500 600-500 600-550 550-550 550-500 600-500 600-1600 600-1600 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-500 600-550 550-550 550-500 600-500 600-500 600-1600 600-500 600-1600 550-550 550-1600 600-550 550-550 550
Accensione 23 C ° Freddo 2 FAN
RAW (150):-16044 3050-3000 3000-4400 550-1600 600-550 550-1650 550-550 550-550 550-1650 550-500 600-1600 550-550 550-1650 550-1650 550-1650 550-550 550-550 550-500 600-1600 550-550 550-550 550-1650 550-550 550-550 550-550 550-550 550-550 550-550 550-500 600-1650 500-550 550-600 500-1700 500-550 550-550 550-550 550-550 550-550 550-550 550 - 1650 550-1650 550-550 550-500 550-1650 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-1650 550-550 550-550 550-550 550-550 550-500 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-1650 550-1600 600-550 550
Accensione 20 C ° Caldo e Swing
RAW (150): 18566 3000-3000 3000-4400 550-1650 550-500 600-1600 600-500 600-500 600-1600 550-550 550-1650 550-500 600-1600 600-550 550-550 550-550 550-1600 600-500 600-500 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-1650 550-550 550-1600 550-550 550-600 500-550 550-550 550-550 550-550 550-550 550 - 1650 550-1650 550-550 550-550 550-1600 550-1650 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-1650 550-1650 550-550 550-550 550-550 550-550 500-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-1650 550-1650 550-1650 500-1650 550-550 550-1700 500
Accensione 23 C ° Freddo 2 FAN e Swing
RAW (150): 2084 2950-3050 2950-4400 550-1600 600-550 550-1650 550-550 550-550 550-1600 600-500 600-1600 550-500 600-1650 550-1650 550-1600 600-500 600-1600 600-500 600-500 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-500 600-550 550-500 600-1650 550-550 550-1600 600-500 600-1600 550-1600 600-500 600-500 600-550 550-500 600 - 1650 550-1600 600-500 600-500 550-1650 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-1650 550-500 600-500 600-500 600-500 600-500 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-550 550-1650 550-1650 550-1600 600-1600 550-550 600-500 550-550 550-550 550
Som rapporterats i biblioteket iRemote, att överföra dessa uppgifter, är det nödvändigt att göra vissa förändringar, i synnerhet, behöver ersätta bindestrecken, ta bort det första värdet och placera mellan olika värden, ett semikolon, som i Arduino kod infogas i en vektor av heltal.
För att underlätta detta, skapade jag ett litet program i Java som kan göra dessa uppgifter automatiskt.
Även detta program finns i Github reporäntan och kallas AcToolArduino. I denna första version automatiserar programmet processen genom att ange informationen i TextField. I nästa version, du kan läsa in från fil, resultat från seriella Arduino.