Crazy Clown
Das Kirmes Fahrgeschäft "Crazy Clown" schaut erst dann richtig gut aus, wenn es auch beleuchtet ist. Dazu habe ich mir bei
kokologgo.de SMD Lichterketten gekauft.
Gelbe Lichterketten habe ich oberhalb der Treppenstufen angeklebt.
Am Ein- und Ausgang sind senkrecht blaue Lichterketten montiert.
An der Rückwand habe ich paarweise gelbe SMD LEDs Baugröße 0603 verlötet und montiert. Eine paarweise Reihenschaltung wird immer
an einen Ausgang des Arduinos angeschlossen um schöne Lauflichteffekte zu generieren.
Das Kassenhaus wird ebenfalls beleuchtet. Außerdem sind die beiden Stroboskoplampen mit weißen LEDs ausgestattet. Die Arduinos sind über
Miniatursteckverbindungen RM 1,27 mm mit den LEDs verbunden, so dass zum Einbau des Fahrgeschäfts die Arduinos abgezogen werden können.
Der Umbau ist fertig.
So schaut das Karussell im Ruhemodus aus...
... und so in Aktion:
VIDEO
Für diejenigen, die gerne Arduino programmieren, anbei der Code für die Beleuchtung der Treppe, Türbereiche, Stroboskoplampen und Kasse:
#include "TimerOne.h"
int Treppe_1 = 6;
int Treppe_2 = 3;
int Treppe_3 = 7;
int Treppe_4 = 4;
int Eingang_links = 10;
int Eingang_rechts = 11;
int Ausgang_links = 5;
int Ausgang_rechts = 9;
int Stroboskop_links = 12;
int Stroboskop_rechts = 8;
int Kasse_Innenlicht = A0;
int Kasse_Dach = A1;
int Treppe_Funktion = 1;
int Treppe_Zaehler = 0;
int Treppe_Anzahl = 2;
int Treppe_Status = 0;
int Zugang_Funktion = 1;
int Zugang_Zaehler = 0;
int Zugang_Anzahl = 2;
int Zugang_Status = 0;
int Stroboskop_Funktion = 1;
int Stroboskop_Zaehler = 0;
int Stroboskop_Anzahl = 2;
int Stroboskop_Status = 0;
int Kasse_Funktion = 1;
int Kasse_Zaehler = 0;
int Kasse_Anzahl = 2;
int Kasse_Status = 0;
void setup()
{
pinMode(Treppe_1, OUTPUT);
pinMode(Treppe_2, OUTPUT);
pinMode(Treppe_3, OUTPUT);
pinMode(Treppe_4, OUTPUT);
pinMode(Eingang_links, OUTPUT);
pinMode(Eingang_rechts, OUTPUT);
pinMode(Ausgang_links, OUTPUT);
pinMode(Ausgang_rechts, OUTPUT);
pinMode(Stroboskop_links, OUTPUT);
pinMode(Stroboskop_rechts, OUTPUT);
pinMode(Kasse_Innenlicht, OUTPUT);
pinMode(Kasse_Dach, OUTPUT);
digitalWrite(Treppe_1, LOW);
digitalWrite(Treppe_2, LOW);
digitalWrite(Treppe_3, LOW);
digitalWrite(Treppe_4, LOW);
digitalWrite(Eingang_links, LOW);
digitalWrite(Eingang_rechts, LOW);
digitalWrite(Ausgang_links, LOW);
digitalWrite(Ausgang_rechts, LOW);
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
digitalWrite(Kasse_Innenlicht, HIGH);
digitalWrite(Kasse_Dach, LOW);
Timer1.initialize(50000);
Timer1.attachInterrupt(Zeitkonstante);
}
void Zeitkonstante()
{
Treppe_Status++;
Zugang_Status++;
Stroboskop_Status++;
Kasse_Status++;
}
void loop()
{
// Treppe Lauflicht langsam
if (Treppe_Funktion == 1 && Treppe_Status == 0)
{
digitalWrite(Treppe_1, HIGH);
}
if (Treppe_Funktion == 1 && Treppe_Status == 6)
{
digitalWrite(Treppe_1, LOW);
digitalWrite(Treppe_2, HIGH);
}
if (Treppe_Funktion == 1 && Treppe_Status == 12)
{
digitalWrite(Treppe_2, LOW);
digitalWrite(Treppe_3, HIGH);
}
if (Treppe_Funktion == 1 && Treppe_Status == 18)
{
digitalWrite(Treppe_3, LOW);
digitalWrite(Treppe_4, HIGH);
}
if (Treppe_Funktion == 1 && Treppe_Status == 24)
{
digitalWrite(Treppe_4, LOW);
Treppe_Status = 0;
Treppe_Zaehler++;
}
if (Treppe_Funktion == 1 && Treppe_Zaehler >= Treppe_Anzahl)
{
Treppe_Funktion = 2;
Treppe_Zaehler = 0;
Treppe_Anzahl = 8;
}
// Treppe Lauflicht schnell
if (Treppe_Funktion == 2 && Treppe_Status == 0)
{
digitalWrite(Treppe_1, HIGH);
}
if (Treppe_Funktion == 2 && Treppe_Status == 2)
{
digitalWrite(Treppe_1, LOW);
digitalWrite(Treppe_2, HIGH);
}
if (Treppe_Funktion == 2 && Treppe_Status == 4)
{
digitalWrite(Treppe_2, LOW);
digitalWrite(Treppe_3, HIGH);
}
if (Treppe_Funktion == 2 && Treppe_Status == 6)
{
digitalWrite(Treppe_3, LOW);
digitalWrite(Treppe_4, HIGH);
}
if (Treppe_Funktion == 2 && Treppe_Status == 8)
{
digitalWrite(Treppe_4, LOW);
Treppe_Status = 0;
Treppe_Zaehler++;
}
if (Treppe_Funktion == 2 && Treppe_Zaehler >= Treppe_Anzahl)
{
Treppe_Funktion = 3;
Treppe_Zaehler = 0;
Treppe_Anzahl = 4;
}
// Treppe Blink
if (Treppe_Funktion == 3 && Treppe_Status == 0)
{
digitalWrite(Treppe_1, HIGH);
digitalWrite(Treppe_2, HIGH);
digitalWrite(Treppe_3, HIGH);
digitalWrite(Treppe_4, HIGH);
}
if (Treppe_Funktion == 3 && Treppe_Status == 2)
{
digitalWrite(Treppe_1, LOW);
digitalWrite(Treppe_2, LOW);
digitalWrite(Treppe_3, LOW);
digitalWrite(Treppe_4, LOW);
}
if (Treppe_Funktion == 3 && Treppe_Status == 6)
{
Treppe_Status = 0;
Treppe_Zaehler++;
}
if (Treppe_Funktion == 3 && Treppe_Zaehler >= Treppe_Anzahl)
{
Treppe_Funktion = 4;
Treppe_Zaehler = 0;
Treppe_Anzahl = 4;
}
// Treppe Aufbau/Abbau
if (Treppe_Funktion == 4 && Treppe_Status == 0)
{
digitalWrite(Treppe_1, HIGH);
}
if (Treppe_Funktion == 4 && Treppe_Status == 3)
{
digitalWrite(Treppe_2, HIGH);
}
if (Treppe_Funktion == 4 && Treppe_Status == 6)
{
digitalWrite(Treppe_3, HIGH);
}
if (Treppe_Funktion == 4 && Treppe_Status == 9)
{
digitalWrite(Treppe_4, HIGH);
}
if (Treppe_Funktion == 4 && Treppe_Status == 12)
{
digitalWrite(Treppe_1, LOW);
}
if (Treppe_Funktion == 4 && Treppe_Status == 15)
{
digitalWrite(Treppe_2, LOW);
}
if (Treppe_Funktion == 4 && Treppe_Status == 18)
{
digitalWrite(Treppe_3, LOW);
}
if (Treppe_Funktion == 4 && Treppe_Status == 21)
{
digitalWrite(Treppe_4, LOW);
Treppe_Status = 0;
Treppe_Zaehler++;
}
if (Treppe_Funktion == 4 && Treppe_Zaehler >= Treppe_Anzahl)
{
Treppe_Funktion = 1;
Treppe_Zaehler = 0;
Treppe_Anzahl = 4;
}
// Zugang Lauflicht
if (Zugang_Funktion == 1 && Zugang_Status == 0)
{
digitalWrite(Eingang_links, HIGH);
}
if (Zugang_Funktion == 1 && Zugang_Status == 3)
{
digitalWrite(Eingang_links, LOW);
digitalWrite(Eingang_rechts, HIGH);
}
if (Zugang_Funktion == 1 && Zugang_Status == 6)
{
digitalWrite(Eingang_rechts, LOW);
digitalWrite(Ausgang_links, HIGH);
}
if (Zugang_Funktion == 1 && Zugang_Status == 9)
{
digitalWrite(Ausgang_links, LOW);
digitalWrite(Ausgang_rechts, HIGH);
}
if (Zugang_Funktion == 1 && Zugang_Status == 12)
{
digitalWrite(Ausgang_rechts, LOW);
Zugang_Status = 0;
Zugang_Zaehler++;
}
if (Zugang_Funktion == 1 && Zugang_Zaehler >= Zugang_Anzahl)
{
Zugang_Funktion = 2;
Zugang_Zaehler = 0;
Zugang_Anzahl = 3;
}
// Zugang Blitz
if (Zugang_Funktion == 2 && Zugang_Status == 0)
{
digitalWrite(Eingang_links, HIGH);
digitalWrite(Eingang_rechts, HIGH);
digitalWrite(Ausgang_links, HIGH);
digitalWrite(Ausgang_rechts, HIGH);
}
if (Zugang_Funktion == 2 && Zugang_Status == 2)
{
digitalWrite(Eingang_links, LOW);
digitalWrite(Eingang_rechts, LOW);
digitalWrite(Ausgang_links, LOW);
digitalWrite(Ausgang_rechts, LOW);
}
if (Zugang_Funktion == 2 && Zugang_Status == 5)
{
digitalWrite(Eingang_links, HIGH);
digitalWrite(Eingang_rechts, HIGH);
digitalWrite(Ausgang_links, HIGH);
digitalWrite(Ausgang_rechts, HIGH);
}
if (Zugang_Funktion == 2 && Zugang_Status == 7)
{
digitalWrite(Eingang_links, LOW);
digitalWrite(Eingang_rechts, LOW);
digitalWrite(Ausgang_links, LOW);
digitalWrite(Ausgang_rechts, LOW);
}
if (Zugang_Funktion == 2 && Zugang_Status == 12)
{
Zugang_Status = 0;
Zugang_Zaehler++;
}
if (Zugang_Funktion == 2 && Zugang_Zaehler >= Zugang_Anzahl)
{
Zugang_Funktion = 3;
Zugang_Zaehler = 0;
Zugang_Anzahl = 8;
}
// Zugang Lauflicht
if (Zugang_Funktion == 3 && Zugang_Status == 0)
{
digitalWrite(Eingang_links, HIGH);
}
if (Zugang_Funktion == 3 && Zugang_Status == 2)
{
digitalWrite(Eingang_rechts, HIGH);
}
if (Zugang_Funktion == 3 && Zugang_Status == 4)
{
digitalWrite(Ausgang_links, HIGH);
}
if (Zugang_Funktion == 3 && Zugang_Status == 6)
{
digitalWrite(Ausgang_rechts, HIGH);
}
if (Zugang_Funktion == 3 && Zugang_Status == 8)
{
digitalWrite(Eingang_links, LOW);
}
if (Zugang_Funktion == 3 && Zugang_Status == 10)
{
digitalWrite(Eingang_rechts, LOW);
}
if (Zugang_Funktion == 3 && Zugang_Status == 12)
{
digitalWrite(Ausgang_links, LOW);
}
if (Zugang_Funktion == 3 && Zugang_Status == 14)
{
digitalWrite(Ausgang_rechts, LOW);
}
if (Zugang_Funktion == 3 && Zugang_Status == 16)
{
Zugang_Status = 0;
Zugang_Zaehler++;
}
if (Zugang_Funktion == 3 && Zugang_Zaehler >= Zugang_Anzahl)
{
Zugang_Funktion = 4;
Zugang_Zaehler = 0;
Zugang_Anzahl = 3;
}
// Zugang Blitz
if (Zugang_Funktion == 4 && Zugang_Status == 0)
{
digitalWrite(Eingang_links, HIGH);
digitalWrite(Eingang_rechts, HIGH);
digitalWrite(Ausgang_links, HIGH);
digitalWrite(Ausgang_rechts, HIGH);
}
if (Zugang_Funktion == 4 && Zugang_Status == 2)
{
digitalWrite(Eingang_links, LOW);
digitalWrite(Eingang_rechts, LOW);
digitalWrite(Ausgang_links, LOW);
digitalWrite(Ausgang_rechts, LOW);
}
if (Zugang_Funktion == 4 && Zugang_Status == 5)
{
digitalWrite(Eingang_links, HIGH);
digitalWrite(Eingang_rechts, HIGH);
digitalWrite(Ausgang_links, HIGH);
digitalWrite(Ausgang_rechts, HIGH);
}
if (Zugang_Funktion == 4 && Zugang_Status == 7)
{
digitalWrite(Eingang_links, LOW);
digitalWrite(Eingang_rechts, LOW);
digitalWrite(Ausgang_links, LOW);
digitalWrite(Ausgang_rechts, LOW);
}
if (Zugang_Funktion == 4 && Zugang_Status == 12)
{
Zugang_Status = 0;
Zugang_Zaehler++;
}
if (Zugang_Funktion == 4 && Zugang_Zaehler >= Zugang_Anzahl)
{
Zugang_Funktion = 1;
Zugang_Zaehler = 0;
Zugang_Anzahl = 8;
}
// Stroboskop langsam
if (Stroboskop_Funktion == 1 && Stroboskop_Status == 0)
{
digitalWrite(Stroboskop_links, HIGH);
digitalWrite(Stroboskop_rechts, HIGH);
digitalWrite(Stroboskop_links, HIGH);
digitalWrite(Stroboskop_rechts, HIGH);
}
if (Stroboskop_Funktion == 1 && Stroboskop_Status == 1)
{
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
}
if (Stroboskop_Funktion == 1 && Stroboskop_Status == 5)
{
digitalWrite(Stroboskop_links, HIGH);
digitalWrite(Stroboskop_rechts, HIGH);
digitalWrite(Stroboskop_links, HIGH);
digitalWrite(Stroboskop_rechts, HIGH);
}
if (Stroboskop_Funktion == 1 && Stroboskop_Status == 6)
{
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
}
if (Stroboskop_Funktion == 1 && Stroboskop_Status == 16)
{
Stroboskop_Status = 0;
Stroboskop_Zaehler++;
}
if (Stroboskop_Funktion == 1 && Stroboskop_Zaehler >= Stroboskop_Anzahl)
{
Stroboskop_Funktion = 2;
Stroboskop_Zaehler = 0;
Stroboskop_Anzahl = 5;
}
// Stroboskop schnell
if (Stroboskop_Funktion == 2 && Stroboskop_Status == 0)
{
digitalWrite(Stroboskop_links, HIGH);
digitalWrite(Stroboskop_rechts, HIGH);
digitalWrite(Stroboskop_links, HIGH);
digitalWrite(Stroboskop_rechts, HIGH);
}
if (Stroboskop_Funktion == 2 && Stroboskop_Status == 1)
{
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
}
if (Stroboskop_Funktion == 2 && Stroboskop_Status == 4)
{
digitalWrite(Stroboskop_links, HIGH);
digitalWrite(Stroboskop_rechts, HIGH);
digitalWrite(Stroboskop_links, HIGH);
digitalWrite(Stroboskop_rechts, HIGH);
}
if (Stroboskop_Funktion == 2 && Stroboskop_Status == 5)
{
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
digitalWrite(Stroboskop_links, LOW);
digitalWrite(Stroboskop_rechts, LOW);
}
if (Stroboskop_Funktion == 2 && Stroboskop_Status == 7)
{
Stroboskop_Status = 0;
Stroboskop_Zaehler++;
}
if (Stroboskop_Funktion == 2 && Stroboskop_Zaehler >= Stroboskop_Anzahl)
{
Stroboskop_Funktion = 1;
Stroboskop_Zaehler = 0;
Stroboskop_Anzahl = 10;
}
// Kasse Blink langsam
if (Kasse_Funktion == 1 && Kasse_Status == 0)
{
digitalWrite(Kasse_Dach, HIGH);
}
if (Kasse_Funktion == 1 && Kasse_Status == 5)
{
digitalWrite(Kasse_Dach, LOW);
}
if (Kasse_Funktion == 1 && Kasse_Status == 10)
{
Kasse_Status = 0;
Kasse_Zaehler++;
}
if (Kasse_Funktion == 1 && Kasse_Zaehler >= Kasse_Anzahl)
{
Kasse_Funktion = 2;
Kasse_Zaehler = 0;
Kasse_Anzahl = 2;
}
// Kasse Blink schnell
if (Kasse_Funktion == 2 && Kasse_Status == 0)
{
digitalWrite(Kasse_Dach, HIGH);
}
if (Kasse_Funktion == 2 && Kasse_Status == 2)
{
digitalWrite(Kasse_Dach, LOW);
}
if (Kasse_Funktion == 2 && Kasse_Status == 4)
{
Kasse_Status = 0;
Kasse_Zaehler++;
}
if (Kasse_Funktion == 2 && Kasse_Zaehler >= Kasse_Anzahl)
{
Kasse_Funktion = 1;
Kasse_Zaehler = 0;
Kasse_Anzahl = 6;
}
}