Funkcja Serial.print(wartość, format), służy do wysyłania na serial wartości skonwertowanych do znaków ASCII.
To w jaki sposób będą one przedstawione zależy od specyfikatora format.
Czyli mogą być przedstawione w postaci hexadecymalnej, binarnej, dziesiętnej, i ósemkowej.
Ciebie niech nie obchodzi w jaki sposób program drukuje te zmienne na ekranie.
Zmienna zapisana jest w postaci binarnej i taka nam jest potrzebna.
Pozwoliłem sobie napisać prostą funkcję zapisującą kody klawiszy do tablicy.
Kod:
#include <IRremote.h>
#define iloscKlawiszy 4//powiedzmy, że chcesz sczytać cztery klawisze
int klawisz[iloscKlawiszy]; // to sobie zadeklaruj globalnie
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
skanuj();
}
void skanuj(){
int x=0;
while(1){
if (irrecv.decode(&results)) {
klawisz[x] = results.value;
x++;
delay(250);
irrecv.resume();
}
if (x==iloscKlawiszy) {
Serial.println("#include <avr/pgmspace.h>");
Serial.println("");
Serial.print("const int klawisz[");
Serial.print(iloscKlawiszy);
Serial.println("] PROGMEM = {");
for(int i = 0; i<iloscKlawiszy; i++){
Serial.print("0b");
Serial.print(klawisz[i],BIN);
if (i<iloscKlawiszy-1) Serial.println(",");
else {Serial.println("};");
return;
}
}
}
}
}
void loop() {
}
Na monitorze portu powinno pojawić się coś takiego:
Kod:
#include <avr/pgmspace.h>
const int klawisz[4] PROGMEM = {
0b111000010001111,
0b101100010100111,
0b110100010010111,
0b100000010111111};
Zaznacz to, skopiuj i zapisz do jakiegoś pliku.
To jest definicja zmiennej klawisz.
Chcąc wysłać to po kabelku do TV, wystarczy napisać:
Kod:
Serial.write(klawisz[1]);
i wyślemy pierwszą wartość klawisza do portu.