90 lines
1.9 KiB
Arduino
90 lines
1.9 KiB
Arduino
|
/****************************************
|
||
|
* Dust Cover Control with Servos *
|
||
|
* for RapidChange ATC *
|
||
|
****************************************
|
||
|
* Version automatique *
|
||
|
* (avec relai) *
|
||
|
****************************************
|
||
|
* 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
|
||
|
int pos = 0;
|
||
|
int lumen = 30; // A régler à votre convenance de 0 à 255 (Intensité led)
|
||
|
boolean ferme = false; // Dust Cover ouvert au départ
|
||
|
|
||
|
// 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 à 2 états géré par le relai
|
||
|
boolean buttonIsUp = digitalRead(BTN);
|
||
|
if (!buttonIsUp) {
|
||
|
ProtectOn();
|
||
|
analogWrite(RED, lumen);
|
||
|
analogWrite(GREEN, 0);
|
||
|
ferme = true;
|
||
|
}
|
||
|
else {
|
||
|
ProtectOff();
|
||
|
analogWrite(GREEN, lumen);
|
||
|
analogWrite(RED, 0);
|
||
|
ferme = false;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
void ProtectOn()
|
||
|
// Ferme le Dust Cover
|
||
|
{
|
||
|
if (!ferme){
|
||
|
for (pos = 180; pos >= 0; pos -=1)
|
||
|
{
|
||
|
SERVO_AV.write(pos);
|
||
|
SERVO_ARR.write(180-pos);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void ProtectOff()
|
||
|
// Ouvre le Dust Cover
|
||
|
{
|
||
|
if (ferme){
|
||
|
for(pos = 0; pos <= 180; pos += 1)
|
||
|
{
|
||
|
SERVO_AV.write(pos);
|
||
|
SERVO_ARR.write(180-pos);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|