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

Snoepautomaat

Componenten en benodigdheden

Arduino UNO
× 1
servo (180 graden draaien)
× 1
Adafruit Standaard LCD - 16x2 Wit op Blauw
× 1
SparkFun Drukknopschakelaar 12 mm
× 1
PHPoC Shield voor Arduino
× 1
IR-afstandssensor
× 1
Aan/uit-knop omschakelen
× 1
Broodplank (algemeen)
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Arduino IDE

Over dit project

Het project

Dit is een gemakkelijke manier om een ​​snoepautomaat te maken met alleen:IR-sensor, servo en drukknop. Het kan worden opgesplitst in de volgende stappen:

  • Arduino Uno R3 maken en gebruiken
  • De Arduino coderen en instellen
  • De behuizing en mechanische onderdelen maken
  • De elektronica installeren
  • Testen en gebruik

Hier is een korte demonstratievideo:

Het schrijven van de codering was het moeilijkste voor mij omdat ik nog niet bekend ben met het schrijven van codeertaal, maar het lukt me om het te doen na meerdere fouten en hulp van meneer Google en vrienden. Het schrijven van codes is de langste tijd in dit deel van het project.

Met dank aan de man die me INSPIREERDE om deze snoepautomaat te maken! Dit is de vereenvoudigde versie van: https://www.hackster.io/gatoninja236/candy-dispenser-with-google-assistant-564724

De doos en mechanische onderdelen maken

Dit is het leuke deel van het project om te maken. Het kostte me minstens 1 hele dag om het volledig te voltooien na meerdere fouten en onderdelen die niet passen.

Stap 1

Lay-outcomponenten

Dit ziet er misschien erg rommelig uit, maar dit is de gemakkelijkste manier om elk onderdeel uit te zoeken en elk onderdeel te testen om te zien of er een fout is. Ik heb verschillende kleuren draden gelegd, zodat het gemakkelijker is om naar te kijken. Ik heb alle componenten op een stuk karton gelegd en uitgezocht welke eerst gaat.

Stap 2

De doos maken

Ik heb een technische tekening gemaakt van hoe de doos eruit zou moeten zien. De meeste onderdelen zijn gemaakt van karton en sommige zijn gemaakt van acryl. Daarna meet ik elk onderdeel.

  • Voor- en achterkant =20cm x 16cm (Achterkant is van acryl)
  • Zijkant - Zijkant =12cm x 16cm
  • Boven- en onderkant =20cm x 12cm

Stap 3

Dit is hoe het eruit zal zien nadat je ze allemaal aan elkaar hebt bevestigd (eerst met plakband).

Vervolgens knipte ik plaatsen uit voor de componenten:

  • LCD =7,2 cm x 2,5 cm
  • Knoppen =1,2 cm x 1,2 cm

Voor de beker:

  • Lengte x Hoogte =9cm x 12cm
  • Breedte x Diepte =9cm x 9cm

Vergeet niet om ook een uitsparing voor de sensoren te maken:

Ik heb de dispenser in stappen gemaakt zodat het snoep niet meteen valt:

Stap 4

Ik legde het breadboard en Arduino achter elkaar neer. Ik gebruik acryl om ze aan elkaar te plakken. Op deze manier zal het veel ruimte besparen.

Stap 5

Begin met het bevestigen van de componenten op het bord. Ik begin met LCD en knoppen.

Nadat ik alle kabels op de componenten had aangesloten, heb ik ze vervolgens in het midden van de doos bevestigd.

De servo bevestigen:

Zo ziet het er van de achterkant uit. Ik heb ook een aan / uit-knop toegevoegd om de Dispenser op te laden met behulp van de batterij.

Stap 6

De afgewerkte look.

Code

  • Snoepautomaat
SnoepautomaatArduino
//------LIBRARIES-----#include  #include #include //------LIBRARIES--- --// Stel het LCD-adres in op 0x27 voor een display met 16 tekens en 2 regels LiquidCrystal_I2C lcd (0x27, 16, 2);Servo myservo;int pos =90; // servo startpositie in knopCLK =7; //buttonMet de klok mee pinint buttonAntiCLK =6; //buttonAntiClockwise pin//int sensorPin =2; // IR-sensor die moet worden bevestigd aan digitale pin NO.2//int sensorState =0; // variabele sensorState voor het opslaan van statistieken over de status van de sensorint set =0;const int avoidPin =5; // de ir obstakelsensor wordt bevestigd aan pin 5void setup () { lcd.begin (); // initialiseer het LCD lcd.clear(); mijnservo.attach(9); // Servo Digitale 9 pinMode (buttonCLK, INPUT); pinMode (knopAntiCLK, INPUT); pinMode (vermijdPin, INPUT); // stel de avoidPin in als INPUT Serial.begin (9600); lcd.achtergrondverlichting(); // Zet de blacklight lcd.setCursor (3,0) aan; lcd.print("Welkom bij"); lcd.setCursor(3,1); lcd.print("Snoepland"); vertraging (2000); lcd.wissen(); lcd.setCursor(0,0); lcd.print("Hoeveel snoep?"); lcd.setCursor(0,1); lcd.print("Een beetje veel"); delay(5000);}void loop(){ //---------- DIT IS DE ALS-FUNCTIES VOOR KNOPPEN ----------- if (digitalRead (buttonCLK) ==HIGH ) // buttonClockwise is ingedrukt { //TurnClockwise(); //Sensordetectie(); lcd.wissen(); lcd.print("Gelieve een kopje te plaatsen"); vertraging (2000); lcd.wissen(); instellen =instellen + 1; } if (digitalRead (buttonAntiCLK) ==HIGH) // buttonAntiClockwise is ingedrukt {//TurnAntiClockwise(); //Sensordetectie(); lcd.wissen(); lcd.print("Gelieve een kopje te plaatsen"); vertraging (2000); lcd.wissen(); stel =stel + 2; } if(set ==1) { IRCLK(); } if(set ==2) { IRAntiCLK(); } //---------- DIT IS DE ALS-FUNCTIES VOOR KNOPPEN----------- }void TurnClockwise(){ Serial.println ("Candy 1 Being Dispensed"); CandyText1(); // Display Candy Type Text for (pos =90; pos <180; pos +=1) // gaat van 0 graden naar 180 graden { myservo.write (pos); // vertel servo om naar positie te gaan in variabele 'pos' vertraging (15); // wacht 15 ms totdat de servo de positie bereikt } if (pos ==180) { delay (2000); ThankYouText(); // bedanktekst weergeven }}void TurnAntiClockwise(){ Serial.println ("Candy 2 Being Dispensed"); CandyText2(); // Display Candy Type Text for (pos =90; pos <180; pos +=1) // gaat van 0 graden naar 180 graden { myservo.write (pos); // vertel servo om naar positie te gaan in variabele 'pos' vertraging (20); // wacht 15 ms totdat de servo de positie bereikt } if (pos ==180) { delay (3000); ThankYouText(); // bedanktekst weergeven } }void IRCLK () {delay (1000); // maak een vertraging van 1s boolean avoidVal =digitalRead (avoidPin); // lees de waarde van pin4 lcd.setCursor (0,0); lcd.print("Detectiekop"); lcd.setCursor(0,14); lcd.print("..."); if (avoidVal ==LAAG) // als de waarde LAAG is { lcd.clear (); lcd.print("Beker geplaatst"); vertraging (2000); Draai met de klok mee(); }}nietig IRAntiCLK(){ delay(1000); // maak een vertraging van 1s boolean avoidVal =digitalRead (avoidPin); // lees de waarde van pin4 lcd.setCursor (0,0); lcd.print("Detectiekop"); lcd.setCursor(0,14); lcd.print("..."); if (avoidVal ==LAAG) // als de waarde LAAG is { lcd.clear (); lcd.print("Beker geplaatst"); vertraging (2000); Tegen de klok in draaien(); } }nietig CandyText1(){ lcd.clear(); lcd.setCursor(4,0); lcd.print("Gieten"); lcd.setCursor(1,1); lcd.print("Little Candy");}void CandyText2(){ lcd.clear(); lcd.setCursor(4,0); lcd.print("Gieten"); lcd.setCursor(3,1); lcd.print("Lot Candy");}void ThankYouText(){ lcd.clear(); lcd.setCursor(5,0); lcd.print("Bedankt"); lcd.setCursor(6,1); lcd.print("Jij"); vertraging (15); software_Reset();}void software_Reset() // Herstart het programma vanaf het begin, maar reset de randapparatuur en registers niet { asm vluchtig ("jmp 0"); } 

Schema's

Het ziet er een beetje ingewikkeld uit, maar volg hoe de kleurbedrading is.

Productieproces

  1. Candy Cane
  2. Candy Corn
  3. Jawbreaker
  4. suikerspin
  5. Gummy Candy
  6. M &M® Candy
  7. Schakel/LED-paneel met Arduino voor FS2020
  8. Arduino Spybot
  9. FlickMote
  10. Zelfgemaakte tv B-Gone
  11. Hoofdklok