Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - babskwal

Pages: 1 2 [3] 4 5
31
Oui, ça confirme que le sujet n'est pas que côté Arduino...
Je prends ma pelle et ma pioche et je creuse un peu plus.
En tous cas, merci beaucoup !!!
A suivre... mais pas ce soir, j'ai les yeux qui se croisent et les neurones qui décrochent ! (Pas un problème de communication smartphone Arduino, mais plutôt la journée au taf)

32
Voici ce qu'envoie mon appli (c'est un extrait de la partie Block d'App Inventor.
J'envoie soit en saisissant la ligne de commande dans une case de saisie de texte, et le bouton Button_OK_commande envoie sur le HC-06, soit un bouton envoie 4R0001R ou 4R0001T pour le relais 1 selon l'état précédent (R ou T), et 4R0002R ou 4R0002T pour le relais 2 (2e bouton Button_R4_2 représenté à droite).

33
Bon, ça y est, j'ai pu essayer.
Il y a un truc qui merdouille ; pour comprendre, j'ai ajouté
    for (byte i = 0; i < 7; i++)
      Serial.print(commande_recue[i]);
    Serial.println();
et j'obtiens
4⸮⸮⸮⸮⸮⸮
R⸮⸮⸮⸮⸮⸮
0⸮⸮⸮⸮⸮⸮
0⸮⸮⸮⸮⸮⸮
0⸮⸮⸮⸮⸮⸮
1⸮⸮⸮⸮⸮⸮
R⸮⸮⸮⸮⸮⸮
Forcément, le
if ((commande_recue[0] == '4') && (commande_recue[1] == 'R')) ne voit pas ce qu'il devrait...
Mais je ne vois pas l'explication...?

34
Pas encore vérifié, mais une question à la lecture du code : pourquoi remplacer Serial3 (TX3-RX3) par Serial1 (TX1-RX1) ?

35
Pas bien grave, je vais regarder ce soir. Autant je ne suis pas capable du premier coup d'optimiser ainsi mon code, autant je pense arriver à ajuster s'il y a des coquilles. Du moins j'espère ! Sinon, ce sera un petit "au secours" complémentaire  :) Mais peut-être qu'il n'y aura pas besoin, sinon je vais chercher avant !
Encore merci !

36
Et oui, bien sûr, j'ai oublié de le dire : je vais essayer ce nouveau code, mais je ne m'inquiète pas : il y a des pros d'Arduino (que je ne suis pas). Mais qu'est-ce qu'il est plus court que le mien !!!
Encore merci !

37
Super réponse, merci beaucoup !!!  ;D
Point par point :
1° Oui, c'est vrai... je vais voir si je peux remonter le 9600, mais j'ai peur de la fiabilité de la communication au-dessus. Faut voir.
2° Oui, le HC-06 est branché sur le TX3-RX3 du Mega
3° Je vais regarder. Je n'ai aucune prétention en matière d'optimisation de code
4° Dans la même logique que le 3°
5° Dans la même logique que le 4°... et le 3° !!!
6° Ah, pourquoi pas !? Je ne connaissais pas. Est-ce le même mode de programmation que l'Arduino ? Bon honnêtement, je préfère éviter de changer de solution en cours de route. Il est vrai que je m'intéresse beaucoup à la partie électronique / informatique, mais je veux garder la perspective d'avancer aussi sur le reste du réseau  ;)

38
Bonsoir,
Pour commander mon réseau, je vais utiliser mon téléphone, et communiquer en BT avec un HC-O6 connecté à un Arduino Mega.
Mon appli envoie une ligne de commande sous forme de chaine de 7 caractères, plus un point-virgule qui indique la fin de la commande.
Les 7 premiers caractères sont (1) un chiffre pour indiquer le module (et envoyer la commande sur un autre Arduino), (2) une lettre pour distinguer le type (Relais, Alimentation via L298, Signal, Moteur d'aiguillage, Eclairage de bâtiment ou de rue), puis un numéro sur 4 chiffre, puis un état (Marche/Arrêt, Gauche/Droite...).
Ça fonctionne... mais c'est lentissime ! De l'ordre de 1 à 2 secondes entre l'appui sur le "bouton" de l'appli et le basculement des relais dans le cadre de mon essai avec 16 relais.
Mon code Arduino :
#define hc06 Serial3            // définition de hc06 comme un objet série sur le port Serial3 (broches Rx3, Tx3)
const byte relais_1 = A7;
const byte relais_2 = A6;
const byte relais_3 = A5;
const byte relais_4 = A4;
const byte relais_5 = A3;
const byte relais_6 = A2;
const byte relais_7 = A1;
const byte relais_8 = A0;
const byte relais_16 = 22;
const byte relais_15 = 24;
const byte relais_14 = 26;
const byte relais_13 = 28;
const byte relais_12 = 30;
const byte relais_11 = 32;
const byte relais_10 = 34;
const byte relais_9 = 36;
String commande_recue="";       // création et initialisation à "" d'une chaine de caractères pour les caractères reçus du HC-06 et former la commande
byte num_relais;                // création d'une variable contenant le numéro de relais reçu du HC-06

void setup()

{
  hc06.begin(9600);             // initialise le port série Bluetooth

// ci-dessous définition des broches
  pinMode(relais_1, OUTPUT);
  pinMode(relais_2, OUTPUT);
  pinMode(relais_3, OUTPUT);
  pinMode(relais_4, OUTPUT);
  pinMode(relais_5, OUTPUT);
  pinMode(relais_6, OUTPUT);
  pinMode(relais_7, OUTPUT);
  pinMode(relais_8, OUTPUT);
  pinMode(relais_9, OUTPUT);
  pinMode(relais_10, OUTPUT);
  pinMode(relais_11, OUTPUT);
  pinMode(relais_12, OUTPUT);
  pinMode(relais_13, OUTPUT);
  pinMode(relais_14, OUTPUT);
  pinMode(relais_15, OUTPUT);
  pinMode(relais_16, OUTPUT);

// ci-dessous mise à l'état HIGH des relais pour les mettre au repos (fonctionnement inversé) :
  digitalWrite(relais_1, HIGH);
  digitalWrite(relais_2, HIGH);
  digitalWrite(relais_3, HIGH);
  digitalWrite(relais_4, HIGH);
  digitalWrite(relais_5, HIGH);
  digitalWrite(relais_6, HIGH);
  digitalWrite(relais_7, HIGH);
  digitalWrite(relais_8, HIGH);
  digitalWrite(relais_9, HIGH);
  digitalWrite(relais_10, HIGH);
  digitalWrite(relais_11, HIGH);
  digitalWrite(relais_12, HIGH);
  digitalWrite(relais_13, HIGH);
  digitalWrite(relais_14, HIGH);
  digitalWrite(relais_15, HIGH);
  digitalWrite(relais_16, HIGH);
}

void loop()
{
_______________________________________________________________
  // Lecture du HC06
  if(hc06.available())
  {
    commande_recue = hc06.readStringUntil(';');
    if ((commande_recue[0]=='4')&&(commande_recue[1]=='R'))     // Si le 1er caractère de la commande est ' (n° de module) et le 2e est 'R' (relais)
    {
      num_relais=((byte)commande_recue[4]-48)*10+((byte)commande_recue[5]-48);  // Reconstitution du n° de relais
      switch (num_relais)                           // On prend le bon numéro de pin relais via la variable
      {
        case 1:
          pin_relais=relais_1;
          break;
        case 2:
          pin_relais=relais_2;
          break;
        case 3:
          pin_relais=relais_3;
          break;
        case 4:
          pin_relais=relais_4;
          break;
        case 5:
          pin_relais=relais_5;
          break;
        case 6:
          pin_relais=relais_6;
          break;
        case 7:
          pin_relais=relais_7;
          break;
        case 8:
          pin_relais=relais_8;
          break;
        case 9:
          pin_relais=relais_9;
          break;
        case 10:
          pin_relais=relais_10;
          break;
        case 11:
          pin_relais=relais_11;
          break;
        case 12:
          pin_relais=relais_12;
          break;
        case 13:
          pin_relais=relais_13;
          break;
        case 14:
          pin_relais=relais_14;
          break;
        case 15:
          pin_relais=relais_15;
          break;
        case 16:
          pin_relais=relais_16;
          break;
        default:
          hc06.println("Mauvaise commande");
          break;
      }
      switch (commande_recue[6])                          // Et l'état de pin relais selon la commande
      {
        case 'R':
          etat_pin_relais=1;
          break;
        case 'T':
          etat_pin_relais=0;
          break;
        default:
          hc06.println("Mauvaise commande");
          break;
      }
      digitalWrite(pin_relais, etat_pin_relais);    // On envoie la commande
    }
  }
}
Auriez-vous une explication et... une solution ?
Merci d'avance !!!

39
Vos projets / Re : Masse commune
« le: mai 19, 2021, 11:13:47 am »
J'ai complété (et restylé) mes pages détection des trains et commande depuis le téléphone en Bluetooth.
Des avis ? ;)

40
Composants / Re : Puissance 5V du L298
« le: mai 17, 2021, 08:30:04 am »
Ce qui ne fait pas beaucoup !
Merci pour cette réponse !

41
Composants / Puissance 5V du L298
« le: mai 16, 2021, 02:31:01 pm »
Bonjour,
Un L298 alimenté en 12V pour la sortie peut aussi fournir du 5V. Savez-vous quelle puissance est disponible pour cette sortie 5V ?

42
Vos projets / Re : Gestion ligne à crémaillère
« le: mai 16, 2021, 02:22:21 pm »
Une autre ligne à crémaillère à voie normale : la ligne C du métro de Lyon  ;)

43
Vos projets / Re : Masse commune
« le: mai 15, 2021, 10:09:03 pm »
Bonsoir,
Merci de ta réponse, Denis !
Même si le MP1 est moins cher (15€, et le magasin en ligne où j'ai acheté, que je ne cite pas pour éviter la pub, elle serait pourtant méritée, ils sont sympa ! magasin qui fait des prix dégressifs. Même le MP5 est à 19€ chez eux), la solution servo est bien pratique avec un Arduino : vitesse et course facilement réglable, et c'est plus silencieux. Donc exit le pb du redressement !

44
Vos projets / Re : Masse commune
« le: mai 15, 2021, 08:09:30 pm »
Hello !
Bon, j'ai avancé dans mes choix. Pour les moteurs d'aiguillage, je vais changer mon fusil d'épaule, la solution sera à base de servos.
Pour la commande, HC-06, Arduino Uno et L298.
Et détection à base de diode et opto.
Plutôt que tout raconter ici, j'ai fait deux pages de présentation (sommaire) ici pour la détection des trains et ici pour la commande depuis le téléphone en Bluetooth.
Je suis preneur de commentaires pour progresser !  ;)

45
Vos projets / Re : Masse commune
« le: avril 29, 2021, 12:11:08 pm »
D'ailleurs, le 32 kHz que j'ai pris est une valeur extrême. Peu-t-être aurait-il fallu que je teste les différentes fréquences possibles ?

Pages: 1 2 [3] 4 5