RapidchangeATC/ATC_Relai.ino

90 lines
1.9 KiB
Arduino
Raw Normal View History

2024-08-22 23:08:22 +02:00
/****************************************
* 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);
}
}
}