Gestion d'un éclairage LED a l'aide d'une application

Bonjour,

Je viens solliciter votre aide concernant un projet que je dois réaliser pour ma deuxième année de BTS.

Mon objectif n'est pas excessivement complexe, mais je peine à trouver comment le concrétiser. Voici mon objectif :

image

Sur cette interface très simple, je souhaite pouvoir récupérer les informations des sliders sur mon moniteur série Arduino.

Je vous demande donc de m'aider à créer les blocs pour l'application (même si je suis conscient que nous sommes sur un forum Arduino), ainsi que le programme si cela est possible.

Je n'ai trouvé sur internet que des informations sur la réception d'informations provenant de boutons physiques dans une application, c'est pourquoi je me permets de solliciter votre aide.

Par la suite, j'aimerais pouvoir créer des séquences qui enregistrent les changements de couleurs après un certain laps de temps. Cela serait plus facile une fois la première partie maîtrisée. Il me suffit simplement de réussir à me lancer.

Merci pour votre lecture et d'avance pour vos réponses futures :slight_smile:

Bonsoir,

En principe, il y a des tas de choses sur ce sujet sur Internet, la question à moi est donc "pourquoi ne les vois tu pas?"

Tu es en 2éme anné de quel BTS?
Tu nous montre ce qui ressemble être le résultat d'une simulation, pour que cela affiche quelques choses sur le moniteur série, il faudrait au moins que tu nous indique quel montage tu a essayé de faire, et où cela coince.

Fais un petit effort sur ce sujet STP.

Bonjour autentic

Cet interface, tu n'a que l'image ou tu as l'application MIT App Inventor?
As tu déjà, un code Arduino, si oui, mets le en ligne.
Quel interface Bluetooth as-tu sur l'Arduino?

Recherches mit app inventor bluetooth slider

Si vraiment tu n'y arrives pas, pas de soucis.....

A+
Cordialement
jpbbricole

Bonjour jpbbricole,

J'ai déjà regardé les vidéos et cela m'a amené à ce programme-ci :

image

Il est vrai qu'il manque quelques informations, c'est bien moi qui dois crée l'application sur MIT App Inventor, donc je vais envoyer ci-dessous l'application générale avec tous les blocs créés :

Le fonctionnement d'un curseur fonctionne bien (ils sont réglés de 0 à 255), et j'obtiens bien la valeur sur Arduino. Mon souci se situe à l'ajout des 4 sliders en simultané. Je ne comprends pas comment je peux faire pour bien faire comprendre à l'Arduino que ce sont bel et bien 4 valeurs distinctes.

J'ai du mal à expliquer mon souci, mais j'espère que dans l'ensemble c'est compréhensible ^^'

Voici le programme essayer :

int Rouge;
int Vert;
int Bleu;
int Blanc;

void setup() {
Serial.begin(9600);
}
void loop() {

// Boucle Rouge

if (Serial.available() > 0) {
Rouge = Serial.read();
}
Serial.print("La couleurs rouge est de :");
Serial.println(Rouge);
delay(400);

// Boucle Vert

if (Serial.available() > 0) {
Vert = Serial.read();
}
Serial.print("La couleurs vert est de :");
Serial.println(Vert);
delay(400);

// Boucle Bleu

if (Serial.available() > 0) {
Bleu = Serial.read();
}
Serial.print("La couleurs bleu est de :");
Serial.println(Bleu);
delay(400);

// Boucle Blanc

if (Serial.available() > 0) {
Blanc = Serial.read();
}
Serial.print("La couleurs blanche est de :");
Serial.println(Blanc);
delay(400);

}

Bonjour autentic

Il faut mettre en ligne le fichier AIA de MIT (à zipper).
image

A éviter, les copies d'écran des programmes (sauf les briques de MIT :wink:)
Le code se mets entre les balises
image

A+
Cordialement
jpbbricole

Si tu fais la même chose qu'avec une seule valeur(rouge par ex), cela ne peut pas marcher.
Le dialogue entre machine et exactement comme entre être humain.
Comment ferrais tu ou que dirais tu pour représenter la valeur de trois slider?

Si tu étais à la place de l'Arduino, si je te dis 35, cela te permet il de savoir quel slider je parle ?

il faut donc que tu rajoute une information qui indique le slider concerné.
En général en Arduino, on passe souvent par une chaine de caractère au format CSV fini par un retour chariot.
par exemple tu envois "red:148;vert=27;bleu:200;lum:255\n", le \n représentant le retour chariot.
bien sûre, tu peux aussi envoyer les valeurs, une par une à chaque changement, mais du coup il faut envoyer tes 4 valeurs au démarrage de ton application mobile.
Il serait aussi possible de garder ton système d'envois de valeur, mais c'est moins robuste.

Du coté Arduino:

  • En règle général on ne branche pas le module HC-05 sur les broches du port série de l'Arduino, mais sur d'autre broche et on utilise SoftwareSerial, car cela te permet de programmer ton Arduino sans soucis et de pouvoir utiliser ce port série pour afficher des messages de debuggage sur le moniteur série de l'IDE d'Arduino.
  • Ton programme attends 4 octets consécutif, Serial.read te donnant cet octet, mais ton application mobile, n'est pas programmé pour envoyer ces 4 valeurs consécutives, mais uniquement la valeur que tu as changé.

Ok très bien je ne savais pas merci,
Le voici en format ZIP :slight_smile:

Detecteur_de_choc.zip (27,0 Ko)

Très bien merci pour les informations,
Je comprends ce que tu dis et je vais essayer tous ca.
Pour l'Arduino je ne comprends pas bien le faite d'utiliser SoftwareSerial car a l'heure actuelle tous fonctionne correctement mais je vais suivre quand même :slight_smile:

Bonjour autentic

Ok, je regarde ça demain.

Bonne journée
jpbbricole

En attendant la solution côté Arduino, voici celle côté MAI pour le blanc:
image

A+
jpbbricole

si tu pouvais plutôt mettre ton code comme @jpbbricole l'a indiqué, cela permet à tout les utilisateurs du forum de pouvoir suivre le post, ce qui est nettement moins pratique avec ton ZIP, sans parlé de la menace éventuel de télécharger un document potentiellement infecté.

Bonjour terwal

C'est du code pour MIT App Inventor :wink:

ha oui exact :+1:

Bonjour autentic

Voilà le pendant Arduino du programme MAI, c'est brut et pas du tout optimisé, il faudrait travailler avec des tableaux, mais c'est un début.
Le programme affiche, toutes les demi secondes, la liste des valeurs.

Le programme:

/*
    Name:       ARDFR_autentic_SliderMAI.ino
    Created:	29.02.2024
    Author:     jpbbricole/autentic
				https://forum.arduino.cc/t/gestion-dun-eclairage-led-a-laide-dune-application/1228710/13
*/

#include <SoftwareSerial.h>
//------------------------------------- Bluetooth sur connecteur GROVE D4
const int  btRxPin = 4;;     // Broche 10 en tant que RX, à raccorder sur TX du HC-06
const int   btTxPin = 5; // Broche 11 en tant que TX, à raccorder sur RX du HC-06

SoftwareSerial btSerial(btRxPin, btTxPin);     // Création de l'interface série du Bluetooth

int coulRouge;
int coulVert;
int coulBleu;
int coulBlanc;

const unsigned long displayTempo = 500;     // Toutes les 1/2 secondes
unsigned long displayMillis = millis();     // Toutes les 1/2 secondes, chrono

void setup()
{
	Serial.begin(115200);
	btSerial.begin(9600);     // Interface Bluetooth
}

void loop()
{
	while (btSerial.available())
	{
		String btRx = btSerial.readStringUntil('\n');     // Lecture jusqu'à nouvelle ligne
		btRx.trim();     // Nettoyage de la chaîne
		btRx.toUpperCase();     // En majuscule
		btRx.replace(" ", "");     // supprimer les espaces
		//Serial.print("Commande recue : " + btRx);     // Affiche la commande

		if (btRx.startsWith("BLANC"))
		{
			btRx.replace("BLANC", "");     // On efface BLANC pour ne garder que la valeur
			coulBlanc = btRx.toInt();     // Conversion String en int
		}
		if (btRx.startsWith("BLEU"))
		{
			btRx.replace("BLEU", "");     // On efface BLANC pour ne garder que la valeur
			coulBleu = btRx.toInt();     // Conversion String en int
		}
		if (btRx.startsWith("VERT"))
		{
			btRx.replace("VERT", "");     // On efface BLANC pour ne garder que la valeur
			coulVert = btRx.toInt();     // Conversion String en int
		}
		if (btRx.startsWith("ROUGE"))
		{
			btRx.replace("ROUGE", "");     // On efface BLANC pour ne garder que la valeur
			coulRouge = btRx.toInt();     // Conversion String en int
		}
		else
		{
		}
	}
	
	//--------------------------------- Display
	if (millis() - displayMillis >= displayTempo)
	{
		couleursAfficher();
		displayMillis = millis();     // Redémarrer le chrono
	}
}

void couleursAfficher()
{
	Serial.println("");
	Serial.println("Rouge =\t" + String(coulRouge));
	Serial.println("Vert =\t" + String(coulVert));
	Serial.println("Bleu =\t" + String(coulBleu));
	Serial.println("Blanc =\t" + String(coulBlanc));
}

Le programme MAI;
Detecteur_de_choc_B.zip (27.2 KB)

A+
Cordialement
jpbbricole

Bonjour Jpbbricole,

Désolé pour cette réponse tardive. J'ai réalisé de nombreux essais sans penser à mon message de support sur le forum.

Merci pour toutes les informations et l'aide fournies, mais j'ai l'impression de ne pas tout comprendre.

J'ai donc essayé d'utiliser ton programme brut et l'application MIT sans rien changer, mais cela ne fonctionne pas. Je ne reçois aucune information sur mon Arduino. Il est possible que le problème vienne d'ailleurs :slight_smile:

Merci quand même pour tous tes messages et ton aide. Je pense peut-être faire une pause et demander à mon professeur lorsque je retournerai à l'école.

Sur quelles broches est connecté ton module Bluetooth? Tx et Rx ?

Vu le programme donné j'ai mis le pin RX sur A2 et le TX sur A3

Essaies de croiser.

Bonjour, j'ai essayer les deux façon différente des pin de connexions.
J'envoie mon branchement en photo




Mais j'ai ramener le pc ayant l'accès a Arduino, je ne vais donc rien pouvoir faire aujourd'hui mais ce soir.
Bonne journée,
Autentic :slight_smile:

Bonjour autentic

C'est plus clair avec un shield GROVE :wink:
Branches ton module BT sur le connecteur D4
image

J'ai corrigé le sketch du post#14 et essayé "en vrai".

Bonne journée
jpbbricole