Um das Fnordlicht mit dem Arduino zu steuern, hat Habo ein kleines Lochraster Shield aufgebaut. Es enthält nur einen Steckadapter für die 10-pol Busleitung vom Fnordlicht und eine 2er Klemmleiste für die Spannungsversorgung von 12 Volt.

Zusätzlich ist noch eine 3er Klemmleiste aufgelötet mit GND, Masse und Pin 7. Damit kann z.B. ein Infrarot Sensor angesteckt werden.

Per Infrarot Sensor soll man später die Fnordlichter steuern können. Natürlich können auch andere Sensoren benutzt werden… einfach mal testen!

Hier mal ein kleines Software Beispiel, das ein Fnordlicht ein wenig blinken und faden lässt.

int REMOTE_CMD_FADE_RGB=0x01;

void setup()
{

  delay(3000); // wait for Arduino UNO

// init std. fnordlicht serial speed Serial.begin(19200);

finit();
}

// default init sequence void finit(){

// presync 15 bytes for (int i=0;i<14;i++){
Serial.write(byte(0xff));
}
Serial.write(byte(0x00));

// sync 16 bytes for (int i=0;i<15;i++){
Serial.write(byte(0x1b));
}
Serial.write(byte(0x00));

// stop command 15 bytes Serial.write(byte(0xff));
Serial.write(byte(0x08));
for (int i=0;i<13;i++){
Serial.write(byte(0x00));
}
}

// set RGB colors void fsetrgb(byte address, byte _step, byte _delay, byte red, byte green, byte blue)
{
// 15 bytes Serial.write(byte(address)); // 1 Serial.write(byte(REMOTE_CMD_FADE_RGB));
Serial.write(byte(_step));
Serial.write(byte(_delay));
Serial.write(byte(red));
Serial.write(byte(green));
Serial.write(byte(blue)); // 7 Serial.write(byte(0x00));
Serial.write(byte(0x00));
Serial.write(byte(0x00)); // 10 Serial.write(byte(0x00));
Serial.write(byte(0x00));
Serial.write(byte(0x00));
Serial.write(byte(0x00));
Serial.write(byte(0x00)); // 15void loop()
{
// 5x flash each color for (int i=0;i<5;i++){
fsetrgb(0xff,0xff,0x01,0xff,0x00,0x00);
delay(500);
digitalWrite(13,HIGH);
fsetrgb(0xff,0xff,0x01,0x00,0x00,0xff);
delay(500);
fsetrgb(0xff,0xff,0x01,0x00,0xff,0x00);
delay(500);
digitalWrite(13,LOW);
}
// fade from dark to bright white for (int i=0;i<255;i++){
fsetrgb(0xff,0xff,0x01,i,i,i);
delay(40);
}

// redo init sequence finit(); } Anzeigebeispiel: