Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- Servo testservo;
- int x=1000;
- int sens=0;
- int mini=1000;
- int maxi=1020;
- unsigned long temps;
- unsigned long periode=8;
- byte etat=0;
- byte rep=0;
- void setup()
- {
- Serial.begin(9600);
- testservo.attach(8);
- testservo.writeMicroseconds(2000);
- delay(1500);
- }
- void deplacementplume(byte dir) // déplacement de la plume selon dir
- { // à gauche ou à droite
- if ((millis()- temps)>periode)
- {
- testservo.writeMicroseconds(3000-x);
- if (dir==0){x--;}
- else {x++;}
- temps=millis();
- }
- }
- void mouvementplume() // mouvement d'écriture
- {
- if ((millis()- temps)>periode)
- {
- if (sens==0)
- {if (x<maxi){x++;}
- else {sens=1;}}
- if (sens==1)
- {if (x>mini){x--;}
- else {sens=0;mini=mini+10;maxi=maxi+10;}}
- testservo.writeMicroseconds(3000-x);
- Serial.println(x-1000);
- temps=millis();
- }
- }
- void loop() {
- switch(etat)
- {
- case 0:
- {mouvementplume(); //mouvement plume page de gauche
- if (maxi>1400){etat=1;periode=3;}
- if ((rep==2)&&(maxi>1400)){etat=2;}
- break;}
- case 1:
- {deplacementplume(0); // retour au début de la ligne
- if (x<1000){etat=0;mini=1000;maxi=1020;rep++;periode=8;}
- break;}
- case 2:
- {deplacementplume(1);rep=0; // passage page de droite
- if (x>1500){etat=3;mini=1500;maxi=1520;periode=8;}
- break;
- }
- case 3:
- {mouvementplume(); // mouvement plume page de droite
- if (maxi>1900){etat=4;periode=4;}
- if ((rep==2)&&(maxi>1900)){etat=5;periode=3;}
- break;
- }
- case 4: // retour au début de laligne
- {deplacementplume(0);
- if (x<1500){etat=3;mini=1500;maxi=1520;rep++;periode=8;}
- break;}
- case 5:
- {deplacementplume(0); // retour début de ligne page de gaauche
- if (x<1000){etat=0;mini=1000;maxi=1020;rep=0;periode=8;}
- break;
- }
- }
- }
Add Comment
Please, Sign In to add comment