RapidchangeATC/ATC.ino
2024-08-22 23:08:22 +02:00

89 lines
1.9 KiB
C++

/****************************************
* 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);
}
}