Bonjour, je poste juste cette discussion pour savoir si mon programme Arduino est correct et adapté a ce que je souhaite faire.
Explication du projet*: (voir en pièce jointe)
Le projet est une étiqueteuse de sac. Le système vient en butée contre le sac et «*lèche*» le sac tout en déroulant l'étiquette ce qui la colle.
Le système c'est un axe linéaire motorise horizontal et un axe linéaire motorise vertical qui se trouve dessus permettant un déplacement horizontal et vertical.
La tête d'étiqueteuse est fixé sur la plateforme verticale et permet de tirer les étiquettes tout en enroulant les étiquettes vides.
Explication de mon programme*: il y a 3 possibilités. Soit on*:
1- Appuie sur le bouton poussoir vert*:
Lancement du cycle d'étiquetage.
Etape 1*: Le système descend jusqu'à arriver en butée contre le sac à l'aide du moteur vertical et du capteur de courant.
Etape 2*: Mise en route du moteur horizontal et du moteur deroulement pour la pose tant que le capteur gauche n'est pas atteind (distance correspondant à une étiquette).
Etape 3: Remonté du système pendant 3 sec ou tant que le capteur haut n'est pas atteind.
Etape 4*: Retour en position initiale.
2- Appuie sur l'interrupteur*:
Fonction permettant de dérouler le rouleau d'étiquette vide
3- Appuie sur le bouton poussoir rouge*:
Cycle permettant de remettre en position initiale le système, utilisé dans le cas où la pile de sacs est finie et donc que le système se retrouve bloqué en bas.
Merci de votre aide.
Voici mon programme Arduino:
excusez moi si je n'ai pas réussi à indenter mon codeCode:int VMV=6; // vitesse moteur vertical int SMV=5; // sens moteur vertical int VMH=10; // vitesse moteur horizontal int SMH=9; // sens moteur horizontal int VME=11; // vitesse moteur etiquette int SME=12; // sens moteur etiquette int DCY=0; // bouton poussoir cycle int BPC=2; // broche bouton poussoir cycle int DCY2=0; // bouton poussoir position initiale int BPPI=3; // broche bouton poussoir position initiale int DCY3=0; // bouton derouleur (interrupteur) int BD=; // broche bouton deroulement (interrupteur) int sensorPin=A0; // broche capteur de courant int CI=0; // capteur de courant int CaptGauche=8; // broche capteur gauche int EtatGauche=0; // capteur gauche int CaptDroit=7; // broche capteur droit int EtatDroit=0; // capteur droit int CaptHaut=4; // broche capteur haut int EtatHaut=0; // capteur haut void setup() { pinMode(SMV,OUTPUT); pinMode(SMH,OUTPUT); pinMode(SME,OUTPUT); pinMode(BPC,INPUT); pinMode(BPPI,INPUT); pinMode(CaptGauche,INPUT); pinMode(CaptDroit,INPUT); pinMode(CaptHaut,INPUT); } void loop() { DCY=digitalRead(BPC);// lire bouton poussoir cycle if(DCY==HIGH) { analogWrite(VMV,220);// moteur verticale qui descend digitalWrite(SMV,HIGH); delay(500); do { CI=analogRead(sensorPin); // tant que valeur du capteur <160 }while(CI<160); do { analogWrite(VMH,220);// moteur horizontale etiquette digitalWrite(SMH,HIGH); analogWrite(VME,220);// moteur etiquette enroule digitalWrite(SME,HIGH); EtatGauche=digitalRead(CaptGauche); }while(EtatGauche != HIGH); // tant que capteur pas atteind do { analogWrite(VMV,220);// moteur verticale qui remonte digitalWrite(SMV,LOW); EtatHaut=digitalRead(CaptHaut); }while(delay<3000 or EtatHaut != HIGH ); // tant que temps ou capteur pas atteind do { analogWrite(VMH,220);// moteur horizontale position initiale digitalWrite(SMH,LOW); EtatDroit=digitalRead(CaptDroit); }while(EtatDroit != HIGH); // tant que capteur pas atteind } else // si le bouton poussoir cycle n'est pas presse { DCY2 = digitalRead(BPPI); if(DCY2 == HIGH) // appuie sur bouton poussoir position initiale { do { analogWrite(VMV,220); digitalWrite(SMV,LOW); // moteur verticale monte EtatHaut=digitalRead(CaptHaut); }while(EtatHaut != HIGH); // tant que capteur pas atteind } else // si bouton poussoir cycle et position initiale pas presse { DCY3 = digitalRead(BD); // appuie sur bouton poussoir derouleur if (DCY3 == HIGH) { do{ analogWrite(VME,220); digitalWrite(SME,LOW); DCY3 = digitalRead(BD); } while(DCY3 != LOW); } else // si aucun bouton poussoir n'est presse { analogWrite(VMV,0); digitalWrite(SMV,HIGH); analogWrite(VMH,0); digitalWrite(SMH,HIGH); analogWrite(VME,0); digitalWrite(SME,HIGH); } } } }
-----