Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. int calibrationTime = 30;
  2. int periode = 2500; // période entre chaque début d'impulsion en microsecondes
  3.  
  4. int pinServo = 7; //servo de l'iris
  5. int pinServo2 = 9; // servo de la pale
  6. int ledPin = 13; // pin de la led
  7. int inputPin = 8; // pin du capteur infrarouge
  8. int pirState = LOW; // on commence en low // Variable pour lire la valeur des inputs
  9. const byte metaux = 2;
  10. int pmlState = LOW;
  11. void setup() {
  12. pinMode(A0, INPUT);
  13. pinMode(pinServo, OUTPUT); // on prépare le pin en mode OUTPUT
  14. pinMode(pinServo2, OUTPUT); // on prépare le pin en mode OUTPUT
  15. digitalWrite(pinServo, LOW); // on l'initialise à l'état bas
  16. pinMode(ledPin, OUTPUT); // declare LED as output
  17. pinMode(inputPin, INPUT); // declare sensor as input
  18. Serial.begin(9600);
  19.  
  20. Serial.print("calibrating sensor ");
  21. for (int i = 0; i < calibrationTime; i++) {
  22. Serial.print(".");
  23. delay(100);
  24. }
  25. }
  26.  
  27. void setAngle(int a) {
  28. int duree = map(a, 0, 179, 1000, 2000); // on transforme l'angle en microsecondes et on stocke dans la variable duree
  29. digitalWrite(pinServo, LOW); //on met le pin à l'état bas
  30.  
  31. // la boucle qui suit est nécessaire
  32. // pour laisser le temps au servo d'aller à sa position
  33. for (int t = 0; t < 300; t++) {
  34. digitalWrite(pinServo, HIGH); // on envoie l'impulsion
  35. delayMicroseconds(duree); // pendant la bonne durée
  36. digitalWrite(pinServo, LOW); // on stoppe l'impulsion
  37. delayMicroseconds(periode - duree); // on attend le temps restant pour atteindre la période
  38. }
  39. }
  40. void setAngle2(int a) {
  41. int duree = map(a, 0, 179, 1000, 2000); // on transforme l'angle en microsecondes et on stocke dans la variable duree
  42. digitalWrite(pinServo2, LOW); //on met le pin à l'état bas
  43.  
  44. // la boucle qui suit est nécessaire
  45. // pour laisser le temps au servo d'aller à sa position
  46. for (int t = 0; t < 300; t++) {
  47. digitalWrite(pinServo2, HIGH); // on envoie l'impulsion
  48. delayMicroseconds(duree); // pendant la bonne durée
  49. digitalWrite(pinServo2, LOW); // on stoppe l'impulsion
  50. delayMicroseconds(periode - duree); // on attend le temps restant pour atteindre la période
  51. }
  52. }
  53.  
  54. void loop() {
  55. /*for (int angle=0;angle<=180;angle+=25){
  56. setAngle(angle);// on appelle la fonction setAngle définie plus bas
  57. }*/
  58. int valeur_m = digitalRead(metaux);
  59. Serial.println(valeur_m);
  60. int val = digitalRead(inputPin); // lire la valeur en input
  61. Serial.println(val);
  62. if (val == HIGH) { // On check si c'est en High
  63. digitalWrite(ledPin, HIGH); // on allume la led
  64. delay(150);
  65. int angle = 0;
  66. for (int angle = 0; angle <= 180; angle -= 20) {
  67. setAngle(angle);// on appelle la fonction setAngle définie plus bas
  68. }
  69. if (pirState == LOW) {
  70. Serial.print(pirState);
  71. for (int angle = 180; angle <= 0; angle += 25) {
  72. setAngle2(angle);// on appelle la fonction setAngle définie plus bas
  73. }
  74. pirState = HIGH; // On veut juste expliciter un changement d'état et non afficher l'état en cours
  75. if (valeur_m != pmlState) {
  76. Serial.println("fdp");
  77. pmlState = HIGH;
  78. }
  79. }
  80. } else {
  81. digitalWrite(ledPin, LOW); // On éteint la led
  82. delay(300);
  83. if (pirState == HIGH) {
  84. // On vient d'éteindre
  85. //Serial.println("Motion ended!");
  86. // On veut juste expliciter un changement d'état et non afficher l'état en cours
  87. pirState = LOW;
  88. }
  89. }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement