Aide pour développer App téléphone <-> Arduino <-> Leds

Bonjour galien

Comme exemple, je t'ai fait un bout de programme pour gérer tes LED via des commandes dans le moniteur:
image
Ces ordres sont LED, LUM, TEMPO et OFF, ils sont détaillés, dans le sketch, audessus de void cmdExecute(String cmdRx)
Au départ la durée de l'allumage en secondes est défini par:
int ledOnTemps = 0; // Durée d'allumage de la LED, si 0 = continu

Le programme:

/*
    Name:       AF_galien_RgmtCasierLed.ino
    Created:	11.03.2025
    Author:     galien/jpbbricole
	Remarque:	Commande de LED pour casier de rangement, depuis smartphone
				https://forum.arduino.cc/t/aide-pour-developper-app-telephone-arduino-leds/1362675
	13.03.2025	Première version #5
*/
#include <Adafruit_NeoPixel.h>

//------------------------------------- LED
const int ledPin = 6; // Connexion du bus des LED

const int ledNombre = 16; // Nombre de LED LED
int ledOnTemps = 0; // Durée d'allumage de la LED, si 0 = continu

Adafruit_NeoPixel leds(ledNombre, ledPin, NEO_GRB + NEO_KHZ800);
enum ledlColorsIndex {ledsColOff, ledsColGreen, ledsColBlue, ledsColRed, ledsColOrange, ledsColYellow, ledsColWithe, ledsColNombre};
uint32_t ledsColors[ledsColNombre];// Valeurs RGB pour les couleurs (Tableau)
const int ledsBrightMax = 25;// LED Luminosité maximum

void setup() 
{
	Serial.begin(115200); // Pour la console et l'introduction des commandes
	signLedInitialisation();

	leds.show();
	delay(500);
	leds.clear();
	leds.show();
}

void loop() 
{
	if (Serial.available()) // Si commande dans la console
	{
		cmdExecute(Serial.readStringUntil('\n')); // Lire la commande jusqu'au caractère nouvelle ligne
	}
		
}

//------------------------------------- Exécution de la commande
/*
	Commandes non sensibles à la casse
	Commandes reconnues:
	LEDllcc		commande de la LED ll à la couleur cc (ledlColorsIndex)
	LUMlll		commande de luminosité générale (0-255)
	TEMPOttt	Temps d'allumage des LED. Si 0 alumage continu
	OFF			Extinction complète
*/
void cmdExecute(String cmdRx)
{
	cmdRx.trim(); // Commande nettoyage des caractères "parasites"
	// https://www.arduino.cc/reference/fr/language/variables/data-types/string/functions/trim/ 
	cmdRx.toUpperCase(); // Commande en majuscules
	cmdRx.replace(" ", ""); // Commande suppression des espaces
	
	if (cmdRx.startsWith(F("LED"))) // Si commande LED
	{
		cmdRx.replace(F("LED"), ""); // On supprime la commande pour ne garder que les paramètres
		int ledNum = cmdRx.substring(0, 2).toInt(); // Extraction du numéro de la LED
		int ledCol = cmdRx.substring(2).toInt(); // Extraction de la couleur de la LED
		
		ledAllumage(ledNum, ledCol); // Commande allumage
	}
	else if (cmdRx.startsWith(F("LUM"))) // Si commande luminosité
	{
		cmdRx.replace(F("LUM"), "");
		Serial.println("Luminosite: " + cmdRx);

		leds.setBrightness(cmdRx.toInt());
		leds.show();
	}
	else if (cmdRx.startsWith(F("TEMPO"))) // Si commande temps d'allumage si 0 allumage continu
	{
		cmdRx.replace(F("TEMPO"), "");

		Serial.println("Temporisation: " + cmdRx);
		ledOnTemps = cmdRx.toInt();
	}
	else if (cmdRx == (F("OFF"))) // Si commande extinction complète
	{
		Serial.println("Extinction");
		leds.clear();
		leds.show();
	}
	else
	{
		Serial.println("Commande inconnue: " + cmdRx);
	}
}

void ledAllumage(int ledNum, int ledCouleur)
{
	Serial.print("Allumage LED " + String(ledNum));
	Serial.println("\tcouleur " + String(ledCouleur));

	leds.setPixelColor(ledNum, ledsColors[ledCouleur]); // Allumage de la LED
	leds.show();

	if (ledOnTemps > 0)
	{
		delay(ledOnTemps * 1000);
		leds.setPixelColor(ledNum, ledsColors[ledsColOff]); // Extinction de la LED
		leds.show();
	}
}

void signLedInitialisation() // Initialisation des leds et des couleurs
{
	ledsColors[ledsColOff] = leds.Color(0, 0, 0);
	ledsColors[ledsColRed] = leds.Color(255, 0, 0);     // Définition des couleurs
	ledsColors[ledsColGreen] = leds.Color(0, 255, 0);
	ledsColors[ledsColBlue] = leds.Color(0, 0, 255);
	ledsColors[ledsColYellow] = leds.Color(255, 255, 0);
	ledsColors[ledsColOrange] = leds.Color(255, 165, 0);
	ledsColors[ledsColWithe] = leds.Color(255, 255, 255);

	leds.begin();
	leds.setBrightness(ledsBrightMax);
	leds.clear();
	leds.show();
}

Ensuite, une fois le programme MAI fonctionnel ainsi que son serveur Web sur ESP, le programme ci-dessus viendra simplement se greffer au serveur.

N'hésites surtout pas à poser des questions, si nécessaire :wink:

A+
Bonne journée
jpbbricole