Zahnputzmonster mit Arduino

Hui, die ersten Zeilen zu diesem Artikel stammen aus dem Dezember 2021... Damals war ich grade - ausgelost durch die Pandemie - in einer Maker-/ Digitalisierungseuphorieblase (siehe hier und hier). Ein paar Wochen später kam dann die Normalität (fast) zurück und mit K1 hatte ich definitiv nicht mehr soviel Zeit wie in den Monaten vorher. Jetzt ist das Monster aber fertig! Daher hier auch mal  endlich die Dokumentation.

Einleitung:

Durch die Beschäftigung mit den Möglichkeiten des Raspberry Pi landet man ganz schnell bei Arduino. Anders als die Pis sind diese Boards keine vollwertigen Computer, mit Betriebssystem usw. sondern einfache Entwicklerboards, auf denen einfach ein Programm läuft, sobald es Strom bekommt.

Das Projekt

Zum ersten Ausprobieren bastel ich mir ein kleines Zahnputzmonster.
Ziel: mit Leds wird angezeigt wo wie lange geputzt werden soll.

Teilprojekte:

1) Zusammenstecken
2) Programmieren
3) Zusammenlöten
4) Programm verfeinern
5) witziges Gehäuse bauen

Dokumentation

Eine ausführliche Dokumentation erspare ich euch.
Die wichtigsten Learnings:
– Lötkolben wird heiß ;-(
– und wenn ich Löte wird es wild und krum.
– Pinbelegung ist am Ende natürlich nicht so, wie am Anfang geplant.
–> also war die Verfeinerung meines Programms vor allem ein Suchen, warum denn jetzt was eigentlich wann blinkt und das neu zuweisen der Outputs.
Hier wäre mein Tipp: Programmiert sauberer. Das erste Programm hatte ich mit Pin-Nummer entworfen – nur war kein Zahn so vertratet wie ich das mal gedacht hatte.

Fazit:

Das Wichtigste: es hat Spaß gemacht und ich habe neue Ideen, was noch so kommen könnte.
Und für diese Ideen brauche ich natürlich ein dickes Buch und eine neue Werkstatt.

Code

/*
 * Zahnputztimer v0.6 - M.Metz
 */
// Benennung der Pins 
int agl = 12; // AugeLinks
int agr = 13; // AugeRechts
int ola = 5;  // Oben-Links-außen - passt
int oli = 4;  // Oben-Links-Innen - passt
int ova = 7;  // Oben-Vorne-Außen - kaput?
int ovi = 6;  // Oben-Vorne-Innen - passt
int ora = 9;   // Oben-Rechts-Außen - passt
int ori = 10;   // Oben-Rechts-Innen - passt
int ula = 2;  // Unten-Links-außen - passt
int uli = 3;  // Unten-Links-Innen - passt
int uva = 0;  // Unten-Vorne-Außen - passt
int uvi = 1;  // Unten-Vorne-Innen - passt
int ura = 8;   // Unten-Rechts-Außen - passt
int uri = 11;   // Unten-Rechts-Innen - passt


void setup() {
  // put your setup code here, to run once:
  // Pins sind alle auf Output gestellt
pinMode(agl, OUTPUT);
pinMode(agr, OUTPUT);
pinMode(ola, OUTPUT);
pinMode(oli, OUTPUT);
pinMode(ova, OUTPUT);
pinMode(ovi, OUTPUT);
pinMode(ora, OUTPUT);
pinMode(ori, OUTPUT);
pinMode(ula, OUTPUT);
pinMode(uli, OUTPUT);
pinMode(uva, OUTPUT);
pinMode(uvi, OUTPUT);
pinMode(ura, OUTPUT);
pinMode(uri, OUTPUT);}

void loop() {
  // put your main code here, to run repeatedly:
//Fertig machen

digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);

digitalWrite(oli, HIGH); delay(500); digitalWrite(oli, LOW);
digitalWrite(ola, HIGH); delay(500); digitalWrite(ola, LOW);
digitalWrite(ovi, HIGH); delay(500); digitalWrite(ovi, LOW);
digitalWrite(ova, HIGH); delay(500); digitalWrite(ova, LOW);
digitalWrite(ori, HIGH); delay(500); digitalWrite(ori, LOW);
digitalWrite(ora, HIGH); delay(500); digitalWrite(ora, LOW);
digitalWrite(ura, HIGH); delay(500); digitalWrite(ura, LOW);
digitalWrite(uri, HIGH); delay(500); digitalWrite(uri, LOW);
digitalWrite(uva, HIGH); delay(500); digitalWrite(uva, LOW);
digitalWrite(uvi, HIGH); delay(500); digitalWrite(uvi, LOW);
digitalWrite(ula, HIGH), delay(500); digitalWrite(ula, LOW);
digitalWrite(uli, HIGH); delay(500); digitalWrite(uli, LOW);

//Augen Blinken
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);

//Putzen - je 10 Sek. pro LED - in Summe also 2 Minuten
digitalWrite(oli, HIGH); delay(10000); digitalWrite(oli, LOW);
digitalWrite(ola, HIGH); delay(10000); digitalWrite(ola, LOW);
digitalWrite(ovi, HIGH); delay(10000); digitalWrite(ovi, LOW);
digitalWrite(ova, HIGH); delay(10000); digitalWrite(ova, LOW);
digitalWrite(ori, HIGH); delay(10000); digitalWrite(ori, LOW);
digitalWrite(ora, HIGH); delay(10000); digitalWrite(ora, LOW);
digitalWrite(ura, HIGH); delay(10000); digitalWrite(ura, LOW);
digitalWrite(uri, HIGH); delay(10000); digitalWrite(uri, LOW);
digitalWrite(uva, HIGH); delay(10000); digitalWrite(uva, LOW);
digitalWrite(uvi, HIGH); delay(10000); digitalWrite(uvi, LOW);
digitalWrite(ula, HIGH), delay(10000); digitalWrite(ula, LOW);
digitalWrite(uli, HIGH); delay(10000); digitalWrite(uli, LOW);

//Augen Blinken
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);

// Wilder Abschluss! jetzt darf alles gebutzt werden!
digitalWrite(oli, HIGH); delay(500); digitalWrite(oli, LOW);
digitalWrite(ola, HIGH); delay(500); digitalWrite(ola, LOW);
digitalWrite(ovi, HIGH); delay(500); digitalWrite(ovi, LOW);
digitalWrite(ova, HIGH); delay(500); digitalWrite(ova, LOW);
digitalWrite(ori, HIGH); delay(500); digitalWrite(ori, LOW);
digitalWrite(ora, HIGH); delay(500); digitalWrite(ora, LOW);
digitalWrite(ura, HIGH); delay(500); digitalWrite(ura, LOW);
digitalWrite(uri, HIGH); delay(500); digitalWrite(uri, LOW);
digitalWrite(uva, HIGH); delay(500); digitalWrite(uva, LOW);
digitalWrite(uvi, HIGH); delay(500); digitalWrite(uvi, LOW);
digitalWrite(ula, HIGH), delay(500); digitalWrite(ula, LOW);
digitalWrite(uli, HIGH); delay(500); digitalWrite(uli, LOW);
digitalWrite(oli, HIGH); delay(500); digitalWrite(oli, LOW);
digitalWrite(ola, HIGH); delay(500); digitalWrite(ola, LOW);
digitalWrite(ovi, HIGH); delay(500); digitalWrite(ovi, LOW);
digitalWrite(ova, HIGH); delay(500); digitalWrite(ova, LOW);
digitalWrite(ori, HIGH); delay(500); digitalWrite(ori, LOW);
digitalWrite(ora, HIGH); delay(500); digitalWrite(ora, LOW);
digitalWrite(ura, HIGH); delay(500); digitalWrite(ura, LOW);
digitalWrite(uri, HIGH); delay(500); digitalWrite(uri, LOW);
digitalWrite(uva, HIGH); delay(500); digitalWrite(uva, LOW);
digitalWrite(uvi, HIGH); delay(500); digitalWrite(uvi, LOW);
digitalWrite(ula, HIGH), delay(500); digitalWrite(ula, LOW);
digitalWrite(uli, HIGH); delay(500); digitalWrite(uli, LOW);

//Augen Blinken
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);

//Augen Blinken
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);

//Augen Blinken
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);
digitalWrite(agl, HIGH); delay(100); digitalWrite(agl, LOW);
digitalWrite(agr, HIGH); delay(100); digitalWrite(agr, LOW);
}

Kommentar verfassen