
Schokonüsse sind schon was feines. Das Problem: sie sind immer so schnell aufgegessen. Gut, wenn man da einen Schokonussautomaten hat, der nur alle 4 bis 6 Minuten seinen leckeren Inhalt an die begierigen Mäuler verteilt. Eine rot/grün Anzeige zeigt an, ob man wieder auf eine neue Nuss hoffen kann.
Wer sich diesen Automaten mit den unteren aufgeführten Druckdateien selber basteln möchte, findet hier eine kleine Bastelanleitung.
Hier sind die Dateien für den Druck.
Und hier der Quellcode für eine Programmierung des ESP8266 für das oben gezeigte Board mit passender Erweiterung. Bitte die Pinbelegung beachten.
#include <Servo.h> Servo einzeln; Servo ruettler; int aktPos=90; int pause = 50; int gruen = D3; int rot = D4; int ruettel = D0; int einzel = D5; int schalter = A0; int auslese=0; int warten = 12;// 0000; // Startzeit zum Warten int offen = 100; // Öffnungszeit in Milisekunden int unten = 240; // Untere Dauer Wartezeit in Sekunden int oben = 360; // Obere Dauer Wartezeit in Sekunden void setup() { Serial.begin(115200); Serial.println("Start"); ruettler.attach(ruettel,1000,2325); einzeln.attach(einzel,1000,2325); pinMode(rot, OUTPUT); pinMode(gruen, OUTPUT); pinMode(schalter, INPUT); digitalWrite(rot, HIGH); digitalWrite(gruen, LOW); delay(warten); // Warten nach Einschalten digitalWrite(rot, LOW); digitalWrite(gruen, HIGH); einzeln.write(91); } void ruetteln() { digitalWrite(rot, HIGH); digitalWrite(gruen, LOW); delay(500); //Pause vor dem Rütteln for (int i = 90; i<=180; i=i+5){ ruettler.write(i); delay(pause); } for (int i=0; i < 10; i++) { ruettler.write(170); ruettler.write(180); } for (int i = 180; i>=90; i=i-5){ ruettler.write(i); delay(pause); } for (int i=0; i < 10; i++) { ruettler.write(85); ruettler.write(95); } for (int i = 90; i>=0; i=i-5){ ruettler.write(i); delay(pause); } for (int i=0; i < 10; i++) { ruettler.write(10); ruettler.write(0); } for (int i = 0; i<=90; i=i+5){ ruettler.write(i); delay(pause); } for (int i=0; i < 10; i++) { ruettler.write(95); ruettler.write(85); } } void ausgabe() { einzeln.write(1); delay(offen); einzeln.write(91); ruetteln(); warten = random(unten, oben); delay(warten*1000); digitalWrite(rot, LOW); digitalWrite(gruen, HIGH); } void loop() { // put your main code here, to run repeatedly: auslese = analogRead(schalter); if (auslese > 512) { ausgabe(); } }