Süßigkeitenspender
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
|
Apps und Onlinedienste
|
Über dieses Projekt
Das Projekt
Dies ist eine einfache Möglichkeit, einen Bonbonspender zu erstellen, indem nur:IR-Sensor, Servo und Druckknopf verwendet werden. Es kann in folgende Schritte unterteilt werden:
- Erstellen und Verwenden von Arduino Uno R3
- Kodierung und Einrichtung des Arduino
- Erstellen des Gehäuses und der mechanischen Teile
- Elektronik einbauen
- Testen und Verwenden
Hier ist ein kurzes Demonstrationsvideo:
Das Schreiben der Codierung war der schwierigste Teil für mich, da ich noch neu im Schreiben von Programmiersprachen bin, es aber nach mehreren Fehlern und der Hilfe von Herrn Google und Freunden schaffe. Das Schreiben von Codes ist die längste Zeit in diesem Teil des Projekts.
Vielen Dank an den Mann, der mich zu diesem Bonbonspender INSPIRIERT hat! Dies ist die vereinfachte Version von: https://www.hackster.io/gatoninja236/candy-dispenser-with-google-assistant-564724
Erstellen der Box und der mechanischen Teile
Dies ist der unterhaltsame Teil des Projekts. Ich habe mindestens einen ganzen Tag gebraucht, um es nach mehreren Fehlern und Teilen, die nicht passen, vollständig abzuschließen.
Schritt 1
Layout-Komponenten
Dies mag sehr chaotisch aussehen, aber dies ist der einfachste Weg, um jede Komponente auszusortieren und jedes Teil zu testen, um zu sehen, ob ein Fehler vorliegt. Ich habe verschiedene Farben von Drähten ausgelegt, damit es einfacher zu sehen ist. Ich habe alle Komponenten auf einem Stück Pappe ausgelegt und aussortiert, welches zuerst kommt.
Schritt 2
Die Box erstellen
Ich habe eine technische Zeichnung gezeichnet, wie die Box aussehen sollte. Die meisten Teile sind aus Karton und einige aus Acryl. Dann messe ich jedes Teil.
- Vorder- und Rückseite =20cm x 16cm (Rückseite ist Acryl)
- Seite - Seite =12cm x 16cm
- Oben &Unten =20cm x 12cm
Schritt 3
So sieht es aus, nachdem Sie alle zusammengeklebt haben (zuerst mit Klebeband).
Dann schneide ich Stellen für die Komponenten aus:
- LCD =7,2 cm x 2,5 cm
- Knöpfe =1,2 cm x 1,2 cm
Für die Tasse:
- Länge x Höhe =9cm x 12cm
- Breite x Tiefe =9cm x 9cm
Vergessen Sie nicht, auch die Sensoren auszuschneiden:
Ich habe den Spender zu Stufen gemacht, damit die Bonbons nicht gleich herunterfallen:
Schritt 4
Ich legte das Steckbrett und Arduino hintereinander. Ich benutze Acryl, um sie zusammen zu kleben. Auf diese Weise wird viel Platz gespart.
Schritt 5
Beginnen Sie mit dem Anbringen der Komponenten auf der Platine. Ich beginne mit LCD und Tasten.
Als nächstes, nachdem ich alle Kabel an den Komponenten verkabelt hatte, befestigte ich sie in der Mitte der Box.
Anbringen des Servos:
So sieht es von hinten aus. Ich habe auch einen Netzschalter hinzugefügt, um den Dispenser mit dem Akku einzuschalten.
Schritt 6
Der fertige Look.
Code
- Süßigkeitenspender
SüßigkeitenspenderArduino
//------LIBRARIES-----#include#include #include //------BIBLIOTHEK--- --// Setzen Sie die LCD-Adresse auf 0x27 für eine Anzeige mit 16 Zeichen und 2 ZeilenLiquidCrystal_I2C lcd(0x27, 16, 2);Servo myservo;int pos =90; // Servostartpositionint buttonCLK =7; // buttonIm Uhrzeigersinn pinint buttonAntiCLK =6; // buttonAntiClockwise pin //int sensorPin =2; // IR-Sensor zum Anschließen an den digitalen Pin Nr. 2 / / Int sensorState =0; // Variable sensorState zum Speichern von Statistiken über den Status des Sensorint set =0;const int AvoidPin =5; // Der ir-Hindernissensor wird an Pin 5void setup () angeschlossen {lcd.begin (); // das LCD initialisieren lcd.clear (); myservo.attach(9); // Servo Digital 9 PinMode (buttonCLK, INPUT); pinMode (buttonAntiCLK, INPUT); pinMode (vermeiden Sie Pin, INPUT); // setze den AvoidPin als INPUT Serial.begin (9600); LCD-Rücklicht(); // Schalte das Schwarzlicht ein lcd.setCursor(3,0); lcd.print("Willkommen bei"); lcd.setCursor(3,1); lcd.print ("Candy-Land"); Verzögerung (2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Wie viel Süßigkeiten?"); lcd.setCursor(0,1); lcd.print ("Ein bisschen viel"); delay(5000);}void loop(){ //----------DIES IST DIE IF-FUNKTIONEN FÜR TASTEN---------- if(digitalRead(buttonCLK) ==HIGH ) // buttonClockwise wird gedrückt { //TurnClockwise(); //Sensorerkennung (); lcd.clear(); lcd.print ("Bitte Tasse platzieren"); Verzögerung (2000); lcd.clear(); set =set + 1; } if(digitalRead(buttonAntiCLK) ==HIGH) // buttonAntiClockwise wird gedrückt {//TurnAntiClockwise(); //Sensorerkennung (); lcd.clear(); lcd.print ("Bitte Tasse platzieren"); Verzögerung (2000); lcd.clear(); set =set + 2; } if(set ==1) {IRCLK(); } if(set ==2) {IRAntiCLK(); } //---------- DIES IST DIE WENN-FUNKTIONEN FÜR TASTEN----------} Void TurnClockwise () { Serial.println ( "Candy 1 wird ausgegeben"); CandyText1(); // Candy Type Text anzeigen for(pos =90; pos <180; pos +=1) // geht von 0 Grad auf 180 Grad { myservo.write(pos); // dem Servo sagen, dass es in der Variablen 'pos' delay (15) zur Position gehen soll; // wartet 15 ms, bis das Servo die Position erreicht hat} if (pos ==180) { delay (2000); DankeText(); // Dankestext anzeigen}} TurnAntiClockwise () {Serial.println ( "Candy 2 wird ausgegeben"); CandyText2(); // Candy Type Text anzeigen for(pos =90; pos <180; pos +=1) // geht von 0 Grad auf 180 Grad { myservo.write(pos); // dem Servo sagen, dass es in der Variablen 'pos' delay (20) zur Position gehen soll; // wartet 15 ms, bis das Servo die Position erreicht hat} if (pos ==180) { delay (3000); DankeText(); // Dankestext anzeigen}} IRCLK () { delay (1000); // eine Verzögerung von 1s erstellen Boolean AvoidVal =digitalRead (avoidPin); // den Wert von Pin4 lesen lcd.setCursor (0,0); lcd.print("Erkennungsbecher"); lcd.setCursor(0,14); lcd.print("..."); if (avoidVal ==LOW) // wenn der Wert LOW ist { lcd.clear (); lcd.print("Pokal platziert"); Verzögerung (2000); Im Uhrzeigersinn drehen(); }} IRAntiCLK () ungültig machen (Verzögerung (1000); // eine Verzögerung von 1s erstellen Boolean AvoidVal =digitalRead (avoidPin); // den Wert von Pin4 lesen lcd.setCursor (0,0); lcd.print("Erkennungsbecher"); lcd.setCursor(0,14); lcd.print("..."); if (avoidVal ==LOW) // wenn der Wert LOW ist { lcd.clear (); lcd.print("Pokal platziert"); Verzögerung (2000); Gegen den Uhrzeigersinn drehen(); aufrechtzuerhalten. aufrechtzuerhalten. CandyText1() {lcd.clear(); lcd.setCursor(4,0); lcd.print("Gießen"); lcd.setCursor(1,1); lcd.print("Kleine Süßigkeit");}void CandyText2(){lcd.clear(); lcd.setCursor(4,0); lcd.print("Gießen"); lcd.setCursor(3,1); lcd.print("Lot Candy");}void ThankYouText(){lcd.clear(); lcd.setCursor(5,0); lcd.print("Danke"); lcd.setCursor(6,1); lcd.print("Sie"); Verzögerung (15); software_Reset();}void software_Reset() // Startet das Programm neu, setzt aber die Peripheriegeräte und Register nicht zurück{ asm volatile ("jmp 0"); }
Schaltpläne
Es sieht etwas kompliziert aus, aber folgen Sie der Farbverkabelung.Herstellungsprozess