Arduino-Kernfragment(vollständiger Code über eBay Nachricht anfordern):
//Autor: cantone-electonics
//Arduino 1.0
//Arduino Uno R3
//Erstellung einer Funkfernbedienung mit Arduino
const int data_out = 2;//Encoder DOUT
//LED-Pin, wenn der Schlüssel über den seriellen Port empfangen wird, blinkt die LED
const int ledPin = 13; //LED-Pin
//Der OSC-Widerstand beträgt 3,3M
const int Osc_4xCycle = 359; //4 Oszillationszeiträume
const int Osc_12xCycle = 1078;//12 Oszillationszeiträume
unsigned long Temporary[3];//Temporärer Speicher
...
//send:8 Adressbits, 4 Datenbits, Sync-Bit
void send_data()
void setup() {
//LED-Pin als Ausgang initialisieren:
pinMode(ledPin, OUTPUT);
//Encoder DOUT-Pin als Ausgang initialisieren
pinMode(data_out, OUTPUT);
Serial.begin(9600);
}
void loop()
{
...
while(1)
{
//Schlüssel vom PC-Seriellport abfragen
while (Serial.available() > 0)
{
keydata = Serial.read();
receive_flag = 1;
delay(2);
}
if(receive_flag == 1)//wenn Schlüssel empfangen, Schlüssel senden
{
receive_flag = 0;
if((keydata == 'a') || (keydata == 'A'))//Relais von Kanal A auslösen.
{
Temporary[2] = 0xC0;// 0xC0 ist Taste A
digitalWrite(ledPin, HIGH);//LED einschalten
send_data();//Code senden
Serial.println(".....Relais von Kanal A auslösen.....");
}
else if((keydata == 'b') || (keydata == 'B'))//Relais von Kanal B auslösen.
{
Temporary[2] = 0x30;// 0x30 ist Taste B
digitalWrite(ledPin, HIGH);//LED einschalten
send_data();//Code senden
Serial.println(".....Relais von Kanal B auslösen.....");
}
else if((keydata == 'c') || (keydata == 'C'))//Relais von Kanal C auslösen.
{
Temporary[2] = 0x0C;// 0x0C ist Taste C
digitalWrite(ledPin, HIGH);//LED einschalten
send_data();//Code senden
Serial.println(".....Relais von Kanal C auslösen.....");
}
else if((keydata == 'd') || (keydata == 'D'))//Relais von Kanal D auslösen.
{
Temporary[2] = 0x03;// 0x03 ist Taste D
digitalWrite(ledPin, HIGH);//LED einschalten
send_data();//Code senden
Serial.println(".....Relais von Kanal D auslösen.....");
}
...
}
}