//kaffeeautomat
#include <Servo.h>
Servo myservo; //servo objekt erstellen um servo steuern zu können
int pos = 0; //variable um servo position zu speichern
int duration = 0; //variable um die zeit zu messen
double cm = 0; //variable um die distanz zu einem objekt zu speichern
//fest definierte werte für vergleiche
#define no_obj_detected_cm 10
#define obj_detected_cm 3
void setup() {
myservo.attach(9); //servo ist an pin 9 angeschlossen
pinMode(12, INPUT); //button ist an pin 12 angeschlossen
pinMode(2, OUTPUT); //led ist an pin 2 angeschlossen
pinMode(7, OUTPUT); //trig ist an pin 7 angeschlossen
pinMode(4, OUTPUT); //echo ist an pin 7 angeschlossen
Serial.begin(9600);
}
void loop() {
Serial.println("bitte tasse in die maschiene einlegen");
//measur distance until cup is inserted into the machine. distance should be smaller than 3cm
//distanz messen bis tasse in die maschine eingelegt wird.
do {
//starte abstandssensor und messe distanz
digitalWrite(7, 1);
delayMicroseconds(10);
digitalWrite(7, 0);
duration = pulseIn(4, 1);
} while (duration / 58 > obj_detected_cm); //prüfe ob eine tasse eingelegt wurde. distanz muss kleiner als 3cm sein.
Serial.println("bitte knopf druecken um kaffee zu produzieren");
while(digitalRead(12) == 0); //warten bis benutzer die taste drückt
Serial.println("knopf wurde betätigt, kaffee wird mit servo gemahlen");
for (pos = 0; pos <= 180; pos += 1) { // servo 0-180 grad bewegen
// in steps of 1 degree
myservo.write(pos); // servo soll sich an die position 'pos' hinbewegen
delay(10); // warten bis servo die position erreicht
}
for (pos = 180; pos >= 0; pos -= 1) { //servo 180-0 grad bewegen
myservo.write(pos); // servo soll sich an die position 'pos' hinbewegen
delay(10); // warten bis servo die position erreicht
}
digitalWrite(2, 1); //led einschalten
Serial.println("vorsicht! heißer kaffee wird ausgeschenkt");
delay(100);
digitalWrite(2, 0); //led ausschalten
Serial.println("bitte kaffee entnehmen");
//distanz messen bis tasse entnommen wird
do {
//starte abstandssensor und messe distanz
digitalWrite(7, 1);
delayMicroseconds(10);
digitalWrite(7, 0);
duration = pulseIn(4, 1);
} while (duration / 58 < no_obj_detected_cm); //distanz tasse zum sensor ist größer als 10cm
}