Étape 7: Ajout d’un servo
Maintenant, nous allons ajouter un servo qui est lié à un deuxième bouton poussoir s’appuyant sur l’exemple précédent. Il utilise la bibliothèque de Arduino Servo pour contrôler la position du servo. En modifiant la valeur entre parenthèses après le servo1.write code que vous pouvez déterminer dans quelle mesure le servo se déplace.
Copiez et collez cette esquisse dans votre fenêtre de Arduino-
/*
* Exemple 3
* Cet exemple va clignoter deux LED et fondu puis une autre LED lorsque button1 est pressé et relâché
* et un servo se déplace après que button2 est pressé et relâché
* Honus 2010
* Modification de Adafruit alternant commutateur code, http://www.adafruit.com
*/
#include « Servo.h » / / inclure la bibliothèque de servo
Servo servo1 ; crée une instance de l’objet de servo pour contrôler un servo
int servoPin1 = 9 ; broche de commande pour servo
int ledPin1 = 8 ; broche de commande pour LED
int ledPin2 = 7 ;
int ledPin3 = 11 ;
int buttonPin1 = 14 ; bouton est relié à la broche 14 (analogique 0 NIP)
int buttonPin2 = 15 ; bouton est relié à la broche 15 (analogique 1 broches)
int val1 ; variable pour la lecture de l’état de la broche
val2 int ;
int buttonState1 ; variable qui contient le dernier état de la touche
int buttonState2 ;
void setup() {}
SERVO1.Attach(servoPin1) ; attache le servo sur la broche 9 à l’objet de servo
pinMode (buttonPin1, entrée) ; la valeur de l’axe du bouton comme entrée
pinMode (buttonPin2, entrée) ;
buttonState1 = digitalRead(buttonPin1) ; lire l’état initial
buttonState2 = digitalRead(buttonPin2) ; lire l’état initial
pinMode (ledPin1, sortie) ; définit l’axe de la LED en sortie
pinMode (ledPin2, sortie) ;
}
void loop() {}
SERVO1.Write(20) ;
val1 = digitalRead(buttonPin1) ; lire la valeur d’entrée et stockez-la dans le val
Si (val1! = buttonState1) {/ / l’état du bouton a changé !
Si (val1 == faible) {/ / vérifier si le bouton est enfoncé
Serial.println ("juste pressé le bouton") ;
digitalWrite (ledPin1, HIGH) ; définit l’axe LED haute (il allume)
Delay(500) ; attente de 500 millisecondes
digitalWrite (ledPin2, HIGH) ;
Delay(500) ;
digitalWrite (ledPin1, basse) ; définit l’axe LED faible (elle s’éteint)
Delay(500) ;
digitalWrite (ledPin2, basse) ;
Delay(500) ;
fondu du min au max par incréments de 5 points :
pour (int fadeValue = 0; fadeValue < = 255 ; fadeValue += 5) {}
définit la valeur (gamme de 0 à 255) :
analogWrite (ledPin3, fadeValue) ;
Attendez 30 millisecondes Voir l’effet de gradation
Delay(40) ;
}
fondu de max min par incréments de 5 points :
pour (int fadeValue = 255 ; fadeValue > = 0; fadeValue-=5) {}
définit la valeur (gamme de 0 à 255) :
analogWrite (ledPin3, fadeValue) ;
Attendez 30 millisecondes Voir l’effet de gradation
Delay(40) ;
}
} else {/ / la - pas - touche...
digitalWrite (ledPin1, basse) ; éteindre la LED
digitalWrite (ledPin2, basse) ;
}
}
val2 = digitalRead(buttonPin2) ; lire la valeur d’entrée et stockez-la dans val 2
Si (val2! = buttonState2) {/ / l’état du bouton a changé !
Si (val2 == faible) {/ / vérifier si le bouton est enfoncé
SERVO1.Write(160) ; faire pivoter le servo à 160 degrés
Delay(3000) ; attendre 3 secondes
SERVO1.Write(20) ; tourner à 20 degrés
} else {/ / la - pas - touche...
SERVO1.Write(20) ;
}
}
buttonState1 = val1 ; enregistrer le nouvel État dans notre variable
buttonState2 = val2 ;
}