// ============================================================================
// OPTION A — Arduino en mode "esclave"
// Il reçoit simplement :
// GR1 / GR0 → activer / désactiver relais Granules
// VB1 / VB0 → activer / désactiver relais Vibreur
//
// Il renvoie vers Processing :
// [R]Gr: ON|Vib: ON ou [R]Gr: OFF|Vib: OFF
//
// Et affiche les commandes sur lcd_Menu comme témoin.
// ============================================================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// ---------------------------------------------------------------------------
// BROCHES
// ---------------------------------------------------------------------------
const int PIN_RELAIS_GRANULES = 11;
const int PIN_RELAIS_VIBREUR = 10;
const int PIN_RELAIS_Turbine_speed_1 = 9;
const int PIN_RELAIS_Turbine_speed_2 = 8;
const int PIN_RELAIS_Turbine_speed_3 = 7;
const int PIN_RELAIS_Turbine_speed_4 = 6;
const int PIN_RELAIS_Turbine_speed_5 = 5;
const int PIN_RELAIS_Turbine_speed_6 = 4;
---------------------------------------------------------------------------
// LCD MENU — simple témoin d'activité
// ---------------------------------------------------------------------------
LiquidCrystal_I2C lcd_Menu(0x27, 20, 4);
// États logiciels
bool granulesON = false;
bool vibreurON = false;
// ---------------------------------------------------------------------------
// SETUP
// ---------------------------------------------------------------------------
void setup() {
Serial.begin(250000);
pinMode(PIN_RELAIS_GRANULES, OUTPUT);
pinMode(PIN_RELAIS_VIBREUR, OUTPUT);
pinMode(PIN_RELAIS_Turbine_speed_1, OUTPUT);
pinMode(PIN_RELAIS_Turbine_speed_2, OUTPUT);
pinMode(PIN_RELAIS_Turbine_speed_3, OUTPUT);
pinMode(PIN_RELAIS_Turbine_speed_4, OUTPUT);
pinMode(PIN_RELAIS_Turbine_speed_5, OUTPUT);
pinMode(PIN_RELAIS_Turbine_speed_6, OUTPUT);
digitalWrite(PIN_RELAIS_GRANULES, LOW);
digitalWrite(PIN_RELAIS_VIBREUR, LOW);
digitalWrite(PIN_RELAIS_Turbine_speed_1, LOW);
digitalWrite(PIN_RELAIS_Turbine_speed_2, LOW);
digitalWrite(PIN_RELAIS_Turbine_speed_3, LOW);
digitalWrite(PIN_RELAIS_Turbine_speed_4, LOW);
digitalWrite(PIN_RELAIS_Turbine_speed_5, LOW);
digitalWrite(PIN_RELAIS_Turbine_speed_6, LOW);
// LCD
lcd_Menu.init();
lcd_Menu.backlight();
lcd_Menu.clear();
lcd_Menu.setCursor(0, 1);
lcd_Menu.print("System Ready");
}
// ---------------------------------------------------------------------------
// FONCTION : envoi de l'état vers Processing
// ---------------------------------------------------------------------------
void envoyerEtat() {
Serial.print("[R]");
Serial.print("Gr: ");
Serial.print(granulesON ? "ON" : "OFF");
Serial.print("|Vib: ");
Serial.println(vibreurON ? "ON" : "OFF");
}
// ---------------------------------------------------------------------------
// FONCTION : affiche la commande reçue sur lcd_Menu
// ---------------------------------------------------------------------------
void afficherCommande(const char* msg) {
lcd_Menu.clear();
lcd_Menu.setCursor(0, 1);
lcd_Menu.print(msg);
}
// ---------------------------------------------------------------------------
// FONCTION : lecture des commandes série
// ---------------------------------------------------------------------------
void lireCommandeSerie() {
if (!Serial.available()) return;
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd.startsWith("GR")) {
if (cmd.endsWith("1")) {
granulesON = true;
digitalWrite(PIN_RELAIS_GRANULES, HIGH);
afficherCommande("CMD: GR 1");
}
else {
granulesON = false;
digitalWrite(PIN_RELAIS_GRANULES, LOW);
afficherCommande("CMD: GR 0");
}
envoyerEtat();
}
else if (cmd.startsWith("VB")) {
if (cmd.endsWith("1")) {
vibreurON = true;
digitalWrite(PIN_RELAIS_VIBREUR, HIGH);
afficherCommande("CMD: VB 1");
}
else {
vibreurON = false;
digitalWrite(PIN_RELAIS_VIBREUR, LOW);
afficherCommande("CMD: VB 0");
}
envoyerEtat();
}
}
// ---------------------------------------------------------------------------
// LOOP
// ---------------------------------------------------------------------------
void loop() {
lireCommandeSerie();
}
Relais
Vibreur
Relais
Granules
Lcd_Menu