Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Composants et fournitures

Composant Quantité Notes
Contreplaqué 1/4" (FriendlyARM) 4 Découpé aux dimensions du schéma
Contreplaqué 3/4" pour renforts 1 Découpé en bandes 3/4" largeur, longueur selon pièce à relier, voir schéma
LAFVIN 5 Sets Moteur Pas-à-Pas 28BYJ-48 5V + Driver ULN2003 1 Ces moteurs pourront pousser n'importe quelle friandise
Câble ruban plat couleur IDC 1,27mm pour connecteurs 2,54mm (50P-10FT) 1 Pour une finition propre et professionnelle
Connecteurs Dupont Male/Femelle 635 pcs (Glarks) 1 Pour une finition propre et professionnelle
Micro-interrupteur illuminé (Gamelec) 1 Il faut des boutons !
Plaque d'essai (breadboard) 1 Les cartes à souder fonctionnent aussi
Kit 30 cartes PCB double face prototype 1 1 ou 2 suffisent, taille parfaite pour futurs projets
Arduino Mega 2560 1 Contrôleur utilisé
Module Relais 5V pour Arduino ARM (Tolako) 1 Nécessaire pour éviter la surchauffe des moteurs
Module LCD Série 1602 (HiLetgo, 2 pcs) 1 Sans cela, impossible de savoir quel bouton pressé
Bandeaux LED 2 Optionnel
Fil cuivre nu 8 AWG 50 ft (mise à la terre) 1 Pour fabriquer les bobines
Séparateur d'étagère plat en métal 1

Outils et machines nécessaires

Applications et services en ligne

À propos de ce projet

LE DISTRIBUTEUR AUTOMATIQUE PERSONNEL

Ce projet est une construction pas à pas d'un distributeur automatique personnel. Il peut être rempli avec vos collations préférées ou apporté au bureau pour partager des friandises avec votre équipe. Regardez et dites-moi ce que vous en pensez.

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Construction de la machine :

Je me référerai aux schémas tout au long du texte, veuillez vous y reporter pour clarification.

Dimensions de la machine : 53 cm L x 46 cm P x 61,5 cm H (Dimensions du caisson)

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage
Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Assemblez le caisson comme montré sur le schéma en utilisant les renforts 3/4" à chaque point de jonction. Notez que les parois latérales reposent SUR la plaque du bas et SOUS la plaque du haut. Les parois périmétriques doivent mesurer 53 cm L x 61,5 cm H.

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

La paroi de séparation doit être préparée avant installation. Mesurez 41,3 cm depuis le haut et fixez les renforts pour l'étagère basse. Mesurez 21 cm depuis le haut et fixez les renforts pour l'étagère haute. Faites de même sur la paroi gauche (vue de face) pour fixer les renforts des étagères haute et basse.

**** Note : l'étagère basse doit être installée en premier, sinon la fixation aux renforts sera très difficile.****

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Une fois les renforts installés pour les étagères, utilisez les panneaux 33 x 30 cm et installez-en un sur chaque jeu de renforts. Cela positionnera automatiquement la paroi de séparation. Fixez ensuite les renforts en haut et en bas du côté droit de la paroi de séparation, puis fixez-la aux panneaux haut et bas. Cela rigidifiera complètement la structure.

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Installez le panneau arrière et préparez l'installation des moteurs. Assurez-vous d'avoir les roues de bobine imprimées en 3D pour les mesurer et percer les trous. Mesurez les roues et ajoutez 6 mm à la hauteur pour laisser de l'espace à la rotation de la bobine. Ajustez selon votre matériau. Mesurez 16,5 cm sur l'étagère pour marquer son centre. Mesurez 8,25 cm pour trouver le centre de chaque section d'étagère. Utilisez la mesure de hauteur pour repérer les points de perçage. Percez un trou permettant de connecter la roue au moteur sans que l'axe ne frotte sur la planche. Terminez le montage des moteurs et vissez les fixations.

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Configuration du relais moteur :

Connectez les broches comme suit. Utilisez le CI L293D (encoche à gauche) (sur le schéma) pour contrôler le relais et alimenter les moteurs.

(De gauche à droite)

  • Broche 1 → connecteur broche 10 sur contrôleur
  • Broche 2 → connecteur broche 9 sur contrôleur
  • Broche 3 → côté positif du relais (3 broches face à vous, broche gauche)
  • Broche 4 → GND 12V sur breadboard
  • Broche 5 → Non utilisée
  • Broche 6 → côté GND du relais (3 broches face à vous, broche droite)
  • Broche 7 → connecteur broche 8 sur contrôleur
  • Broche 8 → +12V sur breadboard
  • Broche centrale du relais → +12V sur breadboard
  • Broche arrière droite du relais (3 broches face à vous, arrière droite) → fil positif vers drivers moteurs
Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Installation écran & boutons :

Écran : Choisissez un emplacement sur le côté droit de la machine (vue de face) et tracez le trou pour la partie affichage (64,5 x 14,5 mm).

Boutons : Choisissez un emplacement côté droit et tracez les trous pour les 4 boutons. Diamètre 28 mm si mêmes boutons que la liste. Utilisez un foret légèrement plus petit et du papier de verre pour ajuster.

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage
Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Assurez-vous que toutes les connexions sont aux mêmes emplacements que sur le schéma. Les LEDs sur le schéma sont celles intégrées aux boutons poussoirs ; elles sont montrées séparément pour la lisibilité.

Connectez chaque moteur à son driver fourni. Puis connectez chaque driver au contrôleur :

Configuration Moteurs :

L'alimentation doit être connectée au côté 12V du breadboard (provenant de l'alimentation ATX préparée à la fin). Connectez les 4 broches « in » du driver au contrôleur :

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

********* NE PAS CONNECTER AUX 2 PREMIÈRES BROCHES DE CE BLOC : CE SONT DES BROCHES 5V - NON UTILISÉES DANS CE PROJET *********

  • Moteur 1 : Broches Bleues 22, 24, 26, 28
  • Moteur 2 : Broches Jaunes 23, 25, 27, 29
  • Moteur 3 : Broches Vertes 30, 32, 34, 36
  • Moteur 4 : Broches Rouges 31, 33, 35, 37

Connexions Boutons :

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage
  • Bouton 1 : un côté → 5V, autre côté → résistance 220Ω vers GND + broche Analogique A0
  • Bouton 2 : un côté → 5V, autre côté → résistance 220Ω vers GND + broche Analogique A1
  • Bouton 3 : un côté → 5V, autre côté → résistance 220Ω vers GND + broche Analogique A2
  • Bouton 4 : un côté → 5V, autre côté → résistance 220Ω vers GND + broche Analogique A3

ÉCRAN LCD :

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage
  • Alimentation/GND côté 5V du breadboard
  • Broche 1 → GND
  • Broche 2 → 5V
  • Broche 3 → Potentiomètre réglable (Gauche → GND, Droite → 5V, Milieu → Broche 3 LCD) — Réglage contraste
  • Broche 4 → Broche 2 contrôleur
  • Broche 5 → GND
  • Broche 6 → Broche 3 contrôleur
  • Broches 7-10 → NON UTILISÉES
  • Broche 11 → Broche 4 contrôleur
  • Broche 12 → Broche 5 contrôleur
  • Broche 13 → Broche 6 contrôleur
  • Broche 14 → Broche 7 contrôleur
  • Broche 15 → 5V
  • Broche 16 → GND
Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

ALIMENTATION ATX :

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Ne coupez que les fils nécessaires. Les autres restent dans le connecteur plastique pour réutilisation future.

Broches ATX :

  • Coupez et dénudez (GND) fil noir broche 3 et (Signal) fil vert broche 16. Connectez à un interrupteur pour allumer/éteindre la machine.
  • Coupez et dénudez (GND) fil noir broche 7 et (+12V) fil jaune broche 10. Connectez au côté 12V du breadboard (connexions jaune/noir).
  • Coupez et dénudez (GND) fil noir broche 24 et (+12V) fil jaune broche 11. Connectez à un connecteur compatible pour alimenter l'Arduino.
  • Coupez et dénudez (GND) fil noir broche 19 et (+5V) fil rouge broche 21. Connectez au côté 5V du breadboard.
Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Séparateurs d'étagères et Bobines :

Étagères : Au point central 16,5 cm du mur gauche (vue de face) ou paroi de séparation, il doit y avoir une marque. Utilisez le métal plat et pliez-le en triangle « ^ ». Cela servira de séparateur central. Centrez le triangle sur la marque. Répétez pour la deuxième étagère. Fixez à la colle chaude. J'ai mis des glissières sur les côtés mais c'est optionnel.

Bobines : Trouvez un tube de 3,8 cm Ø (tube, bombe peinture, etc.). Astuce : enroulez un élastique du haut en bas sur la longueur. Tracez les lignes droites le long de l'élastique des deux côtés. Une fois les lignes parallèles tracées, marquez les espacements. D'un côté, mesurez 2,5 cm et marquez, puis tous les 5 cm. De l'autre côté, marquez seulement tous les 5 cm. Commencez la bobine côté 2,5 cm et continuez pour toucher chaque marque des deux côtés. Cela donne un espace de 5 cm entre les barreaux. Suffisant pour la plupart des articles. Pour des barres chocolatées, réduisez à 2,5 cm (divisez par deux).

Connexion bobines aux roues 3D : Certains modèles de roues du commerce fonctionnent (voir Amazon). Côté 2,5 cm, comprimez la bobine en cercle. Réduisez le diamètre légèrement plus petit que la roue. Ajustez-la autour du bord de la roue ; elle se comprimera et tiendra. Mettez un point de colle chaude sur la roue au bout de la bobine pour la fixer.

Bandeaux LED :

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Connectez le fil positif à la broche +12V du côté 12V du breadboard. Connectez le fil de masse à la broche GND du côté 12V (pas sur le schéma).

POSEZ TOUTES VOS QUESTIONS POUR QUE JE PUISSE METTRE À JOUR ET RENDRE CE PROJET LE PLUS FACILE POSSIBLE.

Code

Distributeur Automatique - SANS CHANGEMENT COULEURS LED Arduino

Tout le nécessaire pour compléter et comprendre le projet

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

// Bibliothèque Stepper
#include <Stepper.h>

// Configuration Relais
#define ENABLE 10
#define DIRA 8
#define DIRB 9

// Variable "i"
int i;

// Définition broches
// 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;

// Pas par révolution
int stepsPerRevolution = 2048;

// Broches boutons
const int button1Pin = A0;
const int button2Pin = A1;
const int button3Pin = A2;
const int button4Pin = A3;

// Définition steppers
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++);

  // Bouton 1 pressé
  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);
  }

  // Bouton 2 pressé
  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);
  }

  // Bouton 3 pressé
  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);
  }

  // Bouton 4 pressé
  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);
  }
}
Distributeur Automatique - AVEC CHANGEMENT COULEURS LED C#

Regardez la vidéo !

// Affichage
#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;

// Broches steppers (identiques version précédente)
int stepIN1Pin = 22, stepIN2Pin = 24, stepIN3Pin = 26, stepIN4Pin = 28;
int stepIN1Pin1 = 23, stepIN2Pin1 = 25, stepIN3Pin1 = 27, stepIN4Pin1 = 29;
int stepIN1Pin2 = 30, stepIN2Pin2 = 32, stepIN3Pin2 = 34, stepIN4Pin2 = 36;
int stepIN1Pin3 = 31, stepIN2Pin3 = 33, stepIN3Pin3 = 35, stepIN4Pin3 = 37;
int stepsPerRevolution = 2048;
const int button1Pin = A0, button2Pin = A1, button3Pin = A2, 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 = digitalRead(button1Pin);
  int button2State = digitalRead(button2Pin);
  int button3State = digitalRead(button3Pin);
  int button4State = digitalRead(button4Pin);
  digitalWrite(ENABLE, HIGH);
  for (i = 0; i < 5; i++);

  // Bouton 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);
  }

  // Bouton 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);
  }

  // Bouton 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);
  }

  // Bouton 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);
  }
}
Accepteur de Pièces et Code Complet C#

Code complet

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

// Broches steppers (identiques)
int stepIN1Pin = 22, stepIN2Pin = 24, stepIN3Pin = 26, stepIN4Pin = 28;
int stepIN1Pin1 = 23, stepIN2Pin1 = 25, stepIN3Pin1 = 27, stepIN4Pin1 = 29;
int stepIN1Pin2 = 30, stepIN2Pin2 = 32, stepIN3Pin2 = 34, stepIN4Pin2 = 36;
int stepIN1Pin3 = 31, stepIN2Pin3 = 33, stepIN3Pin3 = 35, stepIN4Pin3 = 37;
int stepsPerRevolution = 2048;
const int button1Pin = A0, button2Pin = A1, button3Pin = A2, 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(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);

    // Bouton 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;
    }

    // Bouton 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;
    }

    // Bouton 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;
    }

    // Bouton 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);
}

Schémas

Schéma complet du système : alimentation ATX, moteurs, LCD, LEDs, lumières et contrôleur

Construisez Votre Propre Distributeur Automatique à Pièces : Guide Pièces & Assemblage

Processus de fabrication

  1. L'évolution et la fabrication des machines à coudre : de l'innovation du 19e siècle à l'automatisation moderne
  2. Distributeurs Automatiques de Frites : Fonctionnement et Innovations Technologiques
  3. Distributeurs de Lait Frais : Pratiques, Économiques et Écologiques
  4. Comment les distributeurs automatiques de frites fournissent des frites chaudes et fraîches à la demande
  5. Découvrir les distributeurs automatiques de nouilles : fonctionnement et options
  6. Découvrez la machine distributrice innovante de thé, café et soupe
  7. Distributeur automatique de repas frais et sains : la solution repas à tout moment
  8. Tout ce qu'il faut savoir sur les distributeurs automatiques de boissons gazeuses
  9. Débloquer le profit : le potentiel business des distributeurs automatiques de glaces