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

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Komponenten und Zubehör

FriendlyARM 1/4 Sperrholz (auf im Plan angegebene Maße zuschneiden) × 4
3/4″ Sperrholz-Leisten (3/4″ breit, Länge passend zum verbindenden Stück, siehe Plan) × 1
LAFVIN 5er-Set 28BYJ-48 ULN2003 5V Schrittmotor + ULN2003 Treiberplatine für Arduino × 1
PC-Zubehör – IDC 1,27 mm Flachbandkabel (50-polig, 10 ft) für saubere Verkabelung × 1
Glarks 635-teiliges Dupont-Stecker-Set (Male/Female, 40-polig) für professionelle Verbindungen × 1
Gamelec beleuchteter Mikroschalter (Ersatz) – Tasten × 1
Steckbrett (Breadboard) (Lochrasterplatine funktioniert auch) × 1
30 Stück doppelseitige PCB-Prototyp-Platinen (1–2 Stück benötigt, gute Größe für zukünftige Projekte) × 1
Arduino Mega 2560 (verwendeter Controller) × 1
Tolako 5V Relais-Modul für Arduino ARM (verhindert Überhitzung der Motoren) × 1
HiLetgo 2er-Pack 1602 Serial LCD Modul Display (zeigt gewählten Artikel an) × 1
LED-Lichtleisten (optional) × 2
50 ft. 8-AWG Massivdraht Kupfer-Erdungsdraht (für Spulenwicklung) × 1
Flacher Metall-Regalteiler × 1

Benötigte Werkzeuge und Maschinen

Apps und Onlinedienste

Über dieses Projekt

Der persönliche Snack-Automat

Dieses Projekt ist ein schrittweiser Bau eines persönlichen Snack-Automaten. Er kann mit Ihren Lieblingssnacks befüllt werden oder ins Büro gestellt werden, um Leckereien mit dem Team zu teilen. Schauen Sie rein und hinterlassen Sie Ihre Gedanken.

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Gehäuse bauen

Ich beziehe mich auf die Skizzen im Text – bitte dort für Details nachsehen.

Abmessungen: 21″ (53,3 cm) Breite × 18″ (45,7 cm) Tiefe × 24 1/4″ (61,6 cm) Höhe (Außenmaße)

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung
Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Kasten wie im Plan gezeigt mit den 3/4″ Leisten an jedem Verbindungspunkt zusammenbauen. Seitenwände stehen auf dem Boden und unter dem Deckel. Außenmaße der Umfassungswände: 21″ B × 24 1/4″ H.

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Trennwand vor Einbau vorbereiten: Vom oberen Rand 16 1/4″ nach unten messen und Leiste für unteren Boden anbringen. Weitere 8 1/4″ nach unten (also 24 1/2″ von oben) Leiste für oberen Boden anbringen. Dies auf der linken Wand (von vorne gesehen) wiederholen, damit die Böden befestigt werden können.

Wichtig: Unteren Boden zuerst einbauen, sonst ist das Befestigen an den Leisten sehr schwierig.

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Nach Anbringen der Leisten für die Böden die 13″ × 12″ Platten auf jeder Leistenpaar montieren. Das positioniert die Trennwand automatisch. Danach Leisten oben und unten an der rechten Seite der Trennwand anbringen und an Deckel/Boden befestigen – die Struktur ist nun stabil.

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Rückwand montieren und Motoren vorbereiten. 3D-gedruckte Spulenräder bereithalten, um Bohrlöcher zu planen. Räder messen und 1/4″ Höhe addieren (Platz für Spulendrehung). Je nach Material anpassen. Auf dem Boden 6 1/2″ von linker Wand messen (Mitte). 3 1/4″ von linker Seite für Mitte jedes Fachs. Höhenmaß für Bohrpunkte verwenden. Loch so bohren, dass Rad ohne Reibung am Brett auf Motorwelle passt. Motoren festschrauben.

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Motor-Relais einrichten

Anschlüsse gemäß Schaltplan mit L293D (Kerbe links) herstellen, um Relais zu steuern und Motoren mit Strom zu versorgen.

(Von links nach rechts)

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Display & Tasten einbauen

Display: Rechtsseitig (von vorne) Platz wählen, Ausschnitt für Anzeigeteil markieren (2,53937″ × 0,5708661″).
Tasten: Rechtsseitig 4 Löcher für Taster bohren (1,10236″ Durchmesser bei Originaltastern). Lieber kleiner bohren und mit Schleifpapier nacharbeiten.

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung
Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Achten Sie auf exakte Anschlusspositionen gemäß Schaltplan. Die im Plan gezeigten LEDs sind die in den Tastern verbauten LEDs – im Plan separat dargestellt für bessere Lesbarkeit.

Jeden Motor an seinen mitgelieferten Treiber anschließen. Dann jeden Treiber wie folgt an den Controller anschließen:

Motor-Verkabelung:

Stromversorgung an 12V-Seite des Breadboards (vom ATX-Netzteil, siehe unten). Die 4 „IN“-Pins am Treiber an den Controller:

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

********* NICHT DIE ERSTEN 2 PINS IN DIESEM BLOCK VERWENDEN – SIND 5V PINS, NICHT IN DIESEM PROJEKT GENUTZT *********

Tasten-Anschlüsse:

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

LCD-Display (1602 Serial):

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

ATX-Netzteil vorbereiten:

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Nur benötigte Kabel abschneiden. Restliche Kabel im Stecker belassen – sicherer und für andere Projekte nutzbar.

ATX-Pinbelegung:

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Boden-Teiler & Spulen

Boden-Teiler: In der Mitte (6 1/2″ von linker Wand/Trennwand) Markierung von oben übernehmen. Flaches Metall zu einem Dreieck (^) biegen. Als Mittelteiler über der Markierung zentrieren. Für zweiten Boden wiederholen. Mit Heißkleber fixieren. Seitliche Führungen optional.

Spulen wickeln: 1 1/2″ Rohr (Rohr, Silikonkartusche, Sprühdose) als Wickelform. Gummiband von oben nach unten spannen, parallel Linien auf beiden Seiten zeichnen. Auf einer Seite 1″ vom Rand markieren, dann alle 2″ weitere Markierungen. Auf der anderen Seite nur 2″-Abstände. Spule auf der 1″-Seite beginnen und jede Markierung auf beiden Seiten treffen → 2″ Abstand zwischen Windungen. Für Schokoriegel 1″ Abstand (Formel halbieren).

Spule an 3D-gedrucktes Rad befestigen: Auf 1″-Seite Spule zum Kreis schließen, Durchmesser etwas kleiner als Rad wählen. Um Radkante legen – Spule spannt sich selbst. Mit wenig Heißkleber am Radende fixieren.

LED-Streifen

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Plus an +12V Pin der 12V-Breadboard-Seite, Masse an Masse-Pin der 12V-Seite (nicht im Plan eingezeichnet).

STELLEN SIE ALLE FRAGEN, DAMIT ICH DAS PROJEKT NOCH EINFACHER MACHEN KANN.

Code

Snack-Automat – OHNE Farbwechsel der LEDs

// Display
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

// Stepper Library
#include <Stepper.h>

// Relay Setup
#define ENABLE 10
#define DIRA 8
#define DIRB 9

// Define "i"
int i;

// Defining pins section
// Stepper Connect 1
int stepIN1Pin = 22;
int stepIN2Pin = 24;
int stepIN3Pin = 26;
int stepIN4Pin = 28;

// Stepper Connect 2
int stepIN1Pin1 = 23;
int stepIN2Pin1 = 25;
int stepIN3Pin1 = 27;
int stepIN4Pin1 = 29;

// Stepper Connect 3
int stepIN1Pin2 = 30;
int stepIN2Pin2 = 32;
int stepIN3Pin2 = 34;
int stepIN4Pin2 = 36;

// Stepper Connect 4
int stepIN1Pin3 = 31;
int stepIN2Pin3 = 33;
int stepIN3Pin3 = 35;
int stepIN4Pin3 = 37;

// Define steps
int stepsPerRevolution = 2048;

// Define buttons pin ports
const int button1Pin = A0;
const int button2Pin = A1;
const int button3Pin = A2;
const int button4Pin = A3;

// Define each stepper
Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);
Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN4Pin1);
Stepper myStepper2(stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);
Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);

void setup() {
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(button3Pin, INPUT);
  pinMode(button4Pin, INPUT);
  pinMode(ENABLE, OUTPUT);
  pinMode(DIRA, OUTPUT);
  pinMode(DIRB, OUTPUT);
  myStepper0.setSpeed(15);
  myStepper1.setSpeed(15);
  myStepper2.setSpeed(15);
  myStepper3.setSpeed(15);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Select your item");
  lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");
}

void loop() {
  int button1State, button2State, button3State, button4State;
  button1State = digitalRead(button1Pin);
  button2State = digitalRead(button2Pin);
  button3State = digitalRead(button3Pin);
  button4State = digitalRead(button4Pin);
  digitalWrite(ENABLE, HIGH);
  for (i=0;i<5;i++);

  // Button 1
  if (((button1State == LOW) && !(button2State == LOW))) {
    digitalWrite(DIRA,HIGH); digitalWrite(DIRB,LOW);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
    lcd.setCursor(3,1); lcd.print("Your Item");
    myStepper0.step(stepsPerRevolution);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 1");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(DIRA,LOW); digitalWrite(DIRB,LOW);
  }
  // Button 2
  if (((button2State == LOW) && !(button1State == LOW))) {
    digitalWrite(DIRA,HIGH); digitalWrite(DIRB,LOW);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
    lcd.setCursor(3,1); lcd.print("Your Item");
    myStepper1.step(stepsPerRevolution);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 2");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(DIRA,LOW); digitalWrite(DIRB,LOW);
  }
  // Button 3
  if (((button3State == LOW) && !(button4State == LOW))) {
    digitalWrite(DIRA,HIGH); digitalWrite(DIRB,LOW);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
    lcd.setCursor(3,1); lcd.print("Your Item");
    myStepper2.step(stepsPerRevolution);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 3");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(DIRA,LOW); digitalWrite(DIRB,LOW);
  }
  // Button 4
  if (((button4State == LOW) && !(button3State == LOW))) {
    digitalWrite(DIRA,HIGH); digitalWrite(DIRB,LOW);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
    lcd.setCursor(3,1); lcd.print("Your Item");
    myStepper3.step(-stepsPerRevolution);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 4");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(DIRA,LOW); digitalWrite(DIRB,LOW);
  }
}

Snack-Automat – MIT Farbwechsel der LEDs

// Display
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#include <Stepper.h>
#define ENABLE 10
#define PinA 8
#define PinB 9
#define REDPIN 38
#define GREENPIN 39
#define BLUEPIN 40
int i;
int r, g, b;

// Stepper pins (same as above)
int stepIN1Pin = 22; int stepIN2Pin = 24; int stepIN3Pin = 26; int stepIN4Pin = 28;
int stepIN1Pin1 = 23; int stepIN2Pin1 = 25; int stepIN3Pin1 = 27; int stepIN4Pin1 = 29;
int stepIN1Pin2 = 30; int stepIN2Pin2 = 32; int stepIN3Pin2 = 34; int stepIN4Pin2 = 36;
int stepIN1Pin3 = 31; int stepIN2Pin3 = 33; int stepIN3Pin3 = 35; int stepIN4Pin3 = 37;
int stepsPerRevolution = 2048;
const int button1Pin = A0; const int button2Pin = A1; const int button3Pin = A2; const int button4Pin = A3;
Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);
Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN4Pin1);
Stepper myStepper2(stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);
Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);

void setup() {
  pinMode(button1Pin, INPUT); pinMode(button2Pin, INPUT); pinMode(button3Pin, INPUT); pinMode(button4Pin, INPUT);
  pinMode(ENABLE, OUTPUT); pinMode(PinA, OUTPUT); pinMode(PinB, OUTPUT);
  pinMode(REDPIN, OUTPUT); pinMode(GREENPIN, OUTPUT); pinMode(BLUEPIN, OUTPUT);
  myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15);
  lcd.begin(16, 2); lcd.clear();
  lcd.setCursor(0,0); lcd.print("Select your item");
  lcd.setCursor(0,1); lcd.print(" #1 #2 #3 #4");
  analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); analogWrite(BLUEPIN, 256);
}

void loop() {
  int button1State, button2State, button3State, button4State;
  button1State = digitalRead(button1Pin);
  button2State = digitalRead(button2Pin);
  button3State = digitalRead(button3Pin);
  button4State = digitalRead(button4Pin);
  digitalWrite(ENABLE, HIGH);
  for (i = 0; i < 5; i++);

  // Button 1
  if (((button1State == LOW) && !(button2State == LOW))) {
    digitalWrite(PinA, HIGH); 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);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 1");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    for (b = 0; b < 256; b++); analogWrite(BLUEPIN, b);
    for (g = 0; g < 256; g++); analogWrite(GREENPIN, g);
    digitalWrite(PinA, LOW); digitalWrite(PinB, LOW);
  }
  // Button 2
  if (((button2State == LOW) && !(button1State == LOW))) {
    digitalWrite(PinA, HIGH); 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);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 2");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(PinA, LOW); digitalWrite(PinB, LOW);
    for (b = 0; b < 256; b++); analogWrite(BLUEPIN, b);
    for (r = 0; r < 256; r++); analogWrite(REDPIN, r);
  }
  // Button 3
  if (((button3State == LOW) && !(button4State == LOW))) {
    digitalWrite(PinA, HIGH); 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);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 3");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(PinA, LOW); digitalWrite(PinB, LOW);
    for (g = 0; g < 256; g++); analogWrite(GREENPIN, g);
    for (r = 0; r < 256; r++); analogWrite(REDPIN, r);
  }
  // Button 4
  if (((button4State == LOW) && !(button3State == LOW))) {
    digitalWrite(PinA, HIGH); 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);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 4");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(PinA, LOW); digitalWrite(PinB, LOW);
    for (b = 0; b < 256; b++); analogWrite(BLUEPIN, b);
  }
}

Münzprüfer & vollständiger Code

// Display
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#include <Stepper.h>
#define ENABLE 10
//#define PinA 8
//#define PinB 9
#define REDPIN 38
#define GREENPIN 39
#define BLUEPIN 40
//int i;
int r, g, b;
const int coinpin = 21;
const int ledpin = 13;
const int targetcents = 100;
volatile int cents = 0;
int credits = 0;

// Stepper pins (same as above)
int stepIN1Pin = 22; int stepIN2Pin = 24; int stepIN3Pin = 26; int stepIN4Pin = 28;
int stepIN1Pin1 = 23; int stepIN2Pin1 = 25; int stepIN3Pin1 = 27; int stepIN4Pin1 = 29;
int stepIN1Pin2 = 30; int stepIN2Pin2 = 32; int stepIN3Pin2 = 34; int stepIN4Pin2 = 36;
int stepIN1Pin3 = 31; int stepIN2Pin3 = 33; int stepIN3Pin3 = 35; int stepIN4Pin3 = 37;
int stepsPerRevolution = 2048;
const int button1Pin = A0; const int button2Pin = A1; const int button3Pin = A2; const int button4Pin = A3;
Stepper myStepper0(stepsPerRevolution, stepIN1Pin, stepIN3Pin, stepIN2Pin, stepIN4Pin);
Stepper myStepper1(stepsPerRevolution, stepIN1Pin1, stepIN3Pin1, stepIN2Pin1, stepIN4Pin1);
Stepper myStepper2(stepsPerRevolution, stepIN1Pin2, stepIN3Pin2, stepIN2Pin2, stepIN4Pin2);
Stepper myStepper3(stepsPerRevolution, stepIN1Pin3, stepIN3Pin3, stepIN2Pin3, stepIN4Pin3);

void setup() {
  attachInterrupt(digitalPinToInterrupt(coinpin), coinInterrupt, RISING);
  pinMode(button1Pin, INPUT); pinMode(button2Pin, INPUT); pinMode(button3Pin, INPUT); pinMode(button4Pin, INPUT);
  pinMode(ENABLE, OUTPUT);
  // pinMode(PinA, OUTPUT); pinMode(PinB, OUTPUT);
  pinMode(REDPIN, OUTPUT); pinMode(GREENPIN, OUTPUT); pinMode(BLUEPIN, OUTPUT);
  myStepper0.setSpeed(15); myStepper1.setSpeed(15); myStepper2.setSpeed(15); myStepper3.setSpeed(15);
  lcd.begin(16, 2); lcd.clear();
  lcd.setCursor(0,0); lcd.print("Select your item");
  lcd.setCursor(0,1); lcd.print(" #1 #2 #3 #4");
  analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); analogWrite(BLUEPIN, 256);
}

void loop() {
  if (cents >= targetcents) {
    credits++; cents -= targetcents;
  }
  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");
  delay(1000);

  if (credits > 0) {
    int button1State = digitalRead(button1Pin);
    int button2State = digitalRead(button2Pin);
    int button3State = digitalRead(button3Pin);
    int button4State = digitalRead(button4Pin);

    // Button 1
    if (((button1State == LOW) && !(button2State == LOW))) {
      digitalWrite(ENABLE, HIGH);
      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);
      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);
      credits--; cents = 0;
    }
    // Button 2
    if (((button2State == LOW) && !(button1State == LOW))) {
      digitalWrite(ENABLE, HIGH);
      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);
      lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
      lcd.setCursor(3,1); lcd.print("Your Item");
      delay(2500);
      digitalWrite(ENABLE, LOW);
      for (b = 0; b < 256; b++); analogWrite(BLUEPIN, b);
      for (r = 0; r < 256; r++); analogWrite(REDPIN, r);
      credits--; cents = 0;
    }
    // Button 3
    if (((button3State == LOW) && !(button4State == LOW))) {
      digitalWrite(ENABLE, HIGH);
      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);
      lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
      lcd.setCursor(3,1); lcd.print("Your Item");
      delay(2500);
      digitalWrite(ENABLE, LOW);
      for (g = 0; g < 256; g++); analogWrite(GREENPIN, g);
      for (r = 0; r < 256; r++); analogWrite(REDPIN, r);
      credits--; cents = 0;
    }
    // Button 4
    if (((button4State == LOW) && !(button3State == LOW))) {
      digitalWrite(ENABLE, HIGH);
      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);
      lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
      lcd.setCursor(3,1); lcd.print("Your Item");
      delay(2500);
      digitalWrite(ENABLE, LOW);
      for (b = 0; b < 256; b++); analogWrite(BLUEPIN, b);
      credits--; cents = 0;
    }
  }
}

void coinInterrupt() {
  cents += 5;
  digitalWrite(ledpin, HIGH);
}

Schaltplan

Komplettes Systemdiagramm: ATX-Netzteil, Motoren, LCD, LEDs, Beleuchtung, Controller

Eigener Münzautomat: Persönlicher Snack-Automat bauen – Teile & Montageanleitung

Herstellungsprozess

  1. EEG-Geräte: Design, Fertigung und neue Anwendungen
  2. Die Entwicklung und Fertigung von Nähmaschinen: Von der Innovation des 19. Jahrhunderts zur modernen Automatisierung
  3. Pommes-Frites-Automaten: Funktionsweise & Hintergründe
  4. Frischmilch-Automaten (Milch-Tankstellen): Komfortabel, Günstig, Ökologisch
  5. Wie Chip-Automaten heiße, frische Pommes frites auf Knopfdruck liefern
  6. Nudel-Automaten entdecken: Funktionsweise und Angebot
  7. Heißgetränke-Automaten (Tee, Kaffee, Suppe): Technik, Hygiene & Wirtschaftlichkeit
  8. Frische, gesunde Mahlzeiten jederzeit: Unser Meal-Prep-Automat
  9. Alles, was Sie über Getränkeautomaten wissen müssen
  10. Gewinnpotenzial von Eis-am-Stiel-Automaten: Geschäftschancen erschließen