Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Snacksautomaat aangedreven door Arduino

Componenten en benodigdheden

Arduino UNO
Ik zou in plaats daarvan Arduino Mega moeten gebruiken, voor meer IO.
× 1
Sensorschild
× 1
DC Motor 6V inclusief wiel
× 3
Infrarood (reflecterend) of lijnvolgersensor, gebruikt voor productdetectie
× 3
Nabijheidssensor (elektromagnetisch), gebruikt voor muntsensor nummer 1
× 1
Afstandsonderbreker (infrarood/optocoupler) sensor, gebruikt voor muntsensor nummer 2
× 1
Voeding 6V voor DC-motor
× 1
Relais (algemeen)
4 schakelrelais
× 1
LCD (Nokia 5110 LCD)
× 1
LED (generiek)
Witte LED
× 2
Drukknop
Rood, geel en groen
× 3

Apps en online services

Arduino IDE
Solidworks
of een maker van 3D-modellen

Over dit project

Inleiding

Hallo, groeten uit Indonesië.

Deze snackautomaat is mijn laatste project. Dit project was eigenlijk eind 2015 klaar.

Het doel van dit project is om een ​​verkoopautomaat te maken, aangedreven door een arduino-microcontroller, met behulp van "alle goedkope en gemakkelijk te verkrijgen" componenten die beschikbaar zijn in de plaatselijke winkel.

Deze video hieronder is de laatste testvideo van Snack Vending Machine, van betaling/munttest, productselectie en productlevering.

Dus dit is wat ik deed om die doelen te bereiken:

Stap 1:Schets het concept

Eerst nadenken, het concept .

Deze schets is mijn allereerste idee van wat ik zou kunnen bouwen. Het wordt een snackautomaat, die munten als betaling accepteert en een acrylkoffer gebruikt.

Kies je concept en laat het rijpen , probeer aan alles, elk scenario, elke omstandigheid te denken.

Probeer alles te schetsen, maak je geen zorgen als je tekening lelijk is, kijk serieus naar mijn tekening. :D

Het juiste moment om na te denken over het ondenkbare is voordat het project zelfs maar is begonnen.

Stap 2:Maak een 3D-model

Misschien is deze stap niet voor alle mensen nodig, maar voor mij en voor dit project is het cruciaal.

Ik maak een solidworks-model. En ik bedoel echt volledig voltooid model. Ik moet de afmetingen van het product bepalen, in dit geval een snackverpakking. De grootte van geaccepteerde munten, de grootte van afgewezen munten, grootte van de muntgleuf, grootte van de munthelling, grootte van de drukknop, maten van bijna alles. Deze stap omvat het vergelijken, kiezen en meten van de grootte van de gebruikte Arduino Microcontroller. Welke sensor wordt gebruikt, of zal mogelijk in de toekomst worden gebruikt, waar te plaatsen, wat de afmetingen en maten zijn, waar geaccepteerde munten naartoe gaan, ik denk ook na over waar ik een monochroom LCD-scherm moet plaatsen (het is niet nodig, maar ik sta erop).

En tot slot, nog steeds in solidworks-modelcreatie, vergeet niet om gaten voor schroeven te maken, voor elk onderdeel.

De behuizing is gemaakt van acrylmateriaal en gesneden met behulp van een lasersnijmethode. Daarom maak ik een zo gedetailleerd en nauwkeurig mogelijk model, want hoe nauwkeuriger mijn model, hoe nauwkeuriger ik zal worden.

Stap 3:Ontwerp een muntautomaat

Om munten te filteren, gebruik ik eerst de muntdimensie. Door slotmunten te ontwerpen, kan ik bepalen welke munten er in de machine mogen komen .

Dan tweede filter, bepaal ik welke muntgrootte mag worden geaccepteerd en rol naar de munthouder .

Omdat door gebruik te maken van zwaartekracht, als de muntgrootte (diameter) kleiner is dan de lengte van de munthelling/-baan, deze naar beneden valt en wordt afgewezen.

  • Op de foto hierboven kan de munt aan de linkerkant niet in de slotmunt komen.
  • De munt in het midden zal vallen en afgewezen worden.
  • De munt aan de rechterkant is de geaccepteerde munt, gaat naar de munthouder.

Dit is een video wanneer ik wat munttesten doe, het zal je laten zien hoe deze methode werkt.

Stap 4:Bereid elk onderdeel voor en test het

Zet je arduino klaar, bereid alle benodigde dingen voor.

Test elk onderdeel, LCD-drukknop, relais, LED, probeer gewoon alles te combineren en leer verschillende logica en codering. Zorg ervoor dat je weet wat je doet. Probeer tot het uiterste te testen, vind de limiet, maar breek hem niet.

Waarom weerstand gebruiken, wat gebeurt er wanneer dit of dat, waarom sensormetingen niet stabiel zijn, welke waarde daadwerkelijk door de sensor wordt gelezen, enz. Ik deed de test en ontdekte dat de metingen van de nabijheidssensor "niet schoon" zijn, moet een weerstand toevoegen aan kalmeer het.

Infraroodsensor presteert erg slecht en niet normaal onder direct zonlicht (ik weet dit eerder, maar voel de impact nooit echt, tot nu toe). De oplossing is om wat ducttape te gebruiken om het ontvangergedeelte van de infraroodsensor te isoleren, zoals op de foto te zien is.

Stap 5:Bouw een spiraalmechanisme

Dit is een van de belangrijkste onderdelen van de automaat, het bezorgmechanisme.

Ik gebruik een spiraalmechanisme, met aluminiumdraad (2 mm draaddiameter), handmatig in een spiraal gevormd met behulp van een PVC-buis met een diameter van 9 cm.

Spiraaldraad wordt met kabelbinders aan een wiel vastgemaakt. Als de gelijkstroommotor AAN staat, draaien het wiel en de spiraaldraad.

Roterende spiralen zetten rotatie in feite om in lineaire beweging van het product.

Stap 6:Bouw een muntidentificatiemechanisme

De eerste foto is muntsensor nummer 1, deze gebruikt de nabijheidssensor of inductie-elektromagneetsensor. Wanneer de munt wordt geaccepteerd door deze sensor, wordt de Arduino geactiveerd om de tijd te tellen (in milliseconden).

als sensor1 wordt geactiveerd, begin dan met het tellen van de tijd in milliseconden  

En wanneer de muntsensor nummer 2 wordt geaccepteerd, een afstandsonderbrekersensor, stopt Arduino met het tellen van de tijd en krijgt de tijd die nodig is voor die specifieke munt om van sensor nummer 1 naar sensor nummer 2 te reizen.

als sensor2 wordt geactiveerd, stop dan met het tellen van de tijd in milliseconden. "reistijden" is xxx milliseconde  

Gebruik niet te veel magneet, omdat deze vastloopt en de munt stopt in het midden van de munthelling. We willen niet dat dit gebeurt, omdat we de tijd voor elke munt moeten tellen, om "reistijden" tussen sensor nummer 1 en nummer 2 te krijgen. Deze "reistijden" (in milliseconden), worden voor arduino gebruikt om de waarde te bepalen van geaccepteerde munt.

als "reistijden" meer dan of gelijk zijn aan "yyy" milliseconde, dan is de "aaa" munt, anders is het "bbb" 

Dit is een video waarin ik deze methode test en munten identificeer met behulp van een magneet.

Stap 7:Bouw een productdetectiemechanisme

Ik gebruik 3 infraroodsensoren voor productdetectie wanneer deze valt door te worden geduwd/bewogen door een spiraalmechanisme.

Wanneer het product valt, wordt de infraroodsensor geactiveerd en wordt een UIT-signaal naar de DC-motor gestuurd (via relais).

Deze video laat zien hoe productdetectie werkt in deze automaat.

Stap 8:LCD gebruiken voor informatie

In dit project maak ik het LCD-scherm met informatie (in Indonesische valuta) over de geaccepteerde muntwaarde, telkens wanneer de klant een munt invoert. Het zal ook laten zien hoeveel totale saldo van geaccepteerde munten, en andere algemene instructies over stap voor stap om deze machine te bedienen.

Toen de machine werd ingeschakeld

  • HOOFDdisplay ="Voer munt in".
  • IF munt ingevoerd ="Toon muntwaarde en totaal saldo".
  • ALS er geen munt is ingevoerd =HOOFDdisplay behouden.

Na succesvolle identificatie van munt

  • ​ALS het totale saldo meer of gelijk is aan de prijs van het product ="Selecteer een product".
  • ALS het totale saldo lager is dan de prijs van het product ="Voer meer munt in".

Na spiraalmechanisme AAN zetten (levering vindt plaats)

  • IF Productdetectiemechanisme geactiveerd ="Bedankt", Transactie voltooid.
  • Vertraging en terug naar HOOFDdisplay.

Stap 9:Afwerking en testen

Eindelijk, de snackautomaat klaar.;)

Na ongeveer 3 maanden ben ik klaar om een ​​laatste test met deze machine te doen, van betaling/munttest, productselectie en productlevering.

Dit is de laatste testvideo van Snack Vending Machine:

Ik hoop dat dit project sommigen van jullie helpt, misschien wat inspiratie of een idee geeft, over het bouwen en maken van de volgende Arduino-aangedreven automaat.

Stap 10:Ruimte voor verbetering

Enkele ideeën om deze snackautomaat te verbeteren:

  • Voeg een muntwisselaarmechanisme toe.
  • Accepteer papiergeld.
  • Accepteer bitcoin en/of digitale betaling.
  • Toon productvoorraad op LCD.
  • IoT:informeer via internet elke keer dat er een transactie plaatsvindt.
  • IoT:melden wanneer de productvoorraad leeg of bijna op is, enz.

Speciale dank:ITENAS Bandung, afdeling Werktuigbouwkunde.

Code

  • Broncode voor Snacks-automaat
Broncode voor Snacks Vending MachineArduino
Dit is de broncode die ik heb gebruikt voor dit automaatproject
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-13;const500-byte =byte SALDO_5005001000 =SALDO_5001000500 =14;const-byte SALDO_50010001000 =15;const-byte SALDO_5005001000 =16;const-byte SALDO_1000 =17;const-byte SALDO_10001000 =18;const-byte SALDO_1000500 =19;const-byte SALDO_1000500500 =20;const1000-byte =21; 22;byte state =SIAP;const float jeda_waktu =876;unsigned long time1;unsigned long time2;unsigned long time3;unsigned long time4;unsigned long time5;unsigned long time6;unsigned long time7;#define PIN_SCE 7#define PIN_RESET 6# definieer PIN_DC 5#definieer PIN_SDIN 4# definieer PIN_SCLK 3#define LCD_C LOW#define LCD_D HIGH#define LCD_X 84#define LCD_Y 48static const 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 data){ digitalWrite(PIN_DC, dc); digitalWrite (PIN_SCE, LAAG); shiftOut (PIN_SDIN, PIN_SCLK, MSBFIRST, gegevens); digitalWrite(PIN_SCE, HIGH);}void LcdCharacter(char-teken){ LcdWrite(LCD_D, 0x00); for (int index =0; index <5; index++) { LcdWrite(LCD_D, ASCII[karakter - 0x20][index]); } LcdWrite(LCD_D, 0x00);}void LcdClear(void){ for (int index =0; index  Siap"); LcdInitialiseren(); LcdClear(); LcdString ("Masukkan Koin Rp500 atau Koin Rp1000 @ Rp2000"); delay(500);}void loop() {int x =analogRead(14); if (staat ==SIAP) {if (x>=33) { staat =KOIN_MASUK1; tijd1 =millis(); toon (2, 4200, 40); Serial.println("snsr1,"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK1) &&(!(digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK1)) { unsigned long diff1 =(millis() - time1 ); Serial.println("snsr2,"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Serial.print(diff1); Serial.println ("ms"); if (diff1> jeda_waktu) { staat =SALDO_1000; LcdInitialiseren(); LcdClear(); LcdString ("diterima Saldo=Rp1000 Tambah Koin Koin Rp1000"); digitalWrite (13, HOOG); Serial.println ("koin=Rp 1000, Saldo:Rp1000"); toon (2, 4200, 299); } else if (diff1 =33) { staat =KOIN_MASUK2; tijd2 =millis(); toon (2, 4200, 40); Serial.println("snsr1,"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK2) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK2)) { unsigned long diff2 =(millis() - time2); Serial.println("snsr2,"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Seriële.print(diff2); Serial.println ("ms"); if (diff2> jeda_waktu) { staat =SALDO_5001000; LcdInitialiseren(); LcdClear(); LcdString ("diterima Saldo =Rp1500 Tambah Koin Koin Rp1000"); toon (2, 4200, 299); Serial.println ("koin=Rp 1000, Saldo:Rp1500"); } else if (diff2 =33) { staat =KOIN_MASUK3; tijd3 =millis(); toon (2, 4200, 40); Serial.println("snsr1,"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK3) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK3)) { unsigned long diff3 =(millis() - time3); Serial.println("snsr2,"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Seriële.print(diff3); Serial.println ("ms"); if (diff3> jeda_waktu) { staat =SALDO_5005001000; LcdInitialiseren(); LcdClear(); LcdString ("diterima Saldo=Rp2000 Pilih Produk Koin Rp1000"); Serial.println ("koin=Rp 1000, Saldo:Rp2000"); toon (2, 4200, 799); } else if (diff3 =33) { staat =KOIN_MASUK4; tijd4 =millis(); toon (2, 4200, 40); Serial.println("snsr1,"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK4) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK4)) { unsigned long diff4 =(millis() - time4); Serial.println("snsr2,"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Serial.print(diff4); Serial.println ("ms"); if (diff4> jeda_waktu) { staat =SALDO_5005005001000; LcdInitialiseren(); LcdClear(); LcdString ("diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin=Rp 1000, Saldo:Rp2500"); toon (2, 4200, 799); } else if (diff4 =33) { staat =KOIN_MASUK5; tijd5 =millis(); toon (2, 4200, 40); Serial.println("snsr1,"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK5) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK5)) { unsigned long diff5 =(millis() - time5); Serial.println("snsr2,"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Serieel.print(diff5); Serial.println ("ms"); if (diff5> jeda_waktu) { staat =SALDO_50010001000; LcdInitialiseren(); LcdClear(); LcdString ("diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin=Rp 1000, Saldo:Rp2500"); toon (2, 4200, 799); } else if (diff5 =33) { staat =KOIN_MASUK6; tijd6 =millis(); toon (2, 4200, 40); Serial.println("snsr1,"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK6) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK6)) { unsigned long diff6 =(millis() - time6); Serial.println("snsr2,"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Serial.print(diff6); Serial.println ("ms"); if (diff6> jeda_waktu) { staat =SALDO_10001000; LcdInitialiseren(); LcdClear(); LcdString ("diterima Saldo=Rp2000 Pilih Produk Koin Rp1000"); Serial.println ("koin=Rp 1000, Saldo:Rp2000"); toon (2, 4200, 799); } else if (diff6 =33) { staat =KOIN_MASUK7; tijd7 =millis(); toon (2, 4200, 40); Serial.println("snsr1,"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK7) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK7)) { unsigned long diff7 =(millis() - time7); Serial.println("snsr2,"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Serieel.print(diff7); Serial.println ("ms"); if (diff7> jeda_waktu) { staat =SALDO_10005001000; LcdInitialiseren(); LcdClear(); LcdString ("diterima Saldo=Rp2500 Pilih Produk Koin Rp1000"); Serial.println ("koin=Rp 1000, Saldo:Rp2500"); toon (2, 4200, 799); } else if (diff7  Siap"); } }}

Aangepaste onderdelen en behuizingen

Dit is een printscreen van mijn solidworks 3D-model voor dit project.

Productieproces

  1. Automaat
  2. CO2-monitoring met K30-sensor
  3. Hoe lang ben je?
  4. Capacitieve vingerafdruksensor met een Arduino of ESP8266
  5. Arduino Cloud Sensor Tower
  6. Bewegingssensor-waterpistool
  7. Reverse Vending Machine (RVM)
  8. Mini-radar met Arduino
  9. Prijs gebruikte machines
  10. Wat is een melkautomaat?
  11. Wat is een noedelautomaat?