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

Snack-Automat mit Arduino

Komponenten und Verbrauchsmaterialien

Arduino UNO
Ich sollte stattdessen Arduino Mega verwenden, um mehr IO zu erhalten.
× 1
Sensorschild
× 1
DC-Motor 6V inklusive Rad
× 3
Infrarot- (Reflexions-) oder Linienfolgersensor zur Produkterkennung
× 3
Näherungssensor (elektromagnetisch), verwendet für Münzsensor Nummer 1
× 1
Abstandsunterbrecher (Infrarot/Optokoppler) Sensor, verwendet für Münzsensor Nummer 2
× 1
Netzteil 6V für Gleichstrommotor
× 1
Relais (generisch)
4 Schaltrelais
× 1
LCD (Nokia 5110 LCD)
× 1
LED (generisch)
Weiße LED
× 2
Drucktaste
Rot, Gelb und Grün
× 3

Apps und Onlinedienste

Arduino-IDE
Solidworks
oder ein 3D-Modellbauer

Über dieses Projekt

Einführung

Hallo, Grüße aus Indonesien.

Dieser Snackautomat ist mein letztes Projekt. Dieses Projekt wurde Ende 2015 abgeschlossen.

Das Ziel dieses Projekts ist es, einen Verkaufsautomaten zu entwickeln, der von einem Arduino-Mikrocontroller angetrieben wird und "alle billigen und leicht zu bekommenden" Komponenten verwendet, die im lokalen Geschäft erhältlich sind.

Dieses Video unten ist ein abschließendes Testvideo von Snack-Automaten, vom Zahlungs-/Münztest, der Produktauswahl und der Produktlieferung.

Das habe ich getan, um diese Ziele zu erreichen:

Schritt 1:Skizzieren Sie das Konzept

Denken Sie zuerst nach, das Konzept .

Diese Skizze ist meine allererste Idee, was ich bauen könnte. Es wird ein Snackautomat sein, der Münzen als Zahlungsmittel akzeptiert und ein Acrylgehäuse verwendet.

Wählen Sie Ihr Konzept aus und entwickeln Sie es weiter , versuche über alles nachzudenken, jedes Szenario, jede Bedingung.

Versuchen Sie, alles zu skizzieren, machen Sie sich keine Sorgen, wenn Ihre Zeichnung hässlich ist, sehen Sie sich meine Zeichnung ernsthaft an. :D

Der richtige Zeitpunkt, um über das Undenkbare nachzudenken, ist, bevor das Projekt überhaupt begonnen hat.

Schritt 2:3D-Modell erstellen

Vielleicht ist dieser Schritt nicht für jeden notwendig, aber für mich und für dieses Projekt ist er entscheidend.

Ich erstelle ein Solidworks-Modell. Und ich meine ein wirklich komplett fertiges Modell. Ich muss die Abmessungen des Produkts bestimmen, in diesem Fall ein Snackpaket. Die Größe der akzeptierten Münzen, die Größe der zurückgewiesenen Münzen, die Größe des Münzeinwurfs, die Größe der Münzrampe, die Größe des Druckknopfes, die Größe von fast allem. Dieser Schritt umfasst das Vergleichen, Auswählen und Messen der Größe des verwendeten Arduino-Mikrocontrollers. Welcher Sensor verwendet wurde oder möglicherweise in Zukunft verwendet wird, wo er platziert werden soll, welche Abmessungen und Größen, wohin akzeptierte Münzen gehen, ich denke auch darüber nach, wo ich ein monochromes LCD platzieren sollte (es ist nicht notwendig, aber ich bestehe darauf).

Und schließlich vergessen Sie bei der Solidworks-Modellerstellung nicht, Löcher für Schrauben für alle Teile zu erstellen.

Das Gehäuse besteht aus Acrylmaterial und wird im Laserschneidverfahren geschnitten. Aus diesem Grund erstelle ich Modelle so detailliert und genau wie möglich, denn je genauer mein Modell, desto präziser werde ich.

Schritt 3:Entwerfen Sie einen Münzschlitz

Um Münzen zu filtern, verwende ich zuerst die Münzdimension. Durch das Entwerfen von Slot-Münzen kann ich bestimmen, welche Münzgröße in den Automaten gelangen darf .

Dann zweiter Filter, ich bestimme welche Münzgröße angenommen werden darf und rolle bis zum Münzhalter .

Denn wenn die Münzgröße (Durchmesser) kleiner als die Länge der Münzrampe/-spur ist, fällt sie durch die Schwerkraft herunter und wird zurückgewiesen.

  • Auf dem Bild oben passt die Münze auf der linken Seite nicht in den Münzschlitz.
  • Münze in der Mitte wird fallen und zurückgewiesen.
  • Münze rechts ist akzeptierte Münze, geht nach unten in den Münzhalter.

Dies ist ein Video, in dem ich einige Münztests durchführe. Es zeigt Ihnen, wie diese Methode funktioniert.

Schritt 4:Bereiten Sie jede Komponente vor und testen Sie sie

Bereiten Sie Ihr Arduino vor, bereiten Sie alles vor, was Sie brauchen.

Testen Sie jede Komponente, LCD-Taster, Relais, LED, versuchen Sie einfach, alles zu kombinieren und unterschiedliche Logiken und Codierungen zu lernen. Stellen Sie sicher, dass Sie wissen, was Sie tun. Versuche bis ans Limit zu testen, finde das Limit, aber überschreite es nicht.

Warum einen Widerstand verwenden, was passiert, wenn dies oder das, warum der Sensormesswert nicht stabil ist, welcher Wert tatsächlich vom Sensor gelesen wird usw. Ich habe den Test durchgeführt und festgestellt, dass die Messwerte des Näherungssensors "nicht sauber" sind und einen Widerstand hinzufügen müssen beruhige es.

Infrarotsensor funktioniert sehr schlecht und unter direkter Sonneneinstrahlung nicht normal (ich weiß davon schon, aber bis jetzt habe ich den Aufprall nie wirklich gespürt). Die Lösung besteht darin, etwas Klebeband zu verwenden, um den Empfängerteil des Infrarotsensors zu isolieren, wie auf dem Bild gezeigt.

Schritt 5:Bauen Sie einen Spiralmechanismus

Dies ist einer der wichtigsten Teile des Verkaufsautomaten, der Abgabemechanismus.

Ich verwende einen Spiralmechanismus mit Aluminiumdraht (2 mm Drahtdurchmesser), der mit Hilfe von PVC-Rohr mit 9 cm Durchmesser manuell zu einer Spirale geformt wird.

Spiraldraht wird mit Kabelbindern an einem Rad befestigt. Wenn der Gleichstrommotor eingeschaltet ist, drehen sich das Rad und der Spiraldraht.

Rotationsspiralen wandeln tatsächlich Rotationsbewegungen in Linearbewegungen um des Produkts.

Schritt 6:Erstellen Sie einen Münzerkennungsmechanismus

Das erste Bild ist der Münzsensor Nummer 1, der einen Näherungssensor oder einen Induktions-Elektromagnetsensor verwendet. Wenn die akzeptierte Münze diesen Sensor passiert, wird Arduino ausgelöst, um die Zeit zu zählen (in Millisekunden).

Wenn Sensor1 ausgelöst hat, dann beginnt die Zählzeit in Millisekunden  

Und wenn eine akzeptierte Münze den Münzsensor Nummer 2 passiert, ein Distanzunterbrechersensor, stoppt arduino die Zeitzählung und erhält die Zeit, die für diese bestimmte Münze erforderlich ist, um von Sensor Nummer 1 zu Sensor Nummer 2 zu gelangen.

Wenn sensor2 ausgelöst wurde, stoppen Sie die Zählzeit in Millisekunden. "Reisezeiten" sind xxx Millisekunden  

Verwenden Sie nicht zu viele Magneten, da diese sich verklemmen und die Münze in der Mitte der Münzrampe stoppen kann. Wir möchten nicht, dass das passiert, weil wir die Zeit für jede Münze zählen müssen, um "Fahrzeiten" zwischen Sensor Nummer 1 und Nummer 2 zu erhalten. Diese "Fahrzeiten" (in Millisekunden) werden für Arduino verwendet, um den Wert von zu bestimmen akzeptierte Münze.

wenn "Reisezeiten" größer oder gleich "yyy" Millisekunden sind, dann ist es "aaa" Münze, sonst ist es "bbb" 

Dies ist ein Video, in dem ich diese Methode teste und Münzen mit einem Magneten identifiziere.

Schritt 7:Erstellen Sie einen Produkterkennungsmechanismus

Ich verwende 3 Infrarotsensoren zur Produkterkennung, wenn der Fall durch den Spiralmechanismus geschoben/bewegt wird.

Wenn das Produkt herunterfällt, löst es den Infrarotsensor aus und sendet ein AUS-Signal an den DC-Motor (über Relais).

Dieses Video zeigt, wie die Produkterkennung in diesem Verkaufsautomaten funktioniert.

Schritt 8:Verwenden des LCD für Informationen

In diesem Projekt mache ich das LCD, das Informationen (in indonesischer Währung) über den akzeptierten Münzwert anzeigt, jedes Mal, wenn der Kunde eine Münze eingibt. Es zeigt auch das Gesamtguthaben der akzeptierten Münze und andere allgemeine Anweisungen zur schrittweisen Bedienung dieses Automaten.

Wenn das Gerät eingeschaltet ist

  • HAUPT-Anzeige ="Bitte Münze eingeben".
  • WENN Münze eingegeben ="Münzenwert und Gesamtsaldo anzeigen".
  • WENN Münze nicht eingegeben wurde =HAUPTanzeige beibehalten.

Nach erfolgreicher Identifizierung der Münze

  • ​IF Gesamtsaldo höher oder gleich dem Produktpreis ="Bitte Produkt auswählen".
  • WENN Gesamtguthaben kleiner ist als der Produktpreis ="Bitte mehr Münze eingeben".

Nach dem Spiralmechanismus einschalten (Lieferung erfolgt)

  • WENN Produkterkennungsmechanismus ausgelöst wurde ="Danke", Transaktion abgeschlossen.
  • Verzögerung und zurück zur HAUPTanzeige.

Schritt 9:Fertigstellen und Testen

Endlich fertiger Snack-Automat.;)

Nach ungefähr 3 Monaten bin ich bereit, einen letzten Test an dieser Maschine durchzuführen, von der Zahlung / dem Münztest, der Produktauswahl bis zur Produktlieferung.

Dies ist das letzte Testvideo des Snack-Automaten:

Ich hoffe, dieses Projekt hilft einigen von Ihnen, gibt Ihnen vielleicht eine Inspiration oder Idee zum Bau und zur Entwicklung des nächsten Arduino-betriebenen Verkaufsautomaten.

Schritt 10:Verbesserungspotential

Einige Ideen zur Verbesserung dieses Snackautomaten:

  • Fügen Sie einen Münzwechslermechanismus hinzu.
  • Akzeptiere Papiergeld.
  • Akzeptiere Bitcoin und/oder digitale Zahlungen.
  • Produktbestand auf LCD anzeigen.
  • IoT:Bei jeder Transaktion über das Internet benachrichtigen.
  • IoT:Benachrichtigen, wenn der Produktbestand leer oder niedrig ist usw.

Besonderer Dank:ITENAS Bandung, Fachbereich Maschinenbau.

Code

  • Quellcode für Snack-Automaten
Quellcode für Snack-AutomatenArduino
Dies ist der Quellcode, den ich für dieses Automatenprojekt verwendet habe
const byte SIAP =0;const byte KOIN_MASUK1 =1;const Byte KOIN_MASUK2 =2;const Byte KOIN_MASUK3 =3;const Byte KOIN_MASUK4 =4;const Byte KOIN_MASUK5 =5; const Byte KOIN_MASUK6 =6;const Byte KOIN_MASUK7 =7;const Byte SALDO_500 =8;const Byte SALDO_500500 =9;const Byte SALDO_500500500 =10;const Byte SALDO_500500500500 =11;const Byte SALDO_5005005001000 =12;const Byte SALDO_5005005001000 =12;const Byte SALDO_5005005001000 =12;const Byte SALDO_5001000500 =14;konst Byte SALDO_50010001000 =15;konst Byte SALDO_5005001000 =16;konst Byte SALDO_1000 =17;konst Byte SALDO_10001000 =18;konst Byte SALDO_1000500_19;konst Byte SALDO_1000500500 =20;konst Byte SALDO_1000 =21;konst Byte SALDO_1000500 =19;konst Byte SALDO_1000500500 =20;konst Byte SALDO_1000 =21ALDO_1000 Byte =21AL 22;Byte-Zustand =SIAP;const float jeda_waktu =876;Lange Zeit ohne Vorzeichen1;Lange Zeit ohne Vorzeichen2;Lange Zeit ohne Vorzeichen3;Lange Zeit ohne Vorzeichen4;Lange Zeit ohne Vorzeichen5;Lange Zeit ohne Vorzeichen6;Lange Zeit ohne Vorzeichen7;#define PIN_SCE 7#define PIN_RESET 6# PIN_DC definieren 5#PIN_SDIN definieren 4# define PIN_SCLK 3#define LCD_C LOW#define LCD_D HIGH#define LCD_X 84#define LCD_Y 48statisch konstantes Byte ASCII[][5] ={ {0x00, 0x00, 0x00, 0x00, 0x00} // 20 , {0x00, 0x00, 0x5f , 0x00, 0x00} // 21 ! , {0x00, 0x07, 0x00, 0x07, 0x00} // 22 " , {0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 # , {0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $ , { 0x23, 0x13, 0x08, 0x64, 0x62} // 25 % , {0x36, 0x49, 0x55, 0x22, 0x50} // 26 &, {0x00, 0x05, 0x03, 0x00, 0x00} // 27 ' , {0x00, 0x1c, 0x22, 0x41, 0x00} // 28 ( , {0x00, 0x41, 0x22, 0x1c, 0x00} // 29 ) , {0x14, 0x08, 0x3e, 0x08, 0x14} // 2a * , {0x08, 0x08, 0x3e, 0x08, 0x08} // 2b + , {0x00, 0x50, 0x30, 0x00, 0x00} // 2c , , {0x08, 0x08, 0x08, 0x08, 0x08} // 2d - , {0x00, 0x60, 0x60, 0x00, 0x00} // 2e . , {0x20, 0x10, 0x08, 0x04, 0x02} // 2f / , {0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0 , {0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1 , {0x42, 0x61, 0x51, 0x49, 0x46} // 32 2 , {0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3 , {0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4 , {0x27, 0x45, 0x45, 0x45, 0x39} // 35 5 , {0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6 , {0x01, 0x71, 0x09, 0x05, 0x03} // 37 7 , {0x36, 0x49, 0x49, 0x49, 0x36} // 38 8 , {0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9 , {0x00, 0x36, 0 x36, 0x00, 0x00} // 3a :, {0x00, 0x56, 0x36, 0x00, 0x00} // 3b; , {0x08, 0x14, 0x22, 0x41, 0x00} // 3c <, {0x14, 0x14, 0x14, 0x14, 0x14} // 3d =, {0x00, 0x41, 0x22, 0x14, 0x08} // 3e> , { 0x02, 0x01, 0x51, 0x09, 0x06} // 3f ? , {0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @ , {0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A , {0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B , { 0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C , {0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D , {0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E , {0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F , {0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G , {0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H , {0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I , {0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J , {0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K , {0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L , {0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M , {0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N , {0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O , {0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P , {0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q , {0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R , {0x46, 0x49, 0x49, 0x49, 0x31} // 53 S , {0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T , {0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U , {0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V , {0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W , {0x63, 0x14, 0 x08, 0x14, 0x63} // 58 X , {0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y , {0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z , {0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [ , {0x02, 0x04, 0x08, 0x10, 0x20} // 5c , {0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ] , {0x04, 0x02, 0x01, 0x02 , 0x04} // 5e ^ , {0x40, 0x40, 0x40, 0x40, 0x40} // 5f _ , {0x00, 0x01, 0x02, 0x04, 0x00} // 60 ` , {0x20, 0x54, 0x54, 0x54, 0x78 } // 61 a , {0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b , {0x38, 0x44, 0x44, 0x44, 0x20} // 63 c , {0x38, 0x44, 0x44, 0x48, 0x7f} / / 64 d , {0x38, 0x54, 0x54, 0x54, 0x18} // 65 e , {0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f , {0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g , {0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h , {0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i , {0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j , {0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k , {0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l , {0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m , {0x7c , 0x08, 0x04, 0x04, 0x78} // 6e n , {0x38, 0x44, 0x44, 0x44, 0x38} // 6f o , {0x7c, 0x14, 0x14, 0x14, 0x08 } // 70 p , {0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q , {0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r , {0x48, 0x54, 0x54, 0x54, 0x20} / / 73 s , {0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t , {0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u , {0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v , {0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w , {0x44, 0x28, 0x10, 0x28, 0x44} // 78 x , {0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y , {0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z , {0x00, 0x08, 0x36, 0x41, 0x00} // 7b { , {0x00, 0x00, 0x7f, 0x00, 0x00} // 7c | , {0x00, 0x41, 0x36, 0x08, 0x00} // 7d } , {0x10, 0x08, 0x08, 0x10, 0x08} // 7e â†� , {0x78, 0x46, 0x41, 0x46, 0x78} // 7f â †'};void LcdWrite (Byte DC, Byte Daten) { DigitalWrite (PIN_DC, DC); digitalWrite (PIN_SCE, LOW); shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, Daten); digitalWrite (PIN_SCE, HIGH);} ungültiges LcdCharacter (Zeichenzeichen) { LcdWrite (LCD_D, 0x00); for (int index =0; index <5; index++) { LcdWrite(LCD_D, ASCII[character - 0x20][index]); } LcdWrite(LCD_D, 0x00);}void LcdClear(void){ for (int index =0; index  Siap"); LcdInitialisieren(); LcdClear(); LcdString("Masukkan Koin Rp500 atau Koin Rp1000 @ Rp2000"); Verzögerung (500);} ungültige Schleife () { Int x =analogRead (14); if (state ==SIAP) { if (x>=33) { state =KOIN_MASUK1; time1 =Millis(); Ton (2, 4200, 40); Serial.println("snsr1,"); Serial.println("wkt starten"); }} else if ((state ==KOIN_MASUK1) &&(!(digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK1)) { unsigned long diff1 =(millis() - time1 ); Serial.println("snsr2,"); Serial.println ( "wkt stoppen"); Serial.print("jeda wkt:"); Serial.print (diff1); Serial.println("ms"); if (diff1> jeda_waktu) { state =SALDO_1000; LcdInitialisieren(); LcdClear(); LcdString(" diterima Saldo=Rp1000 Tambah Koin Koin Rp1000"); digitalWrite (13, HIGH); Serial.println ("koin =Rp 1000, Saldo:Rp1000"); Ton (2, 4200, 299); aufrechtzuerhalten. Sonst if (diff1 =33) { state =KOIN_MASUK2; time2 =Millis(); Ton (2, 4200, 40); Serial.println("snsr1,"); Serial.println("wkt starten"); } } else if ((state ==KOIN_MASUK2) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK2)) { unsigned long diff2 =(millis() - time2); Serial.println("snsr2,"); Serial.println ( "wkt stoppen"); Serial.print("jeda wkt:"); Serial.print (diff2); Serial.println("ms"); if (diff2> jeda_waktu) { state =SALDO_5001000; LcdInitialisieren(); LcdClear(); LcdString(" diterima Saldo=Rp1500 Tambah Koin Koin Rp1000"); Ton (2, 4200, 299); Serial.println ("koin =Rp 1000, Saldo:Rp1500"); aufrechtzuerhalten. Sonst if (diff2 =33) { state =KOIN_MASUK3; time3 =Millis(); Ton (2, 4200, 40); Serial.println("snsr1,"); Serial.println("wkt starten"); } } else if ((state ==KOIN_MASUK3) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK3)) { unsigned long diff3 =(millis() - time3); Serial.println("snsr2,"); Serial.println ( "wkt stoppen"); Serial.print("jeda wkt:"); Serial.print (diff3); Serial.println("ms"); if (diff3> jeda_waktu) { state =SALDO_5005001000; LcdInitialisieren(); LcdClear(); LcdString(" diterima Saldo=Rp2000 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2000"); Ton (2, 4200, 799); aufrechtzuerhalten. Sonst if (diff3 =33) { state =KOIN_MASUK4; time4 =Millis(); Ton (2, 4200, 40); Serial.println("snsr1,"); Serial.println("wkt starten"); } } else if ((state ==KOIN_MASUK4) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK4)) { unsigned long diff4 =(millis() - time4); Serial.println("snsr2,"); Serial.println ( "wkt stoppen"); Serial.print("jeda wkt:"); Serial.print (diff4); Serial.println("ms"); if (diff4> jeda_waktu) { state =SALDO_5005005001000; LcdInitialisieren(); LcdClear(); LcdString(" diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); Ton (2, 4200, 799); aufrechtzuerhalten. Sonst if (diff4 =33) { state =KOIN_MASUK5; time5 =Millis(); Ton (2, 4200, 40); Serial.println("snsr1,"); Serial.println("wkt starten"); }} else if ((state ==KOIN_MASUK5) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK5)) { unsigned long diff5 =(millis() - time5); Serial.println("snsr2,"); Serial.println ( "wkt stoppen"); Serial.print("jeda wkt:"); Serial.print (diff5); Serial.println("ms"); if (diff5> jeda_waktu) { state =SALDO_50010001000; LcdInitialisieren(); LcdClear(); LcdString(" diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); Ton (2, 4200, 799); aufrechtzuerhalten. Sonst if (diff5 =33) { state =KOIN_MASUK6; time6 =Millis(); Ton (2, 4200, 40); Serial.println("snsr1,"); Serial.println("wkt starten"); } } else if ((state ==KOIN_MASUK6) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK6)) { unsigned long diff6 =(millis() - time6); Serial.println("snsr2,"); Serial.println ( "wkt stoppen"); Serial.print("jeda wkt:"); Serial.print (diff6); Serial.println("ms"); if (diff6> jeda_waktu) { state =SALDO_10001000; LcdInitialisieren(); LcdClear(); LcdString(" diterima Saldo=Rp2000 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2000"); Ton (2, 4200, 799); aufrechtzuerhalten. Sonst if (diff6 =33) { state =KOIN_MASUK7; time7 =Millis(); Ton (2, 4200, 40); Serial.println("snsr1,"); Serial.println("wkt starten"); }} else if ((state ==KOIN_MASUK7) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK7)) { unsigned long diff7 =(millis() - time7); Serial.println("snsr2,"); Serial.println ( "wkt stoppen"); Serial.print("jeda wkt:"); Serial.print (diff7); Serial.println("ms"); if (diff7> jeda_waktu) { state =SALDO_10005001000; LcdInitialisieren(); LcdClear(); LcdString(" diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin =Rp 1000, Saldo:Rp2500"); Ton (2, 4200, 799); aufrechtzuerhalten. Sonst if (diff7  Siap"); } }}

Kundenspezifische Teile und Gehäuse

Dies ist der Druckbildschirm meines Solidworks 3D-Modells für dieses Projekt.

Herstellungsprozess

  1. Automaten
  2. CO2-Überwachung mit K30-Sensor
  3. Wie groß bist du?
  4. Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
  5. Arduino Cloud Sensor Tower
  6. Bewegungssensor-Wasserpistole
  7. Rücknahmeautomat (RVM)
  8. Gebrauchtmaschinenpreis
  9. Was ist ein Milchautomat?
  10. Was ist ein Nudelautomat?