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

Coin Op Personal Vending Machine

Componenten en benodigdheden

FriendlyARM 1/4 multiplex
Snijd multiplex tot de afmetingen die in het diagram zijn gespecificeerd
× 4
3/4" multiplex blokkering
Snijd triplex in stroken van 3/4" breed en zo lang als het stuk waar het op aansluit, zie diagram
× 1
LAFVIN 5 sets 28BYJ-48 ULN2003 5V stappenmotor + ULN2003 driver Bord voor Arduino
Deze motoren kunnen elke traktatie die je in de machine stopt, duwen
× 1
Pc-accessoires - Connectors Pro IDC 1,27 mm pitch regenboogkleurig plat lint Kabel voor 2,54 mm connectoren (50P-10FT)
Nodig om de machine schoon en professioneel te maken
× 1
Glarks 635-delige Dupont-connectorbehuizing Mannelijk/vrouwelijk pinconnector 40-pins
Nodig om de machine schoon en professioneel te maken
× 1
Gamelec-Illuminated-Replacement-Microswitch
Je moet knoppen hebben
× 1
Broodplank (algemeen)
Soldeerplaten werken ook goed
× 1
30 stuks dubbelzijdige printplaat prototype kit
Slechts een of twee nodig, maar ze zijn perfect voor toekomstige projecten
× 1
Arduino Mega 2560
De gebruikte controller was de Mega 2560
× 1
Tolako 5v relaismodule voor Arduino ARM
Nodig om te voorkomen dat de motoren oververhit raken
× 1
HiLetgo 2-delige 1602 seriële LCD-moduleweergave
Zonder dit weet je niet op welke knop is gedrukt
× 1
LED-lichtstrips
Optioneel
× 2
50 ft. 8-gauge massieve SD blanke koperen aardingsdraad
Dit is wat je gaat gebruiken om de spoelen te maken
× 1
Platte metalen plankverdeler
× 1

Benodigde gereedschappen en machines

Tafel- of elektrische zaag
Tenzij je ergens het hout kunt laten knippen
Soldeerbout (algemeen)
Hot lijmpistool (algemeen)
Vergeet ook de lijmstiften niet

Apps en online services

Arduino IDE

Over dit project

DE PERSOONLIJKE VERKOOPMACHINE

Dit project is een stapsgewijze opbouw van een persoonlijke automaat. De automaat kan gevuld worden met uw favoriete snacks of kan naar kantoor worden gebracht zodat u wat lekkers kunt delen met uw team. Neem een ​​kijkje en laat me weten wat je ervan vindt.

De machine bouwen :

Ik zal in deze tekst naar de diagrammen van de machine verwijzen, dus raadpleeg de diagrammen voor verduidelijking/begrip.

De afmetingen van de machine zijn 21"B x 18"D x 24 1/4"H (doosafmetingen)

2 panelen 18"D x 23 3/4"H (zijkanten)

2 panelen 21"B x 18"D (boven en onder)

2 panelen 21"B x 24 1/4"H (voor- en achterkant)

Scheidingswand is 18 "D x 23 3/4" H

Interne plank is 13 "B x 12" D (keer 2, bovenste en onderste plank)

Planken zijn 20 cm uit elkaar 13 cm breed 30 cm diep

Elk blauw blok op het paneeldiagram is een ¾”B x ¾”H montagepunt zo diep als het paneel

Monteer de doos zoals weergegeven in het diagram en hier met behulp van de 3/4" blokkering op elk van de verbindingspunten. Houd er rekening mee dat de zijwanden bovenop de bodemplaat en onder de bovenplaat zitten. De omtrekwanden moeten 21" W meten bij 24 1/4"H.

De scheidingswand moet worden ingesteld voordat u deze installeert. Meet vanaf de bovenkant 16 1/4" naar beneden en bevestig daar de blokkering voor de onderste plank. Meet 8 1/4" vanaf de bovenkant en bevestig de blokkering voor de bovenste plank. Voer deze stappen uit op de linkermuur (gezien vanaf de voorkant van de machine), zodat u de blokkering voor de bovenste en onderste planken kunt bevestigen.

**** Merk op dat de onderste plank eerst moet worden geïnstalleerd, anders wordt het vastzetten aan de blokkering erg moeilijk.

Zodra de blokkering voor de planken is geïnstalleerd, gebruikt u de 13 "x 12" panelen en installeert u er een op elke set blokkeringen. Hierdoor wordt de scheidingswand automatisch op de juiste plaats gezet. Bevestig vervolgens de blokkering aan de boven- en onderkant van de rechterzijde van de scheidingswand. Bevestig het vervolgens aan het boven- en onderpaneel. Dit zal uw structuur volledig bevestigen.

Installeer het achterpaneel en maak je klaar voor de motorinstallaties. Zorg ervoor dat je de spoelwielen hebt afgedrukt, zodat je ze kunt meten en je boorgaten kunt instellen. Meet de wielen en voeg 1/4" toe aan de hoogte, zodat er ruimte overblijft voor de spoel om te draaien. Misschien wilt u dit naar behoefte aanpassen, afhankelijk van uw materiaal. Meet meer dan 6 1/2" op de plank om zijn midden. Meet meer dan 3 1/4 "om het midden van elk plankgedeelte te vinden. Gebruik de hoogtemeting die u zojuist hebt geregistreerd om de boorpunten te vinden. Boor een gat waarmee u het wiel op de motor kunt aansluiten zonder dat de wielas erop wrijft het bord. Voltooi de montage van de motoren en het vastschroeven van de bevestigingsmiddelen.

Het motorrelais instellen:

Sluit de pinnen als volgt aan. Gebruik chip L293D (inkeping naar links) (In schakelschema) zodat je het relais kunt aansturen. Hiermee kunt u de motoren op stroom aansluiten.

(Van links naar rechts beginnend)

Pin 1 aansluiten op pin socket 10 op controller (In schakelschema)

Pin2 aansluiten op pin socket 9 op de controller (In schakelschema)

Pin 3 sluit aan op de positieve kant van het relais (met de 3 pinnen naar u toe, pin aan de linkerkant) (In schakelschema)

Pin 4 verbinden met 12V aarde op breadboard (In schakelschema)

Pin 5 Niet gebruikt (In schakelschema)

Pin 6 sluit aan op massazijde op relais (met de 3 pinnen naar je toe, pin rechts) (In schakelschema)

Pin 7 aansluiten op pin socket 8 op controller (In schakelschema)

Pin 8 verbinden met +12V op breadboard (In schakelschema)

Sluit middelste pin op relais aan op +12V op breadboard (In schakelschema)

Sluit de rechter pin op het relais (met de 3 pinnen naar u toe, pin rechts achter) aan op de positieve kabel die naar de motordrivers gaat (in schakelschema)

Installatie scherm en knop:Scherm - Kies een plek aan de rechterkant van de machine (kijkend naar de machine vanaf de voorkant) en markeer het gat dat moet worden gemaakt voor het weergavegedeelte van het scherm (2,53937" x 0,5708661) Knop - Kies een plek aan de rechterkant van de machine (kijkend naar de machine vanaf de voorkant) en markeer de gaten die gemaakt moeten worden voor de 4 knopen. De gaten moeten 1.10236" zijn als je exact dezelfde knop in de onderdelen lijst. Ik gebruik graag een boor die kleiner is dan nodig en schuurpapier om het op de gewenste maat te brengen.

Houd er rekening mee dat u ervoor moet zorgen dat u alle aansluitingen op exact dezelfde plaatsen hebt als in het bovenstaande diagram. De LED's die in het diagram worden weergegeven, zijn de LED's die in de drukknoppen zijn ingebouwd. De diagrammen tonen ze afzonderlijk, maar dat is alleen voor weergave en om het schema gemakkelijker te kunnen lezen.

Sluit elke motor aan op de meegeleverde driver. Verbind vervolgens elke driver met de controller met behulp van deze stappen:

Motorconfiguratie:

De voeding moet worden aangesloten op de 12V-zijde van het breadboard. Deze stroom komt van de ATX-voeding die we aan het einde zullen voorbereiden. Verbind vervolgens de 4 "in" pinnen op de driver met de controller. Deze pinnen zijn als volgt

******* VERBIND GEEN VERBINDING MET DE EERSTE 2 PINS IN DIT BLOK HET ZIJN 5V PINS - NIET GEBRUIKT IN DIT PROJECT *********

Motor 1:Blauwe pennen 22, 24, 26, 28 (In schakelschema)

Motor 2:gele pennen 23, 25, 27, 29 (in schakelschema)

Motor 3:Groene pennen 30, 32, 34, 36 (In schakelschema)

Motor 4:Rode pennen 31, 33, 35, 37 (In schakelschema)

Knopverbindingen:

Sluit de ene kant van drukknop 1 aan op 5v, de andere kant op een geaarde 220-weerstand samen met analoge pin A0 (in schakelschema)

Sluit de ene kant van drukknop 2 aan op 5v, de andere kant op een geaarde 220-weerstand samen met analoge pin A1 (in schakelschema)

Sluit de ene kant van drukknop 3 aan op 5v, de andere kant op een geaarde 220-weerstand samen met analoge pin A2 (in schakelschema)

Sluit de ene kant van drukknop 4 aan op 5v, de andere kant op een geaarde 220-weerstand samen met analoge pin A3 (in schakelschema)

LCD-SCHERM:

Sluit het scherm aan op de 5v-kant van het breadboard voor stroom en aarde

De pinnen zijn als volgt:

Pin 1:Verbinden met aarde (in schakelschema)

Pin 2:Aansluiten op 5v voeding (In schakelschema)

Pin 3:Sluit aan op instelbare potentiometer (hieronder afgebeeld) Pin linksonder op aarde, rechtsonder op voeding en pin bovenaan op pin 3 op LCD (in schakelschema, dit is hoe u het contrast op het LCD-scherm instelt, zodat de tekst helder en schoon)

Pin 4:Eerste signaalpin naar controllerpin socket 2 (In schakelschema)

Pin 5:Verbinden met aarde (In schakelschema)

Pin 6:Tweede signaalpin naar controllerpin socket 3 (In schakelschema)

Pin 7:NIET GEBRUIKT

Pin 8:NIET GEBRUIKT

Pin 9:NIET GEBRUIKT

Pin 10:NIET GEBRUIKT

Pin 11:Derde signaalpin naar controllerpin socket 4 (In schakelschema)

Pin 12:Vierde signaalpin naar controllerpin socket 5 (In schakelschema)

Pin 13:Vijfde signaalpin naar controllerpin socket 6 (In schakelschema)

Pin 14:Zesde signaalpin naar controllerpin socket 7 (In schakelschema)

Pin 15:Aansluiten op 5v voeding (In schakelschema)

Pin 16:Verbinden met aarde (In schakelschema)

ATX-VOEDING :

Knip alleen de draden door die nodig zijn om het apparaat van stroom te voorzien. De andere draden zijn veiliger in de plastic connector en stellen u in staat om deze indien nodig voor andere projecten te gebruiken.

ATX-pins:

Knip en strip de (Ground) zwarte draad pin 3 en de (Signaal) groene draad pin 16. Bevestig deze draden aan een schakelaar zodat je de machine aan en uit kunt zetten (In schakelschema)

Knip en strip (aarde) zwarte draad pin 7 en (+12V) gele draad pin 10. Bevestig deze draden aan de 12v kant van het breadboard aangegeven in gele en zwarte aansluitingen. (In schakelschema)

Knip en strip (aarde) zwarte draadpin 24 en (+12V) gele draadpin 11. Bevestig deze draden aan een compatibele connector om het Arduino-bord van stroom te voorzien (in schakelschema)

Knip en strip (aarde) zwarte draad pin 19 en (+5V) rode draad pin 21. Bevestig deze draden aan de 5V kant van het breadboard (In schakelschema)

Plankverdelers en spoelen:

Hier leest u hoe u uw planken en extruders instelt.

Planken - Op het middelste punt 6 1/2 "van de linkerzijmuur (kijkend naar de machine vanaf de voorkant) of scheidingsmuur moet er een markering zijn van de bovenstaande stappen. Gebruik het platte metaal en buig het in de bovenkant van een driehoek. Ziet er precies zo uit "^" Dit zal dienen als je middelste verdeler. Centreer de driehoek over de middelste markering op de plank. Herhaal dit voor de tweede plank. Gebruik hete lijm om op zijn plaats vast te maken. Ik plaats ook dia's aan de zijkanten, maar ze zijn optioneel.

Spoelen - Om de spoelen te maken, zoek je eerst een buis van 1 1/2 ". Een pijp, kitbuis, spuitbus of iets dergelijks is voldoende. Een truc is om een ​​rubberen band te nemen en deze van boven naar beneden over de lengte te wikkelen van de buis. Trek de rechte lijn langs elke kant van de band aan beide zijden van de buis. Zodra u parallelle lijnen aan beide zijden hebt, gebruikt u een meetlint om de volgende plekken te markeren. Kies een kant en meet in 1 "en markeer het , meet dan 2 "vanaf daar markeer het en blijf 2" spaties maken helemaal door de buis. Markeer nu aan de andere kant van de buis slechts 2 "intervallen. Begin met het maken van de spoel aan de 1" kant van de buis en ga door met het maken van uw spoel zodat deze elke markering aan beide zijden van de buis raakt. Dit geeft je een opening van 2 "tussen de sporten. Zou groot genoeg moeten zijn voor de meeste items. Als je van plan bent om het voor candy bard te gebruiken, verkort je de spoel tot 1 "verminder gewoon de bovenstaande formule met de helft.

De spoelen verbinden met de 3D-geprinte wielen. Houd er rekening mee dat er enkele gefabriceerde wielen zijn die zullen werken. Kijk eens op Amazon.

Aan de 1 "-kant van de spoel klap je deze spoel in zodat deze een cirkel vormt. Verkort vervolgens de diameter tot iets kleiner dan het wiel. Als de spoel klaar is, plaats je hem rond de rand van het wiel. Hierdoor zou de spoel rond moeten samendrukken de rand van het wiel en zorg ervoor dat het niet wegglijdt. Als je eenmaal tevreden bent met de pasvorm, neem je een klein beetje hete lijm en plaats je het op het wiel aan het einde van de spoel om het op zijn plaats te houden.

LED-stripverlichting:

Sluit de positieve kabel aan op de +12V-pin aan de 12V-zijde van de breadboard. Sluit de massakabel aan op de massapin aan de 12V-zijde van het breadboard (niet in afbeelding)

STEL ALLE VRAGEN DIE U HEBT, ZODAT IK KAN HELPEN MET UPDATE OM DIT HET GEMAKKELIJKSTE PROJECT OOIT TE MAKEN.

Code

  • Automaat - ZONDER LED-VERLICHTING TE VERANDEREN
  • Automaat - MET VERANDERENDE LED-VERLICHTING
  • Muntacceptor en complete copde
Automaat - ZONDER LED-VERLICHTINGArduino
Alles wat u nodig hebt om het project te voltooien en te begrijpen
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  / /inclusief stappenmotorbibliotheek//Relaisinstelling#define ENABLE 10#define DIRA 8#define DIRB 9//Define "i"int i;//pins-sectie definiëren//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 stepIN1Pin2 =31;int =33;int stepIN3Pin3 =35;int stepIN4Pin3 =37;//definieer stepsint stepsPerRevolution =2048; // aantal stappen per omwenteling//definieer knoppen pin poortenconst int button1Pin =A0; // Drukknop 1 analoge pin A0const int button2Pin =A1; // Drukknop 2 Analoge Pin A1const int button3Pin =A2; // Drukknop 3 Analoge Pin A2const int button4Pin =A3; // Drukknop 4 analoge pin A3//definieer elke stepper// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1);/te/3Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1) stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3 (stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3); ongeldige setup () {// Wijs drukknoppin1Pin, I (UT) toe pinMode (button2Pin, INPUT); pinMode (button3Pin, INPUT); pinMode (button4Pin, INPUT); // Wijs pin-uitgang pinMode toe (ENABLE, OUTPUT); pinMode (DIRA, UITGANG); pinMode (DIRB, UITGANG); // Wijs stappensnelheid toe myStepper0.setSpeed ​​(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); // Initialiseer LCD-scherm lcd.begin (16, 2); lcd.wissen(); lcd.setCursor(0, 0); lcd.print("Selecteer uw artikel"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");}void loop() { // lees knoptoewijzing int button1State, button2State, button3State, button4State; button1State =digitalRead (button1Pin); button2State =digitalRead (button2Pin); button3State =digitalRead (button3Pin); button4State =digitalRead (button4Pin); digitalWrite(ENABLE, HIGH);// Stel status in voor (i=0;i<5;i++); // definieer actie wanneer knop 1 wordt ingedrukt if (((button1State ==LOW) &&!(button2State ==LOW))))// als we op knop 1 OF knop 2 drukken {digitalWrite(DIRA,HIGH); // schakel relais digitalWrite in (DIRB, LOW); lcd.wissen(); lcd.setCursor(2, 0); lcd.print("Doseren"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); myStepper0.step(stepsPerRevolution); //loop motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Neem mee"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); vertraging (2500); lcd.setCursor(0, 0); lcd.print("Knopstatus 1"); lcd.setCursor(2, 1); lcd.print("1 2 3 of 4"); digitalWrite (DIRA, LAAG); // schakel relais digitalWrite uit (DIRB, LOW); } // definieer actie wanneer knop 2 wordt ingedrukt if (((button2State ==LOW) &&!(button1State ==LOW)))) // als we op knop 1 OF knop 2 drukken {digitalWrite(DIRA,HIGH); // schakel relais digitalWrite in (DIRB, LOW); lcd.wissen(); lcd.setCursor(2, 0); lcd.print("Doseren"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); myStepper1.step(stepsPerRevolution);//loop motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Neem mee"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); vertraging (2500); lcd.setCursor(0, 0); lcd.print("Knopstatus 2"); lcd.setCursor(2, 1); lcd.print("1 2 3 of 4"); digitalWrite (DIRA, LAAG); // schakel relais digitalWrite uit (DIRB, LOW); } // definieer actie wanneer knop 3 wordt ingedrukt if (((button3State ==LOW) &&!(button4State ==LOW)))) // als we op knop 1 OF knop 2 drukken {digitalWrite(DIRA,HIGH); // schakel relais digitalWrite in (DIRB, LOW); lcd.wissen(); lcd.setCursor(2, 0); lcd.print("Doseren"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); myStepper2.step(stepsPerRevolution);//loop motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Neem mee"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); vertraging (2500); lcd.setCursor(0, 0); lcd.print("Knopstatus 3"); lcd.setCursor(2, 1); lcd.print("1 2 3 of 4"); digitalWrite (DIRA, LAAG); // schakel relais digitalWrite uit (DIRB, LOW); } // definieer actie wanneer knop 4 wordt ingedrukt if (((button4State ==LOW) &&!(button3State ==LOW)))) // als we op knop 1 OF knop 2 drukken {digitalWrite(DIRA,HIGH); // schakel relais digitalWrite in (DIRB, LOW); lcd.wissen(); lcd.setCursor(2, 0); lcd.print("Doseren"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); myStepper3.step(-stepsPerRevolution);//loop motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Neem mee"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); vertraging (2500); lcd.setCursor(0, 0); lcd.print("Knopstatus 4"); lcd.setCursor(2, 1); lcd.print("1 2 3 of 4"); digitalWrite (DIRA, LAAG); // schakel relais digitalWrite uit (DIRB, LOW); }}
Automaat - MET VERANDERENDE LED-VERLICHTINGC#
Bekijk de video!
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  //inclusief stappenmotorbibliotheek//Relaisinstelling#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;//definiërende pinnensectie//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;//definieer stepsint stepsPerRevolution =2048; // aantal stappen per omwenteling//definieer knoppen pin poortenconst int button1Pin =A0; // Drukknop 1 analoge pin A0const int button2Pin =A1; // Drukknop 2 Analoge Pin A1const int button3Pin =A2; // Drukknop 3 Analoge Pin A2const int button4Pin =A3; // Drukknop 4 analoge pin A3//definieer elke stepper// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1);/te/3Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1) stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3 (stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3); ongeldige setup () {// Wijs drukknoppin1Pin, I (UT) toe pinMode (button2Pin, INPUT); pinMode (button3Pin, INPUT); pinMode (button4Pin, INPUT); // Wijs pin-uitgang pinMode toe (ENABLE, OUTPUT); pinMode (PinA, UITGANG); pinMode (PinB, UITGANG); //LED Strips pin setup pinMode (REDPIN, OUTPUT); pinMode (GROENPIN, UITGANG); pinMode (BLUEPIN, UITGANG); // Wijs stappensnelheid toe myStepper0.setSpeed ​​(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); // Initialiseer LCD-scherm lcd.begin (16, 2); lcd.wissen(); lcd.setCursor(0, 0); lcd.print("Selecteer uw artikel"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4"); analoogWrite(REDPIN, 256); analoogWrite(GREENPIN, 256); analogWrite(BLUEPIN, 256);}void loop() { // lees knoptoewijzing int button1State, button2State, button3State, button4State; button1State =digitalRead (button1Pin); button2State =digitalRead (button2Pin); button3State =digitalRead (button3Pin); button4State =digitalRead (button4Pin); digitalWrite(ENABLE, HIGH);// Stel status in voor (i =0; i <5; i++); // definieer actie wanneer knop 1 wordt ingedrukt if (((button1State ==LOW) &&!(button2State ==LOW))))// als we op knop 1 OF knop 2 drukken { digitalWrite(PinA, HIGH); // schakel relais digitalWrite in (PinB, LOW); analoogWrite(REDPIN, 256); voor (b =256; b> 0; b--); analoogWrite(BLUEPIN, b); voor (g =256; g> 0; g--); analogWrite(GROENPIN, g); voor (g =256; g> 0; g--); lcd.wissen(); lcd.setCursor(2, 0); lcd.print("Doseren"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); myStepper0.step(stepsPerRevolution); //loop motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Neem mee"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); vertraging (2500); lcd.setCursor(0, 0); lcd.print("Knopstatus 1"); lcd.setCursor(2, 1); lcd.print("1 2 3 of 4"); voor (b =0; b <256; b++); analoogWrite(BLUEPIN, b); voor (g =0; g <256; g++); analogWrite(GROENPIN, g); digitalWrite (PinA, LAAG); // schakel relais digitalWrite uit (PinB, LAAG); } // definieer actie wanneer knop 2 wordt ingedrukt if (((button2State ==LOW) &&!(button1State ==LOW)))) // als we op knop 1 OF knop 2 drukken { digitalWrite(PinA, HIGH); // schakel relais digitalWrite in (PinB, LOW); analoogWrite(GREENPIN, 256); voor (b =256; b> 0; b--); analoogWrite(BLUEPIN, b); voor (r =256; r> 0; r--); analoogWrite(REDPIN, r); lcd.wissen(); lcd.setCursor(2, 0); lcd.print("Doseren"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); myStepper1.step(stepsPerRevolution);//loop motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Neem mee"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); vertraging (2500); lcd.setCursor(0, 0); lcd.print("Knopstatus 2"); lcd.setCursor(2, 1); lcd.print("1 2 3 of 4"); digitalWrite (PinA, LAAG); // schakel relais digitalWrite uit (PinB, LAAG); voor (b =0; b <256; b++); analoogWrite(BLUEPIN, b); voor (r =0; r <256; r++); analoogWrite(REDPIN, r); } // definieer actie wanneer knop 3 wordt ingedrukt if (((button3State ==LOW) &&!(button4State ==LOW)))) // als we op knop 1 OF knop 2 drukken { digitalWrite(PinA, HIGH); // schakel relais digitalWrite in (PinB, LOW); analoogWrite(BLUEPIN, 256); voor (r =256; r> 0; r--); analoogWrite(REDPIN, r); voor (g =256; g> 0; g--); analogWrite(GROENPIN, g); lcd.wissen(); lcd.setCursor(2, 0); lcd.print("Doseren"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); myStepper2.step(stepsPerRevolution);//loop motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Neem mee"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); vertraging (2500); lcd.setCursor(0, 0); lcd.print("Knopstatus 3"); lcd.setCursor(2, 1); lcd.print("1 2 3 of 4"); digitalWrite (PinA, LAAG); // schakel relais digitalWrite uit (PinB, LAAG); voor (g =0; g <256; g++); analogWrite(GROENPIN, g); voor (r =0; r <256; r++); analoogWrite(REDPIN, r); } // definieer actie wanneer knop 4 wordt ingedrukt if (((button4State ==LOW) &&!(button3State ==LOW))) // als we op knop 1 OF knop 2 drukken { digitalWrite(PinA, HIGH); // schakel relais digitalWrite in (PinB, LOW); analoogWrite(REDPIN, 256); analoogWrite(GREENPIN, 256); voor (b =256; b> 0; b--); analoogWrite(BLUEPIN, b); lcd.wissen(); lcd.setCursor(2, 0); lcd.print("Doseren"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); myStepper3.step(-stepsPerRevolution);//loop motor lcd.clear(); lcd.setCursor(2, 0); lcd.print("Neem mee"); lcd.setCursor (3, 1); lcd.print("Uw artikel"); vertraging (2500); lcd.setCursor(0, 0); lcd.print("Knopstatus 4"); lcd.setCursor(2, 1); lcd.print("1 2 3 of 4"); digitalWrite (PinA, LAAG); // schakel relais digitalWrite uit (PinB, LAAG); voor (b =0; b <256; b++); analoogWrite(BLUEPIN, b); }}
Muntacceptor en complete copdeC#
Volledige code
// Display#include LiquidCrystal lcd(2, 3, 4, 5, 6, 7);//Stepper Library#include  //inclusief stappenmotorbibliotheek// Relaisconfiguratie#define ENABLE 10//#define PinA 8//#define PinB 9//Transitorpinnen voor LED's#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;// Variabelenvolatile int cents =0;int credits =0;//definiërende pinnensectie// 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;//definieer stappen =int stepsPerRevolution 2048; // aantal stappen per omwenteling//definieer knoppen pin poortenconst int button1Pin =A0; // Drukknop 1 analoge pin A0const int button2Pin =A1; // Drukknop 2 Analoge Pin A1const int button3Pin =A2; // Drukknop 3 Analoge Pin A2const int button4Pin =A3; // Drukknop 4 analoge pin A3//definieer elke stepper// 1Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);//2Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1);/te/3Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1) stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);//4Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);// Setupvoid setup() { // Conditie toekennen om te onderbreken voor pin en Pinco onderbreken , STIJGENDE LIJN); // Wijs de ingang van de drukknoppin toe:pinMode (button1Pin, INPUT); pinMode (button2Pin, INPUT); pinMode (button3Pin, INPUT); pinMode (button4Pin, INPUT); // Wijs relaispin-uitgang toe pinMode (ENABLE, OUTPUT);// pinMode (PinA, OUTPUT);// pinMode (PinB, OUTPUT); //LED Strips pin setup pinMode (REDPIN, OUTPUT); pinMode (GROENPIN, UITGANG); pinMode (BLUEPIN, UITGANG); // Wijs stappensnelheid toe myStepper0.setSpeed ​​(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15); // Initialiseer LCD-scherm lcd.begin (16, 2); lcd.wissen(); lcd.setCursor(0, 0); lcd.print("Selecteer uw artikel"); lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4"); analoogWrite(REDPIN, 256); analoogWrite(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.wissen(); 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"); vertraging (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.wissen(); 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.wissen(); 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.wissen(); 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.wissen(); 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);}

Schema's

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

Productieproces

  1. EEG Machine
  2. Automaat
  3. Naaimachine
  4. Hoe werkt een frietautomaat?
  5. Wat is een melkautomaat?
  6. Hoe kan een fritesautomaat warme en verse frites leveren?
  7. Wat is een noedelautomaat?
  8. Wat is een thee-koffiesoepautomaat?
  9. Eet gezond met de Meal Prep Vending Machine!
  10. Wat te verwachten van een frisdrankautomaat?
  11. Popsicle-automaat:het zakelijke potentieel