Prérequis :
- 1 x Carte Arduino Uno
- 1 x Carte PCA9685
- 3 x Servo (SG90)
- 3 x Bouton
- Fils de connexion
Version IDE :
Bibliothèque :
Vidéo de démonstration :
Schéma de câblage :
Code :
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define MIN_PULSE_WIDTH 600
#define MAX_PULSE_WIDTH 2600
#define SERVO_FREQ 50
int BtJaune = 2;
int BtBleue = 3;
int BtVert = 4;
bool EtatBtJaune;
bool EtatBtBleue;
bool EtatBtVert;
uint8_t servonum = 1;
void setup() {
Serial.begin(9600);
pwm.begin();
pwm.setOscillatorFrequency(27000000);
pwm.setPWMFreq(SERVO_FREQ);
delay(10);
pinMode(BtJaune, INPUT_PULLUP);
pinMode(BtBleue, INPUT_PULLUP);
pinMode(BtVert, INPUT_PULLUP);
}
void loop() {
EtatBtJaune = digitalRead(BtJaune);
if (EtatBtJaune == HIGH) {
pwm.setPWM(2, 0, setServoPulse(90));
}
else {
pwm.setPWM(2, 0, setServoPulse(0));
}
EtatBtBleue = digitalRead(BtBleue);
if (EtatBtBleue == HIGH) {
pwm.setPWM(1, 0, setServoPulse(90));
}
else {
pwm.setPWM(1, 0, setServoPulse(0));
}
EtatBtVert = digitalRead(BtVert);
if (EtatBtVert == HIGH) {
pwm.setPWM(0, 0, setServoPulse(90));
}
else {
pwm.setPWM(0, 0, setServoPulse(0));
}
}
int setServoPulse(int angle) {
int pulse_wide, analog_value;
pulse_wide = map(angle, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
analog_value = int(float(pulse_wide) / 1000000 * SERVO_FREQ * 4096);
return analog_value;
}
Post Views: 151
J’aime ça :
J’aime chargement…