89 lines
1.9 KiB
Arduino
89 lines
1.9 KiB
Arduino
|
/****************************************
|
||
|
* Dust Cover Control with Servos *
|
||
|
* for RapidChange ATC *
|
||
|
****************************************
|
||
|
* Programmation : JJ Hontebeyrie *
|
||
|
* Youtube Channel JJHONTEBEYRIE *
|
||
|
***************************************/
|
||
|
|
||
|
#include <Servo.h>
|
||
|
|
||
|
// Pins utilisés sur Arduino
|
||
|
#define RED 5
|
||
|
#define GREEN 6
|
||
|
#define BTN 7
|
||
|
#define SERVO1 8 // ARR
|
||
|
#define SERVO2 9 // AV
|
||
|
|
||
|
//Variables
|
||
|
boolean buttonWasUp = true;
|
||
|
boolean ledEnabled = false;
|
||
|
int pos = 0;
|
||
|
int lumen = 30; // A régler à votre convenance de 0 à 255
|
||
|
|
||
|
// Definition Servos
|
||
|
Servo SERVO_AV;
|
||
|
Servo SERVO_ARR;
|
||
|
|
||
|
void setup() {
|
||
|
//Affectation Entrées / Sorties
|
||
|
pinMode(RED, OUTPUT);
|
||
|
pinMode(GREEN, OUTPUT);
|
||
|
pinMode(BTN, INPUT_PULLUP);
|
||
|
|
||
|
//On dit que les servomoteurs enverrons les instructions sur des pins
|
||
|
SERVO_AV.attach(SERVO1);
|
||
|
SERVO_ARR.attach(SERVO2);
|
||
|
|
||
|
// Dust Cover ouvert au démarrage
|
||
|
SERVO_AV.write(180);
|
||
|
SERVO_ARR.write(0);
|
||
|
// Et lumière verte
|
||
|
analogWrite(RED, LOW);
|
||
|
analogWrite(GREEN, lumen);
|
||
|
}
|
||
|
|
||
|
void loop() {
|
||
|
// Utilise un bouton momentané comme un bouton
|
||
|
boolean buttonIsUp = digitalRead(BTN);
|
||
|
if (buttonWasUp && !buttonIsUp) {
|
||
|
delay(10);
|
||
|
buttonIsUp = digitalRead(BTN);
|
||
|
if (!buttonIsUp) {
|
||
|
ledEnabled = !ledEnabled;
|
||
|
if (ledEnabled) {
|
||
|
ProtectOn();
|
||
|
analogWrite(RED, lumen);
|
||
|
analogWrite(GREEN, 0);
|
||
|
}
|
||
|
else {
|
||
|
ProtectOff();
|
||
|
analogWrite(GREEN, lumen);
|
||
|
analogWrite(RED, 0);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
buttonWasUp = buttonIsUp;
|
||
|
}
|
||
|
|
||
|
void ProtectOn()
|
||
|
// Ouvre le Dust Cover
|
||
|
{
|
||
|
for (pos = 180; pos >= 0; pos -=1)
|
||
|
{
|
||
|
SERVO_AV.write(pos);
|
||
|
SERVO_ARR.write(180-pos);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void ProtectOff()
|
||
|
// Ferme le Dust Cover
|
||
|
{
|
||
|
for(pos = 0; pos <= 180; pos += 1)
|
||
|
{
|
||
|
SERVO_AV.write(pos);
|
||
|
SERVO_ARR.write(180-pos);
|
||
|
}
|
||
|
}
|
||
|
|