Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Coin Op Persönlicher Verkaufsautomat

Komponenten und Verbrauchsmaterialien

FriendlyARM 1/4 Sperrholz
Sperrholz auf die im Diagramm angegebenen Maße zuschneiden
× 4
3/4" Sperrholzblockierung
Sperrholz in Streifen 3/4" breit und so lang wie das Teil, mit dem es verbunden ist, schneiden, siehe Diagramm
× 1
LAFVIN 5 Sätze 28BYJ-48 ULN2003 5V Schrittmotor + ULN2003 Treiber Board für Arduino
Diese Motoren können jeden Leckerbissen, den Sie in die Maschine geben, schieben
× 1
PC-Zubehör - Connectors Pro IDC 1,27 mm Raster Regenbogenfarbenes Flachband Kabel für 2,54 mm Steckverbinder (50P-10FT)
Wird benötigt, um die Maschine sauber und professionell zu machen
× 1
Glarks 635Pcs Dupont Steckergehäuse Stecker/Buchse Stiftstecker 40-polig
Wird benötigt, um die Maschine sauber und professionell zu machen
× 1
Gamelec-Illuminated-Replacement-Microswitch
Muss Knöpfe haben
× 1
Breadboard (generisch)
Lötplatten funktionieren auch gut
× 1
30-teiliges doppelseitiges PCB-Prototyp-Kit
Nur ein oder zwei benötigt, aber die perfekte Größe für zukünftige Projekte
× 1
Arduino Mega 2560
Der verwendete Controller war der Mega 2560
× 1
Tolako 5v Relaismodul für Arduino ARM
Wird benötigt, um eine Überhitzung der Motoren zu vermeiden
× 1
HiLetgo 2pcs 1602 Serielles LCD-Modul-Display
Ohne dies wissen Sie nicht, welcher Knopf gedrückt wurde
× 1
LED-Lichtstreifen
Optional
× 2
50 Fuß 8-Gauge massiver SD-Erdungsdraht aus blankem Kupfer
Hiermit werden die Spulen hergestellt
× 1
Flacher Regalteiler aus Metall
× 1

Notwendige Werkzeuge und Maschinen

Tisch- oder Motorsäge
Es sei denn, Sie haben irgendwo einen Holzschnitt
Lötkolben (generisch)
Heißklebepistole (generisch)
Vergiss auch die Klebestifte nicht

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

DIE PERSÖNLICHE VERKAUFSMASCHINE

Dieses Projekt ist ein schrittweiser Aufbau eines persönlichen Verkaufsautomaten. Der Automat kann mit Ihren Lieblingssnacks gefüllt oder ins Büro gebracht werden, damit Sie mit Ihrem Team Leckereien teilen können. Schaut es euch an und lasst mich eure Meinung wissen.

Aufbau der Maschine :

Ich werde mich in diesem ganzen Text auf die Diagramme der Maschine beziehen. Bitte beziehen Sie sich zur Erläuterung/zum Verständnis auf die Diagramme.

Die Abmessungen der Maschine sind 21" B x 18" T x 24 1/4" H (Box Abmessungen)

2 Platten 18" D x 23 3/4" H (Seiten)

2 Platten 21" B x 18" T (oben und unten)

2 Platten 21" B x 24 1/4" H (Vorder- und Rückseite)

Die Trennwand hat eine Größe von 48 m T x 23 3 4 m H.

Internes Regal ist 13" B x 12" T (mal 2, oberes und unteres Regal)

Die Regale sind 8 Zoll voneinander entfernt 13 Zoll breit 12 Zoll tief

Jeder blaue Block auf dem Schalttafeldiagramm ist ein ¾”B x ¾”H Montagepunkt so tief wie die Schalttafel

Bauen Sie die Box wie in der Abbildung gezeigt zusammen und verwenden Sie hier die 3/4"-Blockierung an jedem der Verbindungspunkte. Beachten Sie, dass die Seitenwände oben auf der unteren Platte und unter der oberen Platte sitzen. Die Umfangswände sollten 21" W . messen von 24 1/4" H.

Die Trennwand muss vor der Installation eingerichtet werden. Messen Sie von oben 16 1/4" nach unten und befestigen Sie dort die Blockierung für das untere Regal. Messen Sie 8 1/4" von der Oberseite nach unten und bringen Sie die Blockierung für das obere Regal an. Führen Sie diese Schritte an der linken Wand (von der Vorderseite der Maschine aus gesehen) aus, damit Sie die Blockierung für die oberen und unteren Regale anbringen können.

**** Beachten Sie, dass das untere Regal zuerst installiert werden muss, da sonst die Befestigung an der Blockierung sehr schwierig ist.

Sobald die Blockierung für die Regale installiert ist, verwenden Sie die 13 "x 12" Paneele und installieren Sie eine an jedem Blockierungssatz. Dadurch wird die Trennwand automatisch an der richtigen Stelle aufgestellt. Anschließend sichern Sie die Blockierung oben und unten an der rechten Seite der Trennwand. Befestigen Sie es dann an der oberen und unteren Platte. Dies wird Ihre Struktur vollständig sichern.

Installieren Sie die Rückwand und bereiten Sie sich auf die Motorinstallationen vor. Stellen Sie sicher, dass Sie die Spulenräder gedruckt haben, damit Sie sie messen und Ihre Bohrlöcher einrichten können. Messen Sie die Räder und fügen Sie 1/4 "zur Höhe hinzu, damit Platz für die Spule bleibt. Sie können dies je nach Material nach Bedarf anpassen. Messen Sie über 6 1/2" auf dem Regal, um es zu markieren Mitte. Messen Sie über 3 1/4 ", um die Mitte jedes Regalabschnitts zu finden. Verwenden Sie die Höhenmessung, die Sie vor kurzem aufgezeichnet haben, um die Bohrpunkte zu finden. Bohren Sie ein Loch, mit dem Sie das Rad mit dem Motor verbinden können, ohne dass die Radwelle reibt Beenden Sie die Montage der Motoren und das Einschrauben der Befestigungselemente.

Einrichten des Motorrelais:

Verbinden Sie die Stifte wie folgt. Verwenden Sie den Chip L293D (Kerbe nach links) (im Schaltplan), damit Sie das Relais steuern können. Dadurch können Sie die Motoren an die Stromversorgung anschließen.

(Von links nach rechts beginnend)

Pin 1 mit Pin Buchse 10 am Controller verbinden (Im Schaltplan)

Pin2 mit Pin-Buchse 9 am Controller verbinden (Im Schaltplan)

Pin 3 mit der positiven Seite des Relais verbinden (mit den 3 Pins zu Ihnen zeigend, Pin links) (Im Schaltplan)

Pin 4 mit 12V Masse am Steckbrett verbinden (Im Schaltplan)

Pin 5 nicht belegt (im Schaltplan)

Pin 6 mit Masse des Relais verbinden (mit den 3 Pins zu Ihnen zeigend, Pin rechts) (Im Schaltplan)

Pin 7 mit Pin Buchse 8 am Controller verbinden (Im Schaltplan)

Pin 8 mit +12V am Steckbrett verbinden (im Schaltplan)

Verbinden Sie den mittleren Pin am Relais mit +12V am Steckbrett (im Schaltplan)

Verbinden Sie den hinteren rechten Pin des Relais (mit den 3 Pins zu Ihnen zeigend, Pin hinten rechts) mit der positiven Leitung zu den Motortreibern (im Schaltplan)

Bildschirm- und Tasteninstallation:Bildschirm - Wählen Sie eine Stelle auf der rechten Seite der Maschine (von vorne auf die Maschine schauen) und markieren Sie das Loch, das für den Anzeigeteil des Bildschirms gemacht werden muss (2,53937" x 0,5708661) Taste - Wählen Sie eine Stelle auf der rechten Seite der Maschine (von vorne auf die Maschine schauen) und markieren Sie die Löcher, die für die 4 Knöpfe gemacht werden müssen. Die Löcher müssen 1,10236" groß sein, wenn Sie genau den gleichen Knopf in der verwenden Liste der Einzelteile. Ich verwende gerne einen Bohrer, der kleiner ist als benötigt, und Sandpapier, um ihn auf die erforderliche Größe zu bringen.

Denken Sie daran, dass Sie sicherstellen müssen, dass sich alle Verbindungen genau an den gleichen Stellen befinden wie in der obigen Abbildung. Die im Diagramm gezeigten LEDs sind die LEDs, die in die Drucktasten eingebaut sind. Die Diagramme zeigen sie separat, aber das dient nur der Anzeige und erleichtert das Lesen des Schaltplans.

Schließen Sie jeden Motor an den mitgelieferten Treiber an. Verbinden Sie dann jeden Treiber wie folgt mit dem Controller:

Motor-Setup:

Die Stromversorgung sollte an die 12-V-Seite des Steckbretts angeschlossen werden. Dieser Strom kommt aus dem ATX-Netzteil, das wir am Ende vorbereiten werden. Verbinden Sie dann die 4 "In"-Pins des Treibers mit dem Controller. Diese Pins sind wie folgt

********* NICHT MIT DEN ERSTEN 2 PINS IN DIESEM BLOCK VERBINDEN ES SIND 5V PINS - IN DIESEM PROJEKT NICHT VERWENDET *********

Motor 1:Blaue Pins 22, 24, 26, 28 (im Schaltplan)

Motor 2:Gelbe Pins 23, 25, 27, 29 (Im Schaltplan)

Motor 3:Grüne Pins 30, 32, 34, 36 (im Schaltplan)

Motor 4:Rote Pins 31, 33, 35, 37 (im Schaltplan)

Schaltflächenverbindungen:

Verbinden Sie eine Seite von Taster 1 mit 5 V, die andere Seite mit einem geerdeten 220-Widerstand zusammen mit Analog Pin A0 (im Schaltplan)

Verbinden Sie eine Seite von Taster 2 mit 5 V, die andere Seite mit einem geerdeten 220-Widerstand zusammen mit Analog Pin A1 (im Schaltplan)

Verbinden Sie eine Seite von Taster 3 mit 5 V, die andere Seite mit einem geerdeten 220-Widerstand zusammen mit Analog Pin A2 (im Schaltplan)

Verbinden Sie eine Seite von Taster 4 mit 5 V, die andere Seite mit einem geerdeten 220-Widerstand zusammen mit Analog Pin A3 (im Schaltplan)

LCD-BILDSCHIRM:

Verbinden Sie den Bildschirm mit der 5-V-Seite des Steckbretts für Strom und Masse

Pins sind wie folgt:

Pin 1:Mit Masse verbinden (Im Schaltplan)

Pin 2:An 5V Strom anschließen (im Schaltplan)

Pin 3:Mit einstellbarem Potentiometer verbinden (Abbildung unten) Unterer linker Pin mit Masse, unten rechts mit Strom und oberer Pin mit Pin 3 auf dem LCD (Im Schaltplan stellen Sie so den Kontrast auf dem LCD ein, damit der Text scharf ist und sauber)

Pin 4:Erster Signalpin zu Controller Pin Buchse 2 (Im Schaltplan)

Pin 5:Mit Masse verbinden (Im Schaltplan)

Pin 6:Zweiter Signalpin zu Controller Pin Buchse 3 (Im Schaltplan)

Pin 7:NICHT VERWENDET

Pin 8:NICHT VERWENDET

Pin 9:NICHT VERWENDET

Pin 10:NICHT VERWENDET

Pin 11:Dritter Signalpin zu Controller Pin Buchse 4 (Im Schaltplan)

Pin 12:Vierter Signalpin zu Controller Pin Buchse 5 (Im Schaltplan)

Pin 13:Fünfter Signalpin zu Controller Pin Buchse 6 (Im Schaltplan)

Pin 14:Sechster Signalpin zu Controller Pin Buchse 7 (Im Schaltplan)

Pin 15:An 5V Strom anschließen (Im Schaltplan)

Pin 16:Mit Masse verbinden (Im Schaltplan)

ATX-STROMVERSORGUNG :

Schneiden Sie nur die Kabel ab, die für die Stromversorgung des Geräts benötigt werden. Die anderen Drähte sind im Kunststoffstecker sicherer und ermöglichen es Ihnen, ihn bei Bedarf für andere Projekte zu verwenden.

ATX-Pins:

Den schwarzen Draht Pin 3 (Masse) und den grünen Draht Pin 16 (Signal) abschneiden und abisolieren. Bringen Sie diese Drähte an einem Schalter an, damit Sie die Maschine ein- und ausschalten können (Im Schaltplan)

Schneiden und abisolieren (Masse) des schwarzen Drahtes Pin 7 und (+12V) des gelben Drahtes Pin 10. Bringen Sie diese Drähte an der 12-V-Seite des Steckbretts an, die mit gelben und schwarzen Anschlüssen gekennzeichnet ist. (Im Schaltplan)

Schneiden und abisolieren (Masse) des schwarzen Drahts Pin 24 und (+12 V) des gelben Drahts Pin 11. Verbinden Sie diese Drähte mit einem kompatiblen Anschluss, um die Arduino-Platine mit Strom zu versorgen (im Schaltplan)

Schneiden und abisolieren (Masse) schwarzen Drahtstift 19 und (+5V) roten Drahtstift 21. Befestigen Sie diese Drähte an der 5V-Seite des Steckbretts (im Schaltplan)

Regalteiler und -spulen:

So richten Sie Ihre Regale und Extruder ein.

Regale - In der Mitte 6 1/2" von der linken Seitenwand (von vorne auf die Maschine gesehen) oder Trennwand sollte eine Markierung von den obigen Stufen sein. Verwenden Sie das flache Metall und biegen Sie es in die Oberseite eines a Dreieck. Sieht genau so aus "^" Dies dient als Mittelteiler. Zentrieren Sie das Dreieck über der mittleren Markierung auf dem Regal. Wiederholen Sie dies für das zweite Regal. Verwenden Sie Heißkleber, um es zu befestigen. Ich habe auch Folien an den Seiten angebracht, aber sie sind optional.

Spulen - Um die Spulen zu erstellen, finden Sie zuerst ein 1 1/2 "Rohr. Ein Rohr, ein Dichtrohr, eine Sprühdose oder ein ähnliches Objekt reicht aus. Ein Trick besteht darin, ein Gummiband zu nehmen und es von oben nach unten um die Länge zu wickeln des Rohres. Verfolgen Sie die gerade Linie auf jeder Seite des Bandes auf beiden Seiten des Rohres. Sobald Sie parallele Linien auf beiden Seiten haben, verwenden Sie ein Maßband, um die nächsten Punkte zu markieren. Wählen Sie eine Seite aus und messen Sie in 1 "und markieren Sie es , dann messen Sie 2 "von dort aus, markieren Sie es und machen Sie 2" Abstände ganz nach unten in der Röhre. Markieren Sie nun auf der anderen Seite des Rohres nur 2"-Intervalle. Beginnen Sie mit der Herstellung der Spule auf der 1"-Seite des Rohres und fahren Sie fort, Ihre Spule so zu machen, dass sie jede Markierung auf beiden Seiten des Rohrs berührt. Dadurch erhalten Sie einen Abstand von 5,2 cm zwischen den Sprossen. Sollte für die meisten Gegenstände groß genug sein. Wenn Sie ihn für Candy Bard verwenden möchten, kürzen Sie die Spule auf 1 Zoll, reduzieren Sie einfach die obige Formel um die Hälfte.

Verbinden der Spulen mit den 3D-gedruckten Rädern. Denken Sie daran, dass es einige hergestellte Räder gibt, die funktionieren. Schau mal bei Amazon vorbei.

Auf der 1"-Seite der Spule klappen Sie diese Spule zusammen, sodass sie einen Kreis bildet. Verkürzen Sie dann den Durchmesser, um etwas kleiner als das Rad zu sein. Wenn die Spule fertig ist, passen Sie sie um den Rand des Rads an. Dadurch sollte sich die Spule zusammendrücken die Kante des Rades und verhindern Sie, dass es verrutscht. Wenn Sie mit der Passform zufrieden sind, nehmen Sie einen kleinen Tupfer Heißkleber und legen Sie es auf das Rad am Ende der Spule, um es in Position zu halten.

LED-Streifen:

Verbinden Sie das Pluskabel mit dem +12V-Pin auf der 12V-Seite des Steckbretts. Verbinden Sie das Erdungskabel mit dem Erdungsstift auf der 12-V-Seite der Steckplatine (nicht im Diagramm)

BITTE STELLEN SIE ALLE FRAGEN, DIE SIE HABEN, DAMIT ICH BEI DER AKTUALISIERUNG UNTERSTÜTZEN KANN, UM DIESES PROJEKT ZUM EINFACHSTES PROJEKT ÜBERHAUPT ZU MACHEN.

Code

  • Automaten - OHNE LED-LEUCHTEN WECHSELN
  • Verkaufsautomat - MIT WECHSELNDEN LED-LEUCHTEN
  • Münzprüfer und vollständiger Code
Automaten - OHNE LED-LEUCHTEN WECHSELNArduino
Alles, was Sie brauchen, um das Projekt abzuschließen und zu verstehen
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  / /inklusive Schrittmotorbibliothek//Relay Setup#define ENABLE 10#define DIRA 8#define DIRB 9//Define "i"int i;//Defining Pins Section//Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28; // Stepper Connect 2int stepIN1Pin1 =23; int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN4Pin1 =29;//Stepper Connect 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//Stepper Connect 4int stepIN1Pin3 =31;int stepIN2 =33;int stepIN3Pin3 =35;int stepIN4Pin3 =37; // Schritte definierenint stepsPerRevolution =2048; // Anzahl der Schritte pro Umdrehung // Tasten definieren Pin Portsconst Int button1Pin =A0; // Taster 1 Analog Pin A0const int button2Pin =A1; // Taster 2 Analog Pin A1const int button3Pin =A2; // Taste 3 Analog Pin A2const int button4Pin =A3; // Taster 4 Analog Pin A3//jeden Stepper definieren// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN4Pin1);//3( stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);void setup() { // Taster-Pin-Eingang zuweisen:pinMode(PUT1Pin, IN) pinMode (button2Pin, INPUT); pinMode (button3Pin, INPUT); pinMode (button4Pin, EINGANG); // Pin-Ausgang zuweisen PinMode (ENABLE, OUTPUT); pinMode (DIRA, AUSGANG); pinMode (DIRB, OUTPUT); // Stepper Speed ​​zuweisen myStepper0.setSpeed ​​(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); // LCD-Anzeige initialisieren lcd.begin (16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wählen Sie Ihren Artikel aus"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");}void loop() {// Tastenzuweisung lesen Int button1State, button2State, button3State, button4State; button1State =digitalRead (button1Pin); button2State =digitalRead (button2Pin); button3State =digitalRead (button3Pin); button4State =digitalRead (button4Pin); digitalWrite(ENABLE, HIGH); // Zustand setzen für (i=0;i<5;i++); // Aktion definieren, wenn Taste 1 gedrückt wird if (((button1State ==LOW) &&!(button2State ==LOW)))// wenn wir Taste 1 ODER Taste 2 drücken {digitalWrite(DIRA,HIGH); // Relais DigitalWrite (DIRB, LOW) einschalten; lcd.clear(); lcd.setCursor(2, 0); lcd.print("Abgabe"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); myStepper0.step(stepsPerRevolution); // Motor laufen lassen lcd.clear (); lcd.setCursor(2, 0); lcd.print("Bitte nehmen"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); Verzögerung (2500); lcd.setCursor(0, 0); lcd.print("Schaltflächenstatus 1"); lcd.setCursor(2, 1); lcd.print("1 2 3 oder 4"); digitalWrite (DIRA, LOW); // Relais ausrücken DigitalWrite (DIRB, LOW); } // Aktion definieren, wenn Taste 2 gedrückt wird if (((button2State ==LOW) &&!(button1State ==LOW))) // wenn wir Taste 1 ODER Taste 2 drücken {digitalWrite(DIRA,HIGH); // Relais DigitalWrite (DIRB, LOW) einschalten; lcd.clear(); lcd.setCursor(2, 0); lcd.print("Abgabe"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); myStepper1.step (stepsPerRevolution); // Motor ausführen lcd.clear (); lcd.setCursor(2, 0); lcd.print("Bitte nehmen"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); Verzögerung (2500); lcd.setCursor(0, 0); lcd.print ( "Schaltflächenstatus 2"); lcd.setCursor(2, 1); lcd.print("1 2 3 oder 4"); digitalWrite (DIRA, LOW); // Relais ausrücken DigitalWrite (DIRB, LOW); } // Aktion definieren, wenn Taste 3 gedrückt wird if (((button3State ==LOW) &&!(button4State ==LOW))) // wenn wir Taste 1 ODER Taste 2 drücken {digitalWrite(DIRA,HIGH); // Relais DigitalWrite (DIRB, LOW) einschalten; lcd.clear(); lcd.setCursor(2, 0); lcd.print("Abgabe"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); myStepper2.step (stepsPerRevolution); // Motor ausführen lcd.clear (); lcd.setCursor(2, 0); lcd.print("Bitte nehmen"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); Verzögerung (2500); lcd.setCursor(0, 0); lcd.print ( "Schaltflächenstatus 3"); lcd.setCursor(2, 1); lcd.print("1 2 3 oder 4"); digitalWrite (DIRA, LOW); // Relais ausrücken DigitalWrite (DIRB, LOW); } // Aktion definieren, wenn Taste 4 gedrückt wird if (((button4State ==LOW) &&!(button3State ==LOW))) // wenn wir Taste 1 ODER Taste 2 drücken {digitalWrite(DIRA,HIGH); // Relais DigitalWrite (DIRB, LOW) einschalten; lcd.clear(); lcd.setCursor(2, 0); lcd.print("Abgabe"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); myStepper3.step (-stepsPerRevolution); // Motor ausführen lcd.clear (); lcd.setCursor(2, 0); lcd.print("Bitte nehmen"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); Verzögerung (2500); lcd.setCursor(0, 0); lcd.print ( "Schaltflächenstatus 4"); lcd.setCursor(2, 1); lcd.print("1 2 3 oder 4"); digitalWrite (DIRA, LOW); // Relais ausrücken DigitalWrite (DIRB, LOW); }}
Verkaufsautomat - MIT WECHSELNDEN LED-LEUCHTENC#
Sehen Sie sich das Video an!
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  //inklusive Schrittmotorbibliothek//Relais-Setup#define ENABLE 10#define PinA 8#define PinB 9#define REDPIN 38#define GREENPIN 39#define BLUEPIN 40//Define "i"int i;//Define "RGB"int r, g , b; // Definieren des Pins-Abschnitts // Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//Stepper Connect 2int stepIN1Pin1 =23;int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN4Pin1 =29;//Stepper Connect 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//Stepper Connect 4int stepIN1Pin3 =31;int stepIN2Pin3 =33;int stepIN3Pin3 =35;int stepIN4Pin3 =37; // Definiere Schritteint stepsPerRevolution =2048; // Anzahl der Schritte pro Umdrehung // Tasten definieren Pin Portsconst Int button1Pin =A0; // Taster 1 Analog Pin A0const int button2Pin =A1; // Taster 2 Analog Pin A1const int button3Pin =A2; // Taste 3 Analog Pin A2const int button4Pin =A3; // Taster 4 Analog Pin A3//jeden Stepper definieren// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN4Pin1);//3( stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);void setup() { // Taster-Pin-Eingang zuweisen:pinMode(PUT1Pin, IN) pinMode (button2Pin, INPUT); pinMode (button3Pin, INPUT); pinMode (button4Pin, EINGANG); // Pin-Ausgang zuweisen PinMode (ENABLE, OUTPUT); pinMode (PinA, AUSGANG); pinMode (PinB, AUSGANG); // LED-Streifen-Pin-Setup PinMode (REDPIN, OUTPUT); pinMode (GREENPIN, AUSGANG); pinMode (BLUEPIN, AUSGANG); // Stepper Speed ​​zuweisen myStepper0.setSpeed ​​(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); // LCD-Anzeige initialisieren lcd.begin (16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wählen Sie Ihren Artikel aus"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4"); analogWrite (REDPIN, 256); analogWrite (GREENPIN, 256); analogWrite(BLUEPIN, 256);}void loop() {// Tastenzuweisung lesen Int button1State, button2State, button3State, button4State; button1State =digitalRead (button1Pin); button2State =digitalRead (button2Pin); button3State =digitalRead (button3Pin); button4State =digitalRead (button4Pin); digitalWrite(ENABLE, HIGH); // Zustand setzen für (i =0; i <5; i++); // Aktion definieren, wenn Taste 1 gedrückt wird if (((button1State ==LOW) &&!(button2State ==LOW)))// wenn wir Taste 1 ODER Taste 2 drücken { digitalWrite (PinA, HIGH); // Relais DigitalWrite aktivieren (PinB, LOW); analogWrite (REDPIN, 256); für (b =256; b> 0; b--); analogWrite (BLUEPIN, b); für (g =256; g> 0; g--); analogWrite (GREENPIN, g); für (g =256; g> 0; g--); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Abgabe"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); myStepper0.step(stepsPerRevolution); // Motor laufen lassen lcd.clear (); lcd.setCursor(2, 0); lcd.print("Bitte nehmen"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); Verzögerung (2500); lcd.setCursor(0, 0); lcd.print("Schaltflächenstatus 1"); lcd.setCursor(2, 1); lcd.print("1 2 3 oder 4"); für (b =0; b <256; b++); analogWrite (BLUEPIN, b); für (g =0; g <256; g++); analogWrite (GREENPIN, g); digitalWrite (PinA, LOW); // Relais DigitalWrite (PinB, LOW) deaktivieren; } // Aktion definieren, wenn Taste 2 gedrückt wird if (((button2State ==LOW) &&!(button1State ==LOW))) // wenn wir Taste 1 ODER Taste 2 drücken { digitalWrite (PinA, HIGH); // Relais DigitalWrite aktivieren (PinB, LOW); analogWrite (GREENPIN, 256); für (b =256; b> 0; b--); analogWrite (BLUEPIN, b); für (r =256; r> 0; r--); analogWrite (REDPIN, r); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Abgabe"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); myStepper1.step (stepsPerRevolution); // Motor ausführen lcd.clear (); lcd.setCursor(2, 0); lcd.print("Bitte nehmen"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); Verzögerung (2500); lcd.setCursor(0, 0); lcd.print ( "Schaltflächenstatus 2"); lcd.setCursor(2, 1); lcd.print("1 2 3 oder 4"); digitalWrite (PinA, LOW); // Relais DigitalWrite (PinB, LOW) deaktivieren; für (b =0; b <256; b++); analogWrite (BLUEPIN, b); für (r =0; r <256; r++); analogWrite (REDPIN, r); } // Aktion definieren, wenn Taste 3 gedrückt wird if (((button3State ==LOW) &&!(button4State ==LOW))) // wenn wir Taste 1 ODER Taste 2 drücken { digitalWrite (PinA, HIGH); // Relais DigitalWrite aktivieren (PinB, LOW); analogWrite (BLUEPIN, 256); für (r =256; r> 0; r--); analogWrite (REDPIN, r); für (g =256; g> 0; g--); analogWrite (GREENPIN, g); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Abgabe"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); myStepper2.step (stepsPerRevolution); // Motor ausführen lcd.clear (); lcd.setCursor(2, 0); lcd.print("Bitte nehmen"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); Verzögerung (2500); lcd.setCursor(0, 0); lcd.print ( "Schaltflächenstatus 3"); lcd.setCursor(2, 1); lcd.print("1 2 3 oder 4"); digitalWrite (PinA, LOW); // Relais DigitalWrite (PinB, LOW) deaktivieren; für (g =0; g <256; g++); analogWrite (GREENPIN, g); für (r =0; r <256; r++); analogWrite (REDPIN, r); } // Aktion definieren, wenn Taste 4 gedrückt wird if (((button4State ==LOW) &&!(button3State ==LOW))) // wenn wir Taste 1 ODER Taste 2 drücken { digitalWrite (PinA, HIGH); // Relais DigitalWrite aktivieren (PinB, LOW); analogWrite (REDPIN, 256); analogWrite (GREENPIN, 256); für (b =256; b> 0; b--); analogWrite (BLUEPIN, b); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Abgabe"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); myStepper3.step (-stepsPerRevolution); // Motor ausführen lcd.clear (); lcd.setCursor(2, 0); lcd.print("Bitte nehmen"); lcd.setCursor(3, 1); lcd.print("Ihr Artikel"); Verzögerung (2500); lcd.setCursor(0, 0); lcd.print ( "Schaltflächenstatus 4"); lcd.setCursor(2, 1); lcd.print("1 2 3 oder 4"); digitalWrite (PinA, LOW); // Relais DigitalWrite (PinB, LOW) deaktivieren; für (b =0; b <256; b++); analogWrite (BLUEPIN, b); }}
Münzprüfer und vollständiges CopdeC#
Vollständiger Code
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  //inklusive Schrittmotorbibliothek// Relais-Setup#define ENABLE 10//#define PinA 8//#define PinB 9//Transitor-Pins für LEDs#define REDPIN 38#define GREENPIN 39#define BLUEPIN 40//Define "i"//int i;//Define "RGB"int r, g, b;// Constantsconst int coinpin =21;const int ledpin =13;const int targetcents =100;// Variablesvolatile int cents =0;int credits =0;//definierender Pins-Abschnitt// Stepper Connect 1int stepIN1Pin =22;int stepIN2Pin =24;int stepIN3Pin =26;int stepIN4Pin =28;//Stepper Connect 2int stepIN1Pin1 =23;int stepIN2Pin1 =25;int stepIN3Pin1 =27;int stepIN4Pin1 =29;//Stepper Connect 3int stepIN1Pin2 =30;int stepIN2Pin2 =32;int stepIN3Pin2 =34;int stepIN4Pin2 =36;//Stepper Connect 4int stepIN1Pin3 =31;int stepIN2Pin3 =33;int stepIN3Pin3 =35;int stepIN4Pin3 =37;//define =stepsint stepsPerRevolution 2048; // Anzahl der Schritte pro Umdrehung // Tasten definieren Pin Portsconst Int button1Pin =A0; // Taster 1 Analog Pin A0const int button2Pin =A1; // Taster 2 Analog Pin A1const int button3Pin =A2; // Taste 3 Analog Pin A2const int button4Pin =A3; // Taster 4 Analog Pin A3//jeden Stepper definieren// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN4Pin1);//3( stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3); // Setupvoid setup () {// Zuweisen von Interrupt zu Pin und Bedingung AttachInterrupt (DigitalPinToInterrupt) , STEIGEND); // Taster-Pin-Eingang zuweisen:pinMode (button1Pin, INPUT); pinMode (button2Pin, INPUT); pinMode (button3Pin, INPUT); pinMode (button4Pin, EINGANG); // Relais-Pin-Ausgang zuweisen PinMode (ENABLE, OUTPUT); // PinMode (PinA, OUTPUT); // PinMode (PinB, OUTPUT); // LED-Streifen-Pin-Setup PinMode (REDPIN, OUTPUT); pinMode (GREENPIN, AUSGANG); pinMode (BLUEPIN, AUSGANG); // Stepper Speed ​​zuweisen myStepper0.setSpeed ​​(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); // LCD-Anzeige initialisieren lcd.begin (16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wählen Sie Ihren Artikel aus"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4"); analogWrite (REDPIN, 256); analogWrite (GREENPIN, 256); analogWrite(BLUEPIN, 256);}// Main loopvoid loop() { // If we've hit our target amount of coins, increment our credits and reset the cents counter if (cents>=targetcents) { credits =credits + 1; cents =cents - targetcents; } // If we haven't reached our target, keep waiting... else { } // Debugging zone lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print(cents); lcd.setCursor(3, 0); lcd.print("Coin Count"); lcd.setCursor(0, 1); lcd.print(credits); lcd.setCursor(3, 1); lcd.print("credit earned"); Verzögerung (1000); // Now, write your own code here that triggers an event when the player has credits! if (credits> 0) { // read button assignment int button1State, button2State, button3State, button4State; button1State =digitalRead(button1Pin); button2State =digitalRead(button2Pin); button3State =digitalRead(button3Pin); button4State =digitalRead(button4Pin); // digitalWrite(ENABLE, HIGH);// Set state // for (i =0; i <5; i++); // define action when button 1 is pressed if (((button1State ==LOW) &&!(button2State ==LOW)))// if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); for (g =256; g> 0; g--); analogWrite(GREENPIN, g); for (g =256; g> 0; g--); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper0.step(stepsPerRevolution); //run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); for (g =0; g <256; g++); analogWrite(GREENPIN, g); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); credits =credits - 1; cents =cents - cents; } // define action when button 2 is pressed if (((button2State ==LOW) &&!(button1State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(GREENPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); for (r =256; r> 0; r--); analogWrite(REDPIN, r); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper1.step(stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); for (r =0; r <256; r++); analogWrite(REDPIN, r); credits =credits - 1; cents =cents - cents; } // define action when button 3 is pressed if (((button3State ==LOW) &&!(button4State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //engage relay// digitalWrite(PinB, LOW); analogWrite(BLUEPIN, 256); for (r =256; r> 0; r--); analogWrite(REDPIN, r); for (g =256; g> 0; g--); analogWrite(GREENPIN, g); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper2.step(stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (g =0; g <256; g++); analogWrite(GREENPIN, g); for (r =0; r <256; r++); analogWrite(REDPIN, r); credits =credits - 1; cents =cents - cents; } // define action when button 4 is pressed if (((button4State ==LOW) &&!(button3State ==LOW))) // if we're pushing button 1 OR button 2 { digitalWrite(ENABLE, HIGH); //! engage relay// digitalWrite(PinB, LOW); analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); for (b =256; b> 0; b--); analogWrite(BLUEPIN, b); lcd.clear(); lcd.setCursor(2, 0); lcd.print("Dispensing"); lcd.setCursor(3, 1); lcd.print("Your Item"); myStepper3.step(-stepsPerRevolution);//run motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Please take"); lcd.setCursor(3, 1); lcd.print("Your Item"); delay(2500); digitalWrite(ENABLE, LOW); //disengage relay// digitalWrite(PinB, LOW); for (b =0; b <256; b++); analogWrite(BLUEPIN, b); credits =credits - 1; cents =cents - cents; } }}// Coin Increase loopvoid coinInterrupt() { // Each time a pulse is sent from the coin acceptor, interrupt main loop to add 5 cent and flip on the LED cents =cents + 5; digitalWrite(ledpin, HIGH);}

Schaltpläne

This is a complete Diagram of the system. It includes, ATX power supply, motors,LCD,LEDs, lights and controller

Herstellungsprozess

  1. EEG-Maschine
  2. Nähmaschine
  3. Wie funktioniert ein Pommes-Frites-Automat?
  4. Was ist ein Milchautomat?
  5. Wie kann ein Chip-Automat heiße und frische Chips liefern?
  6. Was ist ein Nudelautomat?
  7. Was ist ein Tee-Kaffee-Suppenautomat?
  8. Haben Sie eine gesunde Mahlzeit mit dem Meal Prep Vending Machine!
  9. Was kann man von einem Getränkeautomaten erwarten?
  10. Eis am Stiel-Automaten:das Geschäftspotenzial