mich29800

ecriture plume

Apr 18th, 2021 (edited)
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Servo.h>
  2. Servo testservo;
  3. int x=1000;
  4. int sens=0;
  5. int mini=1000;
  6. int maxi=1020;
  7. unsigned long temps;
  8. unsigned long periode=8;
  9. byte etat=0;
  10. byte rep=0;
  11.  
  12. void setup()
  13. {
  14. Serial.begin(9600);
  15. testservo.attach(8);
  16. testservo.writeMicroseconds(2000);
  17. delay(1500);
  18. }
  19.  
  20. void deplacementplume(byte dir)  // déplacement de la plume selon dir
  21. {                                // à gauche ou à droite
  22. if ((millis()- temps)>periode)
  23. {
  24.   testservo.writeMicroseconds(3000-x);
  25.   if (dir==0){x--;}
  26.   else {x++;}
  27.   temps=millis();
  28. }
  29. }  
  30. void mouvementplume() // mouvement d'écriture
  31. {
  32. if ((millis()- temps)>periode)
  33. {
  34.   if (sens==0)
  35.   {if (x<maxi){x++;}
  36.   else {sens=1;}}
  37.   if (sens==1)
  38.   {if (x>mini){x--;}
  39.   else {sens=0;mini=mini+10;maxi=maxi+10;}}
  40.   testservo.writeMicroseconds(3000-x);
  41.   Serial.println(x-1000);
  42.   temps=millis();
  43. }  
  44. }
  45.  
  46. void loop() {
  47.   switch(etat)
  48.   {
  49.   case 0:
  50.   {mouvementplume();                //mouvement plume page de gauche
  51.    if (maxi>1400){etat=1;periode=3;}
  52.    if ((rep==2)&&(maxi>1400)){etat=2;}
  53.    break;}
  54.   case 1:
  55.   {deplacementplume(0);             // retour au début de la ligne
  56.   if (x<1000){etat=0;mini=1000;maxi=1020;rep++;periode=8;}
  57.    break;}
  58.   case 2:
  59.   {deplacementplume(1);rep=0;      // passage page de droite
  60.   if (x>1500){etat=3;mini=1500;maxi=1520;periode=8;}
  61.   break;
  62.   }
  63.   case 3:
  64.   {mouvementplume();              // mouvement plume page de droite
  65.    if (maxi>1900){etat=4;periode=4;}
  66.    if ((rep==2)&&(maxi>1900)){etat=5;periode=3;}
  67.    break;
  68.   }
  69.   case 4:                         // retour au début de laligne
  70.   {deplacementplume(0);          
  71.   if (x<1500){etat=3;mini=1500;maxi=1520;rep++;periode=8;}
  72.   break;}
  73.   case 5:
  74.   {deplacementplume(0);          // retour début de ligne page de gaauche
  75.   if (x<1000){etat=0;mini=1000;maxi=1020;rep=0;periode=8;}
  76.    break;
  77.   }
  78.   }
  79. }
Add Comment
Please, Sign In to add comment