Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int calibrationTime = 30;
- int periode = 2500; // période entre chaque début d'impulsion en microsecondes
- int pinServo = 7; //servo de l'iris
- int pinServo2 = 9; // servo de la pale
- int ledPin = 13; // pin de la led
- int inputPin = 8; // pin du capteur infrarouge
- int pirState = LOW; // on commence en low // Variable pour lire la valeur des inputs
- const byte metaux = 2;
- int pmlState = LOW;
- void setup() {
- pinMode(A0, INPUT);
- pinMode(pinServo, OUTPUT); // on prépare le pin en mode OUTPUT
- pinMode(pinServo2, OUTPUT); // on prépare le pin en mode OUTPUT
- digitalWrite(pinServo, LOW); // on l'initialise à l'état bas
- pinMode(ledPin, OUTPUT); // declare LED as output
- pinMode(inputPin, INPUT); // declare sensor as input
- Serial.begin(9600);
- Serial.print("calibrating sensor ");
- for (int i = 0; i < calibrationTime; i++) {
- Serial.print(".");
- delay(100);
- }
- }
- void setAngle(int a) {
- int duree = map(a, 0, 179, 1000, 2000); // on transforme l'angle en microsecondes et on stocke dans la variable duree
- digitalWrite(pinServo, LOW); //on met le pin à l'état bas
- // la boucle qui suit est nécessaire
- // pour laisser le temps au servo d'aller à sa position
- for (int t = 0; t < 300; t++) {
- digitalWrite(pinServo, HIGH); // on envoie l'impulsion
- delayMicroseconds(duree); // pendant la bonne durée
- digitalWrite(pinServo, LOW); // on stoppe l'impulsion
- delayMicroseconds(periode - duree); // on attend le temps restant pour atteindre la période
- }
- }
- void setAngle2(int a) {
- int duree = map(a, 0, 179, 1000, 2000); // on transforme l'angle en microsecondes et on stocke dans la variable duree
- digitalWrite(pinServo2, LOW); //on met le pin à l'état bas
- // la boucle qui suit est nécessaire
- // pour laisser le temps au servo d'aller à sa position
- for (int t = 0; t < 300; t++) {
- digitalWrite(pinServo2, HIGH); // on envoie l'impulsion
- delayMicroseconds(duree); // pendant la bonne durée
- digitalWrite(pinServo2, LOW); // on stoppe l'impulsion
- delayMicroseconds(periode - duree); // on attend le temps restant pour atteindre la période
- }
- }
- void loop() {
- /*for (int angle=0;angle<=180;angle+=25){
- setAngle(angle);// on appelle la fonction setAngle définie plus bas
- }*/
- int valeur_m = digitalRead(metaux);
- Serial.println(valeur_m);
- int val = digitalRead(inputPin); // lire la valeur en input
- Serial.println(val);
- if (val == HIGH) { // On check si c'est en High
- digitalWrite(ledPin, HIGH); // on allume la led
- delay(150);
- int angle = 0;
- for (int angle = 0; angle <= 180; angle -= 20) {
- setAngle(angle);// on appelle la fonction setAngle définie plus bas
- }
- if (pirState == LOW) {
- Serial.print(pirState);
- for (int angle = 180; angle <= 0; angle += 25) {
- setAngle2(angle);// on appelle la fonction setAngle définie plus bas
- }
- pirState = HIGH; // On veut juste expliciter un changement d'état et non afficher l'état en cours
- if (valeur_m != pmlState) {
- Serial.println("fdp");
- pmlState = HIGH;
- }
- }
- } else {
- digitalWrite(ledPin, LOW); // On éteint la led
- delay(300);
- if (pirState == HIGH) {
- // On vient d'éteindre
- //Serial.println("Motion ended!");
- // On veut juste expliciter un changement d'état et non afficher l'état en cours
- pirState = LOW;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement