Tout d'abord, je voulais vous remercier d'avoir pris le temps de regarder mon premier projet.
Étant un pur débutant, mais cherchant à apprendre par moi-même en tant que hobby sur udemy, entre le travail et autres, j'avais toujours voulu apprendre à faire des projets comme celui-ci.
Merci pour votre honnêteté, et surtout pour avoir dit les choses telles qu'elles sont. Je vais chercher à améliorer certaines facettes de mon codage, et aussi à me documenter sur les bibliothèques d'abstraction (que j'ai identifier sur le code à jour) , et l'anti-rebond pour les boutons. Je vais également me pencher sur les résistances.
J'avais déjà commencé a faire des améliorations, mais je continue de l'améliorer en temps que projet.
Étant un pur débutant, mais cherchant à apprendre par moi-même en tant que hobby sur udemy, entre le travail et autres, j'avais toujours voulu apprendre à faire des projets comme celui-ci.
Merci pour votre honnêteté, et surtout pour avoir dit les choses telles qu'elles sont. Je vais chercher à améliorer certaines facettes de mon codage, et aussi à me documenter sur les bibliothèques d'abstraction (que j'ai identifier sur le code à jour) , et l'anti-rebond pour les boutons. Je vais également me pencher sur les résistances.
J'avais déjà commencé a faire des améliorations, mais je continue de l'améliorer en temps que projet.
Code Sélectionner
#include <LiquidCrystal.h> // Inclut la bibliothèque d'abstraction pour l'écran LCD
// Définition des broches pour les boutons physiques
const int start_call = 9;
const int end_call = 10;
const int toggle_mute = 11;
const int screen_share = 12;
const int hand_raise = 13;
// Définition des broches pour l'écran LCD
const int rs = 3, e = 4, db4 = 5, db5 = 6, db6 = 7, db7 = 8;
// Initialisation de l'objet LCD
LiquidCrystal lcd(rs, e, db4, db5, db6, db7);
// Commandes à envoyer lors de l'appui sur les boutons
const char* start_call_cmd = "\033,hold,ctrl,hold,shift.C";
const char* end_call_cmd = "\033,hold,ctrl,hold,shift.B";
const char* toggle_mute_cmd = "\033,hold,ctrl,hold,shift.M";
const char* screen_share_cmd = "\033,hold,ctrl,hold,shift.E";
const char* hand_raise_cmd = "\033,hold,ctrl,hold,shift.K";
// Variable pour suivre l'état de l'appel
bool appelEnCours = false;
void setup() {
Serial.begin(9600); // Initialise la communication série
lcd.begin(16, 2); // Initialise l'écran LCD avec 16 colonnes et 2 lignes
// Configuration des broches des boutons en entrée avec résistance de tirage
pinMode(start_call, INPUT_PULLUP);
pinMode(end_call, INPUT_PULLUP);
pinMode(toggle_mute, INPUT_PULLUP);
pinMode(screen_share, INPUT_PULLUP);
pinMode(hand_raise, INPUT_PULLUP);
// Configuration des broches A0 et A1 comme des sorties pour contrôler les couleurs de la LED
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
// Réglage initial des couleurs de la LED et de l'écran LCD
updateLED(false);
lcd.print("Pas sur un appel");
}
void loop() {
if (digitalRead(start_call) && !appelEnCours) {
appelEnCours = true;
updateLED(true); // Allume la LED lorsque l'appel démarre
lcdMessage("Debut appel");
sendCommand(start_call_cmd);
}
if (digitalRead(end_call) && appelEnCours) {
appelEnCours = false;
updateLED(false); // Éteint la LED lorsque l'appel se termine
lcdMessage("Fin appel");
sendCommand(end_call_cmd);
} else if (digitalRead(toggle_mute) && appelEnCours) {
updateLED(false); // Éteint la LED lors de la sourdine
lcdMessage("Sourdine");
sendCommand(toggle_mute_cmd);
} else if (digitalRead(screen_share) && appelEnCours) {
updateLED(false); // Éteint la LED lors du partage d'écran
lcdMessage("Partage d'ecran");
sendCommand(screen_share_cmd);
} else if (digitalRead(hand_raise) && appelEnCours) {
updateLED(false); // Éteint la LED lors de la prise de parole
lcdMessage("Prendre parole");
sendCommand(hand_raise_cmd);
}
// Envoie les commandes même si les boutons ne sont pas enfoncés (peut-être pas nécessaire)
if (digitalRead(start_call)) {
sendCommand(start_call_cmd);
} else if (digitalRead(end_call)) {
sendCommand(end_call_cmd);
} else if (digitalRead(toggle_mute)) {
sendCommand(toggle_mute_cmd);
} else if (digitalRead(screen_share)) {
sendCommand(screen_share_cmd);
} else if (digitalRead(hand_raise)) {
sendCommand(hand_raise_cmd);
}
}
// Fonction pour envoyer une commande
void sendCommand(const char* commande) {
Serial.print(commande);
}
// Fonction pour mettre à jour l'état de la LED
void updateLED(bool isOn) {
digitalWrite(start_call, isOn ? HIGH : LOW);
analogWrite(A0, isOn ? 0 : 255);
analogWrite(A1, isOn ? 255 : 0);
}
// Fonction pour afficher un message sur l'écran LCD
void lcdMessage(const char* message) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(message);
}