In diesem Projekt zeige ich dir, wie du mit Arduino einen Halloween-Süßigkeitenspender mit Gruselfaktor bauen kannst.
Was ist ein Halloween-Süßigkeitenspender?
Es ist Halloween und bunt verkleidete Gespenster stehen vor der Tür. Normalerweise kommt nun jemand mit einer Schüssel voller Süßigkeiten heraus und die Gestalten streichen ihre Beute ein. Aber nicht in diesem Jahr! Anstelle einer Schüssel, müssen die Besucher in das Maul eines gruseligen Totenkopfs greifen, um an die süßen Belohnungen zu gelangen. Doch der Totenkopf öffnet seine Augen und sprüht gruseligen Nebel aus der Nase.
Bitte beachte auch meinen Corona-Hinweis am Ende des Beitrags.
Bauteile für die Elektronik
- 2x Servo-Motor
- 1x Nebelmaschine
- 1x IR Sensor
Funktionsweise
Steckt jemand seine Hand in das Maul des Totenkopfes, wird das per Infrarot-Sensor registriert. Die Augenhöhlen leuchten auf und die Augäpfel drehen sich nach vorn. Nach einer kurzen Zeit sprüht ein Nebelstoß aus der Nase des Totenkopfes. Wird die Hand wieder herausgezogen, drehen sich die Augen wieder nach hinten und das Licht schaltet sich ab.
Aufbau Halloween-Süßigkeitenspender
Fangen wir mit der Elektronik an. Das Projekt besteht aus zwei LEDs für die Beleuchtung und einem Servo (Weitere Infos zum Servo-Motor) für die Bewegung der Augen, einer Nebelmaschine, die per Servo-Motor eingeschaltet wird und einem IR-Sensor (Weitere Infos zum Infrarot-Sensor), der Bewegung im Maul des Totenkopfes erkennt.
Nebel auslösen
Eine Nebelmaschine ist ein spannendes Gerät und ich will sie für dieses Projekt nicht zerstören, indem ich irgendwo Kabel abschneide. Meine Alternative ist ein mit Heißkleber und einem Kabelbinder fixierter Servo-Motor am Auslöseknopf. Wird der Servo gedreht, drückt er den Auslöser nach unten und die Nebelmaschine startet. Wird der Servo zurückgedreht, hört die Maschine wieder auf. Bau das aber erst zusammen, nachdem du den Code getestet hast. Die Drehwinkel der Servos müssen ja zu deinem Aufbau passen.
Schaltung
Die Schaltung besteht aus zwei LEDs, die auf der Kathoden-Seite (kurze Beinchen) mit dem GND und der Anoden-Seite (langes Beinchen) über einen Widerstand von 220 Ohm mit dem digitalen Pin 7 des Arduinos verbunden sind. Zwei Servomotoren sind mit 5V+ und dem GND verbunden. Sie erhalten ihre Steuersignale über die digitalen Pins 2 und 3. Der Infrarot-Sensor ist ebenfalls mit 5V+ und dem GND verbunden. Er sendet ein analoges Signal an den analogen Input-Pin A0.
Code für den Halloween-Süßigkeitenspender
Um die Funktionsweise des Codes zu verstehen, sehen wir uns den Loop des Süßigkeitenspender-Codes an.
void loop() { Serial.println(analogRead(irPin)); if (analogRead(irPin) > irSchaltgrenze) { augenEinschalten(); if ((nebelTimer+nebelTimeout<millis())&&(nebelAbgegeben==false)){ nebel(); nebelAbgegeben=true; } } else { augenAusschalten(); nebelTimer = millis(); nebelAbgegeben = false; } delay(10); }
Durch die if-Abfrage wartet das Programm so lange, bis der IR-Sensor meldet, dass jemand seine Hand in das Maul gesteckt hat. Die Schaltgrenze (irSchaltgrenze) muss dafür noch eingestellt werden. Teste das einfach aus. Im seriellen Monitor (Baud-Rate 115200) kannst du dir die Werte anzeigen lassen.
Wird also der IR-Sensor ausgelöst, wird die Methode augenEinschalten() aufgerufen. Sie schaltet die LEDs ein und dreht die Augen nach vorn.
Nun wird überprüft, ob die Variable nebelTimer plus der Zeit, die der Nebel sprühen soll (nebelTimeout) abgelaufen ist und ob schon einmal Nebel abgegeben wurde. Ist beides nicht der Fall, wird Nebel ausgelöst.
Wenn keine Hand im Maul steckt, wird die Methode augenAusschalten() aufgerufen. Sie dreht die Augen nach hinten und schaltet die LEDs ab. Gleichzeitig setzt sie den Nebel-Timer zurück und setzt die Variable nebelAbgegeben auf false.
#include <Servo.h> int ledPin = 7; int servoPinAugen = 2; int servoPinNebel = 3; int irPin = A0; int irSchaltgrenze = 300; // muss auf Hand im Maul eingestellt werden long nebelTimer = 0; int nebelTimeout = 2000; // Wartezeit, bis Nebel abgegeben wird boolean nebelAbgegeben = false; Servo servoAugen, servoNebel; void nebel() { delay(random(1000)); servoNebel.write(15); delay(300); servoNebel.write(0); } void augenEinschalten() { if (millis()%4000<10){ digitalWrite(ledPin, LOW); delay(100); digitalWrite(ledPin, HIGH); } digitalWrite(ledPin, HIGH); servoAugen.write(180); } void augenAusschalten() { digitalWrite(ledPin, LOW); servoAugen.write(0); } void setup() { Serial.begin(115200); servoAugen.attach(servoPinAugen); servoNebel.attach(servoPinNebel); pinMode(ledPin, OUTPUT); servoNebel.write(0); servoAugen.write(0); } void loop() { Serial.println(analogRead(irPin)); if (analogRead(irPin) > irSchaltgrenze) { augenEinschalten(); if ((nebelTimer+nebelTimeout<millis())&&(nebelAbgegeben==false)){ nebel(); nebelAbgegeben=true; } } else { augenAusschalten(); nebelTimer = millis(); nebelAbgegeben = false; } delay(10); }
Aufbau des Projektes
Ich habe das große Glück, eine CNC-Maschine zu besitzen. Es ist die Shapeoko MAX und ich habe sie von https://myhobby-cnc.de. Allerdings reicht für das Projekt auch eine Sticksäge und etwas Kreativität. Die Layout-Dateien habe ich dir auf Github (https://github.com/StefanHermannBerlin/Arduino-Halloween-2018) bereitgestellt.
Ich habe die Reliefs ausgefräst und dann alles schwarz lackiert. Dann bin ich mit einer Lackierwalze und weißem Lack über die Oberfläche gegangen. Dabei entsteht ein fleckiger Effekt, den ich ganz schön fand.
Auf dem unteren Bild siehst du den Aufbau. Die Augen habe ich aus der Backabteilung aus unserem Supermarkt, aber ein paar bemalte Tischtennisbälle sind mindestens genauso gut. Die Augen sind auf einer M8 Welle befestigt. Ich habe auf die Achse des Servos eine M8-Mutter mit Heißkleber geklebt und das funktioniert ziemlich gut. Unter den Augen sind die zwei LEDs geklebt. Sie beleuchten die Augen von unten, was noch mal extra gruselig aussieht.
Der IR-Sensor ist in einer Kunststoffbox direkt über den oberen Zähnen des Totenkopfes nach unten sehend angebracht.
Die Kunststoffbox habe ich hinten aufgesägt, um Süßigkeiten nachzulegen. Sie ist an den Totenkopf angeschraubt und bietet Stabilität für den Aufbau. Obendrauf steht die Nebelmaschine, die durch ein Loch in der Rückwand der Box Nebel durch Nase und Augenhöhlen bläst. (Die weißte Powerbank oben auf der Box im Bild ist übrigens nur zum Testen.)
Achtung! Du solltest unbedingt testen, ob der Nebel aus deiner Maschine zu heiß ist und ob sich jemand daran verletzen könnte. Bei meiner Nebelmaschine ist der Nebel eher kalt.
Projekt als Video
Übrigens gibt es das Projekt auch als Video :-)
Corona-Hinweis
In diesem Jahr ist alles etwas verrückt und ich weiß nicht, ob wir überhaupt Halloween-Besucher sehen werden. Um diese aber nicht zu gefährden, empfehle ich – nein, ich bin kein Virologe – die Box nach jeder Besuchergruppe mit Desinfektion einzusprühen und eine saubere Schüssel mit neuen Süßigkeiten reinzustellen. Auf der anderen Seite kommt man sich mit dem Halloween-Süßigkeitenspender wenigstens nicht zu nahe.
So. Ich hoffe, du hast mit dem Nachbau genau so viel Spaß wie ich und endlich einen Grund, dir eine Nebelmaschine zu besorgen. Wenn du Fragen hast, dann stelle sie hier gern in den Kommentaren.
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs