Matrice de led en Bluetooth

Portrait de jujuwarriors

Bonjour à tous et merci d'avance à ceux qui pourront m'aider.

avant de commencer je tiens à vous informer que je suis un amateur

dans le domain de l'Arduino.

----------------------------------------------------------------------------------------------------------------------------------------------

depuis plusieurs mois avec une bande d'amis j'écris une série autour du harcèlement.

J'ai la caméra qu'il faut et tout le matériel qui va avec.

Sauf l'éclairage !

je me suis alors mit en tête de fabriquer mes propre éclairages LED;

----------------------------------------------------------------------------------------------------------------------------------------------

plusieurs fondamentaux :

- J'utiliserai une matrice 8x8

 https://fr.aliexpress.com/item/32653027272.html?src=google&src=google&albch=shopping&acnt=494-037-6276&isdl=y&slnk=&plac=&mtctp=&albbt=Google_7_shopping&aff_platform=google&aff_short_key=UneMJZVf&&albagn=888888&albcp=1633544866&albag=64936066280&trgt=743612851114&crea=fr32653027272&netw=u&device=c&albpg=743612851114&albpd=fr32653027272&gclid=Cj0KCQjwy6T1BRDXARIsAIqCTXoC467QIQPItmpM7SmawmIN8haa2hDpuZw0-rWLJ5HVOZB85knWVhYaAgJwEALw_wcB&gclsrc=aw.ds

- Je pourrais changer l'intensité des led et la couleurs

depuis le bluetooth de mon smartphone.

----------------------------------------------------------------------------------------------------------------------------------------------

je sais faire marcher un module bluetooth HC-05,

et pareil pour la matrice de led.

NEAMOINS je ne sais pas comment crée le code pour rassemblé le bluetooth

et la matrice en un seul même code

----------------------------------------------------------------------------------------------------------------------------------------------

Cela fait une semaine que je cherche en vain

Aider moi !

Cordialement

Jules

Portrait de Walter

Bonjour,

projet sympa!

le plus simple serait que tu nous donne ton code.

Mais en gros dans ta partie bluetooth tu fais quoi quand tu reçois un ordre de ton téléphone?
Car c'est à ce moment là que tu déclenchera l'allumage/extinsion de ta matrice.

Portrait de Jetfuzz

Hello
Alex avait fait un tuto avec le devduino, qui correspond vachement a ce projet (alumer et eteindre des led)
il y a meme l'apk pour le phone.
regarde ici, je l'avais testé a l'epoque et ca marche bien.

http://devduino.cc/getting-started/connect-to-bluetooth/

cordialement
Jetfuzz

Portrait de jujuwarriors

Salut Walter à vrai dire je n'ai pas de code en particulier j'ai un code qui permet à mon téléphone de se connecter au module et un code pour allumer la matrice mais étant nul j'ai trouvé ces deux codes sur internet et je ne les comprends pas à 100%

Portrait de jujuwarriors

Salut Jetfuzz le tuto est super bien fait je vais essayer de trouver le code pour l'intégrer sur ma carte arduino MEGA ADK

Portrait de Jetfuzz

Hello
Le code d'Alex fonctionne pour tout les cartes arduino.
de plus tu peu également modifier l'appli du phone pour la mettre a ta sauce.
je te colle ici le code de l'arduino qui va avec.

// =============================================================================
//                         BLUETOOTH EXAMPLE FOR DEVDUINO
// =============================================================================
// Description:
// Code example to communicate with the DevDuino through a Bluetooth Module.
// =============================================================================
// Date: 14/05/2018
// Author: Alexandre PAILHOUX
// License: MIT
// =============================================================================
/*=============================================================================
                                   INCLUDES
==============================================================================*/
//#include <Wire.h>
#include <SoftwareSerial.h>
#include <devduino.h>
#include "devduinoLogo.h"
/*=============================================================================
                                  DEFINITIONS
==============================================================================*/
//#define RED_LED     13
/*=============================================================================
                                GLOBAL VARIABLES
==============================================================================*/
String messageFromUART= "";
float analogRef = 4.9;
/*=============================================================================
                                   INSTANCES
==============================================================================*/
SoftwareSerial UART(10,12);

// =============================================================================
//                                INITIALIZATION
// =============================================================================
void setup()
{
  /*============================================================================
                                  DEVDUINO INIT.
  =============================================================================*/
  devduino.begin();
  devduino.attachToIntButton(buttonPushed);
  display.drawSprite(devduinoLogo, 37, 0);
  display.flush();
  delay(1000);
  display.clear();

  UART.begin(9600);
  /*============================================================================
                                   DIGITAL OUT
  =============================================================================*/     
  for(int i=0;i<=1;i++)
  {
  pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
  }  
  for(int i=4;i<=6;i++)
  {
  pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
  }
  for(int i=8;i<=9;i++)
  {
  pinMode(i, OUTPUT);
  digitalWrite(i, LOW);
  }
 
  pinMode(11, OUTPUT);
  digitalWrite(11, LOW);

  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
}
// =============================================================================
//                               INFINITE LOOP      
//                          -> -> -> -> -> -> -> ->
//                          |                     |              
//                          <- <- <- <- <- <- <- <-
// =============================================================================
void loop()
{
  processUARTInformation();
}

// =============================================================================
//                                INTERRUPTION                        
//                                     ||          
//                                     ||          
//                               O-----------O    
//                          ------O         0-------                       
// =============================================================================
void buttonPushed()
{
  /*============================================================================
                                DEBOUCING FILTER
  =============================================================================*/
  static unsigned long last_interrupt_time = 0;
  unsigned long interrupt_time = millis();
  if (interrupt_time - last_interrupt_time > 200)
  {
    // ---------------------------------------------------------------------------
    // DO YOUR INTERRUPTION HERE...   
    // ---------------------------------------------------------------------------
  }   
  last_interrupt_time = interrupt_time;
}
// =============================================================================
//                     PROCESS THE INFORMATION FROM THE UART    
// =============================================================================
void processUARTInformation()
{
   while(UART.available())
   {
    delay(3);
    char c = UART.read();
    messageFromUART+= c;
   }
   
   if (messageFromUART.length() >0)
   {  
    console.println(messageFromUART);
  /*============================================================================
                                  DIGITAL 0  
    =============================================================================*/
    if ((messageFromUART.indexOf("D00") != -1))
    {
     processDigital(0,messageFromUART);     
    }
  /*============================================================================
                                  DIGITAL 1
    =============================================================================*/
    else if ((messageFromUART.indexOf("D01") != -1))
    {
     processDigital(1,messageFromUART);     
    }  
  /*============================================================================
                                  DIGITAL 4
    =============================================================================*/
    else if ((messageFromUART.indexOf("D04") != -1))
    {
     processDigital(4,messageFromUART);     
    }
  /*============================================================================
                                  DIGITAL 5*
    =============================================================================*/
    else if ((messageFromUART.indexOf("D05") != -1))
    {
     processPWM(5,messageFromUART);
    }
  /*============================================================================
                                  DIGITAL 6*
    =============================================================================*/
    else if ((messageFromUART.indexOf("D06") != -1))
    {
     processPWM(6,messageFromUART);  
    }
  /*============================================================================
                                  DIGITAL 8
    =============================================================================*/
    else if ((messageFromUART.indexOf("D08") != -1))
    {
     processDigital(8,messageFromUART);
    }
  /*============================================================================
                                  DIGITAL 9*
    =============================================================================*/
    else if ((messageFromUART.indexOf("D09") != -1))
    {
     processPWM(9,messageFromUART);
    }
  /*============================================================================
                                  DIGITAL 11*  
    =============================================================================*/
    else if ((messageFromUART.indexOf("D11") != -1))
    {
     processPWM(11,messageFromUART);
    }  
  /*============================================================================
                                  DIGITAL 13*  
    =============================================================================*/
    else if ((messageFromUART.indexOf("D13") != -1))
    {
      processPWM(13,messageFromUART);    
    }
  /*============================================================================
                                  ANALOG 0
    =============================================================================*/
    else if ((messageFromUART.indexOf("A0") != -1))
    {
     processAnalog(0);
    }
  /*============================================================================
                                  ANALOG 1  
    =============================================================================*/
    else if ((messageFromUART.indexOf("A1") != -1))
    {
     processAnalog(1);
    }
  /*============================================================================
                                  ANALOG 2
    =============================================================================*/
    else if ((messageFromUART.indexOf("A2") != -1))
    {
     processAnalog(2);
    }
  /*============================================================================
                                  ANALOG 3
    =============================================================================*/
    else if ((messageFromUART.indexOf("A3") != -1))
    {
     processAnalog(3);
    }
  /*============================================================================
                                  ANALOG 4
    =============================================================================*/
    else if ((messageFromUART.indexOf("A4") != -1))
    {
     processAnalog(4);
    }
  /*============================================================================
                                  ANALOG 5  
    =============================================================================*/
    else if ((messageFromUART.indexOf("A5") != -1))
    {
     processAnalog(5);
    }
 }
 messageFromUART="";
 
}
/*============================================================================
                                PROCESS DIGITAL
  =============================================================================*/
void processDigital(unsigned int pin, String message)
{
  if ((message.indexOf("ON") != -1))
  {
    digitalWrite(pin,HIGH);
    }
  else if((message.indexOf("OFF") != -1))
  {
    digitalWrite(pin,LOW);
    }    
 
}
/*============================================================================
                                PROCESS PWM
  =============================================================================*/
void processPWM(unsigned int pin, String message)
{
  if ((message.indexOf("ON") != -1))
   {
    digitalWrite(pin,HIGH);
    }
   else if((message.indexOf("OFF") != -1))
   {
    digitalWrite(pin,LOW);
    }   
   else
   {   
     message = message.substring(4,7);
     analogWrite(pin, message.toInt());
   }  
}
/*============================================================================
                                PROCESS ANALOG
  =============================================================================*/
void processAnalog(unsigned int pin)
{
  float analogValue = analogRead(pin);   
  analogValue = analogValue*analogRef/1000;
  console.println("A" + String(pin) +"=" + String(analogValue));
  UART.print(String(analogValue));
}

Alex utilise une librairie propre au devduino, mais c'est juste pour te donner une idée générale

Cordialement
Jetfuzz
 

Portrait de Boite.A.Clous

  Bonjour jujuwarriors

Tu parles de faire tes propres éclairages à LEDs c'est super mais de quelle puissance lumineuse as-tu besoin ? J'ai peur que la matrice que tu as choisie ne soit pas suffisante pour réaliser un éclairage, ce genre de produit est destiné à la décoration ou a des animations mais pour ce qui est de l'éclairage ... J'ai bien peur que tu sois déçu. Ou alors il t'en faudra un très grand nombre !

Portrait de jujuwarriors

Salut Boite.A.Clous

mon but principal n'es pas d'avoir un éclairage artificiel

mais un éclairage d'ambiance donc de faible intensité

par exemple pour être fixé directement sur la caméra ou autres

Portrait de Anonyme

Je pense comme Boite.A.Clous, La puissance lumineuse est vraiment très faible. Mais tu dis que tu sais faire marcher le module bluetooth et la matrice RVB 8x8, qu'entends-tu par savoir faire marcher. Par quel système as-tu fait fonctionné ces composants. ?

Portrait de jujuwarriors

un arduino

Portrait de Anonyme

Tu dis ne pas avoir de code ?..

Desolé sans objet j'avais saute un message

Portrait de Anonyme

Tu as de la chance les meilleurs de ce site sont à ton aide.

Portrait de Walter

Ok, du coup je suppose que ton code qui te permet de connecté ton Tel sur le module bluetooth ne fait rien de special, comme allumer une led ?
Tu peux commencer par poster le code du bluetooth, pour que l'on t'indique la marche à suivre, pour réaliser ton projet. 

Haissant la médiocrité, je ne m'abaisserais pas à répondre aux basses provocations et autres pourissage de posts.

Portrait de jujuwarriors

Merci wolfram69 ça fait plaisir de se savoir soutenu !

Oui je n'ai pas de code à proprement parlé je suis en 

Train d'essayer de fusionner plusieurs codes

Je vous enverrez le code demain

Encore merci :) 

Portrait de jujuwarriors

Voici le code permettant d'envoyer et de recevoir via une appli un texte qui peut être envoyer depuis la console arduino ou le téléphone. Effectivement il ne fait rien de spécial mon but serais de pouvoir envoyer des commande depuis smartphone via une application et que l'arduino exécute une commande. 

Portrait de jujuwarriors

char message;

void setup() {

// put your setup code here, to run once: Serial1.begin(9600);

Serial.begin(9600);

}

void loop() {

// Module Bluetooth --> PC

if (Serial1.available()) {

message = Serial1.read();

Serial.print(message);

}

// PC --> Module Bluetooth

if (Serial.available()) {

message = Serial.read();

Serial1.print(message);

}

}

Portrait de Walter

ok, du coup ce que tu peux faire, c'est tester la valeur du message pour savoir quelle commande est passé par ton téléphone

Le plus simple pour commencer serait d'envoyer quelque chose comme "On" "Off", en faisant attention au minuscule/majuscule.

if (message == "On") {

    Serial1.print("commande On");

} else if (message == "Off") {

    Serial1.print("commande Off");

} else {

    Serial1.print("commande inconnue");

}

par la suite tu pourra compléter les différentes commande supportées et ajouter une action en plus du simple message. 

Portrait de jujuwarriors

#include <SoftwareSerial.h>

char message;

SoftwareSerial bluetooth(10, 11); // (RX, TX) (pin Rx BT, pin Tx BT)

void setup()
{
    // Ouvre la voie série avec l'ordinateur
    Serial.begin(9600);
    // Ouvre la voie série avec le module BT
    bluetooth.begin(9600);
}

void loop() // run over and over
{
    if (bluetooth.available()) {
  message = bluetooth.read();
        Serial.print(message);
    }
    if (Serial.available()) {
  message = Serial.read();
  bluetooth.print(message);
    }
if (message == "On") {

    Serial.print("commande On");

}
else if (message == "Off") {

    Serial.print("commande Off");

}
else {

    Serial.print("commande inconnue");

}

}

Portrait de jujuwarriors

Voici mon code;

problème quand j'envoie le message "On" il me montre juste "on" et non pas "commande On"

Portrait de Jetfuzz

.

Portrait de Anonyme

Remplace la ligne :

        Serial.print(message);

Par celle-ci :

        Serial.println("Commande "+ message);

Mais pour la suite de ton code, je ne comprends pas trop la logique et je serais étonné que cela fonctionne.

Portrait de Walter

Salut,
le problème doit être assez simple et vient surement de la casse, "on"  et non "On", de plus tu assigne à la variable "message" ce que tu recoit du bluetooth et du port série, si tu reçoit quelque chose du port série, tu perd le connue du message bluetooth, bien que cela correspond à un cas rare, vaut mieux éviter ce genre de chose.

Du coup tu reçois bien "On" du bleutooth, que tu visualise via au "Serial.print(message);" sur ton moniteur série, mais tout en minuscule "on".
lorsque tu compare ta variable "message" qui contient la valeur "on" à la valeur "On" cela ne coresspond pas et donc tu n'affiche pas le "commande On".

 

Portrait de Anonyme

C'est n'importe quoi regardez donc la lecture et l'écriture !!!! On lit le port Serie et on réécrit sur le même port !

  1. if (Serial.available()) {
      message = Serial.read();
  2. if (message == "On") {

        Serial.print("commande On");

    }
    else if (message == "Off") {

        Serial.print("commande Off");

    Il n'y a pas comme un blème là ?

Portrait de Walter

Ba non, aucun problème, c'est exactement ce qui cherche à faire!!!
Surtout que comme il n'envois pas forcément quelque chose sur le port série à partir de son PC.

Il test/debug la logique de fonctionnement.

Portrait de Anonyme

Bon alors essaie cela par ce que l'aide que tu as jusqu'à présent ....:

J'ai rajouté le "que" qui manquait, car comme j'ai fait ce message avec ma tablette je ne me suis pas rendu compte que ma phrase était incomplète, donc c'est corrigé. Mais vu les bavures que font certains il est risible que ces mêmes personnages s'accrochent à la moindre erreur ou omission !

#include <SoftwareSerial.h>
String message; //message est une chaîne de caractère
SoftwareSerial bluetooth(10, 11); // (RX, TX) (pin Rx BT, pin Tx BT)
void setup() {
  // Ouvre la voie série avec l'ordinateur
  Serial.begin(9600);
  // Ouvre la voie série avec le module BT
  bluetooth.begin(9600);
}

void loop() // run over and over
{
  if (bluetooth.available()) { // Si la taille du buffer d'entrée alloué à bluetooth est supérieur à zéro
    message = bluetooth.readString(); // Lis la chaîne dans le buffer alloué à bluetooth
    bluetooth.print(message);  // renvoie le message dans le buffer de bluetooth
  }
  if (Serial.available()) { // Si la taille du buffer d'entrée du port série est supérieure à zéro
    message = Serial.readString(); // Lis la chaîne dans le buffer du port série
    message.toUpperCase(); // Transforme le message en majuscule pour rendre insensible à la casse
    if (message == "ON") // Si message ="ON"
      Serial.println("commande On"); // Affiche "commande On" et saute une ligne
    else if (message == "OFF")// Si message ="ON"
      Serial.println("commande Off");// Affiche "commande off" et saute une ligne
    else // sinon
      Serial.println("commande inconnue");// Affiche "commande inconnue" et saute une ligne
  }
}// retourne au début de void loop()

Portrait de Walter

Mort de rire, l'aide qu'il a eu jusqu'a maintenant, lui disait justement que son problème venait de la casse,
Mais belle paraphrase, je note la petit tentative d'entourloupe en testant tout en majuscule, quand je lui dit de tester tout en minuscule :)

Portrait de Anonyme

Non la casse n'était qu'un problème mineur ! Je suis désolé le soucis vient d'ailleurs ! Très cher !!

Car même en respectant la casse cela ne pouvait pas afficher quoique ce soit !

Mort de rire !!

La prochaine fois avant de te payer ma tête regarde bien tout le code !
Je n'ai pas l'habitude de m'approprier les idées d'autrui !

Dans mon premier message j'ai bien dit que cela ne pouvait pas fonctionner !!!!!!!!

Remplace la ligne :

        Serial.print(message);

Par celle-ci :

        Serial.println("Commande "+ message);

Mais pour la suite de ton code, je ne comprends pas trop la logique et je serais étonné que cela fonctionne.

Si tu ne trouves pas je te donnerai la solution ! Mort de rire !!

Portrait de Jetfuzz

putain mais a chaque fois tu cherche la confrontation !!!!
OUI WOLFRAM TU ES LE MEILLEUR SUR CE FORUM.......
c'est bon comme ca !!!

Bon alors essaie cela par ce l'aide que tu as jusqu'à présent ....:

what do you say !!!!!

Portrait de Walter

Au tant pour moi, je n'avais pas lu ton code en entier.
Effectivement ton code est faux et ne fais pas ce qu'il veut, très fort!!!
Comme je ne suis pas chien, je te donne la solution, il veut faire une action, si il recoit "on" sur la liaison série ou bluetooth.
Pourtant son code est simple et sa question aussi, bizarre.

Portrait de Anonyme

JETFUZZ je t"emmerde ainsi que le codiment.

Walter m'accuse je me défend  c'est d'ailleurs la dernière fois je pense ue je ma baisse à parler à Zorro et au Condiment. Vous n'avez rien d'autre à faire  vu vo capacité respectives !

Portrait de graindesel

JETFUZZ je t"emmerde ainsi que le codiment.

Bah qu'est ce qu'il t'arrive petit bonhomme, t'es en colère ? 

Jetfuzz ne va pas nous le facher, on comprend rien à ce qu'il écrit, sauf les insultes bien sur, l'habitude.

Portrait de Jetfuzz

JETFUZZ je t"emmerde ainsi que le codiment.

Walter m'accuse je me défend  c'est d'ailleurs la dernière fois je pense ue je ma baisse à parler à Zorro et au Condiment. Vous n'avez rien d'autre à faire  vu vo capacité respectives !

il a trop forcé sur le porto !!!

Portrait de Anonyme

La solution, pour ceux qui n'auraient pas trouvé le problème c'est que Serial.read ne charge qu'un seul est unique caractère donc toujours 'O' ou 'o' et il est  impossible de faire une comparaison avec des chaînes "On" ou "Off". Avec des char il est beaucoup plus complexe de faire ce genre de code. Le fait d'utiliser des chaînes avec Serial.readString règle le problème d'une manière plus simple !

Bon confinement à tous !