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

Distributeur automatique de collations alimenté par Arduino

Composants et fournitures

Arduino UNO
Je devrais utiliser Arduino Mega à la place, pour plus d'E/S.
× 1
Bouclier de capteur
× 1
Moteur CC 6V avec roue
× 3
Capteur infrarouge (réfléchissant) ou suiveur de ligne, utilisé pour la détection de produits
× 3
Capteur de proximité (électromagnétique), utilisé pour le capteur de pièces numéro 1
× 1
Capteur d'interrupteur de distance (infrarouge/optocoupleur), utilisé pour le capteur de pièces numéro 2
× 1
Alimentation 6V pour moteur DC
× 1
Relais (générique)
4 relais de commutation
× 1
LCD (Nokia 5110 LCD)
× 1
LED (générique)
LED blanche
× 2
Bouton poussoir
Rouge, jaune et vert
× 3

Applications et services en ligne

Arduino IDE
Solidworks
ou tout autre créateur de modèles 3D

À propos de ce projet

Présentation

Bonjour, salutations d'Indonésie.

Ce distributeur automatique de collations est mon projet final. Ce projet s'est en fait terminé fin 2015.

L'objectif de ce projet est de créer un distributeur automatique, alimenté par un microcontrôleur arduino, en utilisant « tous les composants bon marché et faciles à obtenir » disponibles dans les magasins locaux.

Cette vidéo ci-dessous est une vidéo de test final du distributeur automatique de collations, du test de paiement/pièce, de la sélection des produits et de la livraison des produits.

Alors, voici ce que j'ai fait pour atteindre ces objectifs :

Étape 1 :Esquissez le concept

Réfléchissez d'abord au concept .

Ce croquis est ma toute première idée de ce que je pourrais construire. Ce sera un distributeur automatique de collations, acceptant les pièces de monnaie comme moyen de paiement et utilisant un boîtier en acrylique.

Choisissez et faites mûrir votre concept , essayez de penser à n'importe quoi, n'importe quel scénario, n'importe quelle condition.

Essayez de tout dessiner, ne vous inquiétez pas si votre dessin est moche, regardez sérieusement mon dessin. :D

Le bon moment pour penser à l'impensable est avant même le début du projet.

Étape 2 :Créer un modèle 3D

Peut-être que cette étape n'est pas nécessaire pour tout le monde, mais pour moi, et pour ce projet, elle est cruciale.

Je crée un modèle solidworks. Et je veux dire modèle vraiment entièrement terminé. J'ai besoin de déterminer les dimensions du produit, dans ce cas, un emballage de collation. La taille des pièces acceptées, la taille des pièces rejetées, la taille de la fente pour pièces, la taille de la rampe de pièces, la taille du bouton-poussoir, la taille de presque tout. Cette étape comprend la comparaison, la sélection et la mesure de la taille du microcontrôleur Arduino utilisé. Quel capteur a utilisé ou utilisera peut-être à l'avenir, où placer, quelles sont les dimensions et les tailles, où vont les pièces acceptées, je pense aussi à l'endroit où je devrais mettre un écran LCD monochrome (ce n'est pas nécessaire mais j'insiste).

Et enfin, toujours dans la création de modèle solidworks, n'oubliez pas de créer des trous pour les vis, pour chaque pièce.

Le boîtier est fabriqué à partir de matériau acrylique et découpé à l'aide de la méthode de découpe au laser. C'est pourquoi je crée un modèle aussi détaillé et précis que possible, car plus mon modèle est précis, plus j'obtiendrai de cas de précision.

Étape 3 :Concevez une machine à sous

Pour filtrer les pièces, j'utilise d'abord la dimension des pièces. En concevant des pièces de monnaie, je peux déterminer quelle taille de pièces est autorisée à entrer dans la machine .

Ensuite, deuxième filtre, je détermine quelle taille de pièce est autorisée à accepter et je descends jusqu'au porte-pièce .

Parce qu'en utilisant la force de gravité, si la taille des pièces (diamètre) est inférieure à la longueur de la rampe/piste de pièces, elles tomberont et seront rejetées.

  • Sur la photo ci-dessus, la pièce de gauche n'entrera pas dans la machine à sous.
  • La pièce au milieu tombera et sera rejetée.
  • La pièce à droite est une pièce acceptée, descend dans le porte-pièce.

Ceci est une vidéo lorsque je fais des tests de pièces, elle vous montrera comment fonctionne cette méthode.

Étape 4 : Préparez et testez chaque composant

Préparez votre arduino, préparez tout ce dont vous avez besoin.

Testez chaque composant, bouton-poussoir LCD, relais, LED, essayez simplement de tout combiner et apprenez une logique et un codage différents. Assurez-vous de savoir ce que vous faites. Essayez de tester jusqu'à la limite, trouvez la limite, mais ne la dépassez pas.

Pourquoi utiliser une résistance, que se passe-t-il quand ceci ou cela, pourquoi la lecture du capteur n'est pas stable, quelle valeur réellement lue par le capteur, etc. J'ai fait le test et j'ai trouvé que la lecture du capteur de proximité n'est "pas propre", besoin d'ajouter une résistance à calme-toi.

Le capteur infrarouge fonctionne très mal et n'est pas normal sous le soleil direct (je le sais avant, mais je n'ai jamais vraiment ressenti l'impact, jusqu'à présent). La solution consiste à utiliser du ruban adhésif pour isoler autour de la partie récepteur du capteur infrarouge, comme indiqué sur la photo.

Étape 5 : Construisez un mécanisme en spirale

C'est l'une des parties les plus importantes du distributeur automatique, le mécanisme de livraison.

J'utilise un mécanisme en spirale, avec du fil d'aluminium (fil de 2 mm de diamètre), façonné manuellement en spirale à l'aide d'un tuyau en PVC de 9 cm de diamètre.

Les fils en spirale sont attachés à une roue à l'aide de serre-câbles. Lorsque le moteur à courant continu est allumé, la roue tourne et le fil en spirale tourne.

Les spirales rotatives convertissent en fait le mouvement de rotation en mouvement linéaire de produit.

Étape 6 :Créer un mécanisme d'identification des pièces

La première photo est le capteur de pièces numéro 1, utilisant un capteur de proximité ou un capteur à électro-aimant à induction. Lorsque la pièce acceptée passe ce capteur, elle déclenchera l'arduino pour commencer à compter le temps (en millisecondes).

si sensor1 déclenché alors commencez à compter le temps en millisecondes  

Et lorsqu'il est accepté, le capteur de pièce numéro 2, un capteur d'interruption de distance, arduino arrêtera de compter le temps et obtiendra le temps requis pour cette pièce particulière, pour voyager du capteur numéro 1 au capteur numéro 2.

si sensor2 déclenché, arrêtez de compter le temps en millisecondes. "temps de trajet" est de xxx millisecondes  

N'utilisez pas trop d'aimants car il se bloquera et arrêtera la pièce au milieu de la rampe de pièces. Nous ne voulons pas que cela se produise, car nous devons compter le temps pour chaque pièce, pour obtenir des "temps de trajet" entre le capteur numéro 1 et le numéro 2. Ces "temps de trajet" (en millisecondes) sont utilisés par arduino pour déterminer la valeur de pièce acceptée.

si "temps de trajet" supérieur ou égal à "yyy" milliseconde, alors sa pièce "aaa", sinon c'est "bbb" 

Ceci est une vidéo lorsque je teste cette méthode, identifiant des pièces à l'aide d'un aimant.

Étape 7 :Créer un mécanisme de détection de produit

J'utilise 3 capteurs infrarouges pour la détection du produit lorsqu'il tombe après avoir été poussé/déplacé par un mécanisme en spirale.

Lorsque le produit tombe, il déclenchera le capteur infrarouge, envoyant un signal d'arrêt au moteur à courant continu (via un relais).

Cette vidéo montre comment fonctionne la détection de produits dans ce distributeur automatique.

Étape 8 :Utiliser l'écran LCD pour plus d'informations

Dans ce projet, je crée un écran LCD affichant des informations (en devise indonésienne) sur la valeur acceptée des pièces, chaque fois que le client entre une pièce. Il indiquera également le solde total de la pièce acceptée et d'autres instructions générales sur l'utilisation étape par étape de cette machine.

Lorsque la machine est allumée

  • Affichage PRINCIPAL ="Veuillez saisir la pièce".
  • SI pièce saisie ="Afficher la valeur de la pièce et le solde total".
  • SI la pièce n'a pas été saisie =conserver l'affichage PRINCIPAL.

Une fois la pièce identifiée avec succès

  • ​SI le solde total est supérieur ou égal au prix du produit ="Veuillez sélectionner le produit".
  • SI le solde total est inférieur au prix du produit ="Veuillez saisir plus de pièces".

Après l'activation du mécanisme en spirale (la livraison a lieu)

  • SI Mécanisme de détection de produit déclenché = « Merci », Transaction effectuée.
  • Retard et retour à l'affichage PRINCIPAL.

Étape 9 :Finir et tester

Enfin, fini le distributeur automatique de collations.;)

Après environ 3 mois, je suis prêt à effectuer un test final sur cette machine, à partir du test de paiement/pièce, de la sélection du produit et de la livraison du produit.

Voici la vidéo du test final du distributeur automatique de collations :

J'espère que ce projet aidera certains d'entre vous, peut-être vous donnera une inspiration ou une idée, sur la construction et la création du prochain distributeur automatique alimenté par Arduino.

Étape 10 :Possibilité d'amélioration

Quelques idées pour améliorer ce distributeur automatique de collations :

  • Ajoutez un mécanisme de changeur de pièces.
  • Acceptez le papier-monnaie.
  • Acceptez le bitcoin et/ou le paiement numérique.
  • Afficher le stock de produits sur l'écran LCD.
  • IoT :notifier via Internet chaque fois qu'une transaction se produit.
  • IoT :notifier lorsque le stock de produits est vide ou faible, etc.

Remerciements particuliers :ITENAS Bandung, Département de génie mécanique.

Code

  • Code source du distributeur automatique de collations
Code source du distributeur automatique de collationsArduino
C'est le code source que j'ai utilisé pour ce projet de distributeur automatique
 octet const SIAP =0; octet const KOIN_MASUK1 =1; octet const KOIN_MASUK2 =2; octet const KOIN_MASUK3 =3; octet const KOIN_MASUK4 =4; octet const KOIN_MASUK5 =5; octet const KOIN_MASUK6 =6;octet const KOIN_MASUK7 =7;octet const SALDO_500 =8;octet const SALDO_500500 =9;octet const SALDO_500500500 =10;octet const SALDO_500500500500 =11;octet const SALDO_5005005001000 octet =12;ALDO_5005005001000 octet =12; SALDO_5001000500 =14;octet de const SALDO_50010001000 =15;octet de const SALDO_5005001000 =16;octet de const SALDO_1000 =17;octet de const SALDO_10001000 =18;octet de const SALDO_1000500 =19;octet de const SALDO_1000const par SALDO_1000500500 =20; octet de const 500_KE SALDO par 22;état d'octet =SIAP;const float jeda_waktu =876;temps long non signé1;temps long non signé2;temps long non signé3;temps long non signé4;temps long non signé5;temps long non signé6;temps long non signé7;#define PIN_SCE 7#define PIN_RESET 6# définir PIN_DC 5#define PIN_SDIN 4# define 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, BAS); shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, données); digitalWrite(PIN_SCE, HIGH);}void LcdCharacter(caractère){ LcdWrite(LCD_D, 0x00); for (int index =0; index <5; index++) { LcdWrite(LCD_D, ASCII[caractère - 0x20][index]); } LcdWrite(LCD_D, 0x00);}void LcdClear(void){ pour (int index =0; index  Siap"); LcdInitialise(); LcdClear(); LcdString (" Masukkan Koin Rp500 atau Koin Rp1000 @ Rp2000 "); delay(500);}void loop() { int x =analogRead(14); if (état ==SIAP) { if (x>=33) { état =KOIN_MASUK1; temps1 =millis(); ton (2, 4200, 40); Serial.println("snsr1"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK1) &&(!(digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK1)) { diff1 long non signé =(millis() - time1 ); Serial.println("snsr2"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Serial.print(diff1); Serial.println("ms"); if (diff1> jeda_waktu) { état =SALDO_1000; LcdInitialise(); LcdClear(); LcdString (" diterima Saldo =Rp1000 Tambah Koin Koin Rp1000 "); digitalWrite (13, HAUT); Serial.println("koin=Rp 1000, Saldo:Rp1000"); ton (2, 4200, 299); } else if (diff1 =33) { état =KOIN_MASUK2; temps2 =millis(); ton (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:"); Serial.print(diff2); Serial.println("ms"); if (diff2> jeda_waktu) { état =SALDO_5001000; LcdInitialise(); LcdClear(); LcdString (" diterima Saldo =Rp1500 Tambah Koin Koin Rp1000 "); ton (2, 4200, 299); Serial.println("koin=Rp 1000, Saldo:Rp1500"); } else if (diff2 =33) { état =KOIN_MASUK3; temps3 =millis(); ton (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:"); Serial.print(diff3) ; Serial.println("ms"); if (diff3> jeda_waktu) { état =SALDO_5005001000; LcdInitialise(); LcdClear(); LcdString (" diterima Saldo =Rp2000 Pilih Produk Koin Rp1000 "); Serial.println("koin=Rp 1000, Saldo:Rp2000"); ton (2, 4200, 799); } else if (diff3 =33) { état =KOIN_MASUK4; temps4 =millis(); ton (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) { état =SALDO_5005005001000; LcdInitialise(); LcdClear(); LcdString (" diterima Saldo =Rp2500 Pilih Produk Koin Rp1000 "); Serial.println("koin=Rp 1000, Saldo:Rp2500"); ton (2, 4200, 799); } else if (diff4 =33) { état =KOIN_MASUK5; temps5 =millis(); ton (2, 4200, 40); Serial.println("snsr1"); Serial.println("start wkt"); } } else if ((state ==KOIN_MASUK5) &&((digitalRead(13)))) { if ((digitalRead(12)) &&(state ==KOIN_MASUK5)) { long non signé diff5 =(millis() - time5); Serial.println("snsr2"); Serial.println("stop wkt"); Serial.print("jeda wkt:"); Serial.print(diff5); Serial.println("ms"); if (diff5> jeda_waktu) { état =SALDO_50010001000; LcdInitialise(); LcdClear(); LcdString (" diterima Saldo =Rp2500 Pilih Produk Koin Rp1000 "); Serial.println("koin=Rp 1000, Saldo:Rp2500"); ton (2, 4200, 799); } else if (diff5 =33) { état =KOIN_MASUK6; temps6 =millis(); ton (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) { état =SALDO_10001000; LcdInitialise(); LcdClear(); LcdString (" diterima Saldo =Rp2000 Pilih Produk Koin Rp1000 "); Serial.println("koin=Rp 1000, Saldo:Rp2000"); ton (2, 4200, 799); } else if (diff6 =33) { état =KOIN_MASUK7; temps7 =millis(); ton (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:"); Serial.print(diff7); Serial.println("ms"); if (diff7> jeda_waktu) { état =SALDO_10005001000; LcdInitialise(); LcdClear(); LcdString (" diterima Saldo =Rp2500 Pilih Produk Koin Rp1000 "); Serial.println("koin=Rp 1000, Saldo:Rp2500"); ton (2, 4200, 799); } else if (diff7  Siap"); } }}

Pièces et boîtiers personnalisés

Ceci est un printscreen de mon modèle 3D solidworks pour ce projet.

Processus de fabrication

  1. Distributeur automatique
  2. Surveillance du CO2 avec le capteur K30
  3. Comment mesurez-vous ?
  4. Capteur d'empreintes digitales capacitif avec un Arduino ou ESP8266
  5. Tour de capteur cloud Arduino
  6. Pistolet à eau à détecteur de mouvement
  7. Prix ​​des machines d'occasion
  8. Qu'est-ce qu'un distributeur automatique de lait ?
  9. Qu'est-ce qu'un distributeur automatique de nouilles ?