Probleme de config Jeedouino / carte arduino : il y a t'il des sorties PIN a ne pas utiliser?

Oups Mytika, avez vous reussi à communiquer dans le sens Jeedom vers Arduino ? @Mytika

Bonjour Revlys,

le 13 janvier 2017, @jempromene a poster cela :

je retombe sur la même erreur que sur la récupération du numéro de pin
( +5328 dans la valeur de retour et impossible de les soustraire)
j'ai contourné le problème comme ça

pinum = 100 * int(c[1]) + 10 * int(c[2]) + int(c[3]) - 5328;

val1 = 100 * int(c[4]) + 10 * int(c[5]) + int(c[6])-5328;

jeedom += '&';
jeedom += 501;
jeedom += '=';
jeedom += val1;

N’y aurait il pas une erreur d’adressage de ce genre pour recuperer l’info ?

Je me pose la question maintenant

A bientot

DOM

Bonjour Revlys, je viens d’avoir eu l’idée de plugger un afficheur I2C 4 lignes sur ma carte mega pour tracer les valeurs issues de :

pin_id = 100 * int(c[1]) + 10 * int(c[2]) + int(c[3]); // Numero de pin: 500 et +

et là, je dois dire qu’il y a des choses completement incomprehensible, voici mes relevés :


    if ( UserPins[0] == 1 || (digitalRead(PIN_52_BP_LAMPE) == LOW) )
        digitalWrite(PIN_53_OUT_RELAIS_LAMPE, LOW); // Pilotage de mon relais test
    else
        digitalWrite(PIN_53_OUT_RELAIS_LAMPE, HIGH); // Arret - Pilotage de mon relais test



  #if (UseLCD16x2 == 2)
    {
      //lcd.begin();
      //lcd.backlight();
      //lcd.home();
      lcd.setCursor(0,2); // Ligne 2
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 510, je recupere dans pin_id "254" il y a bien un probleme
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 511, je recupere dans pin_id "255" il y a bien un probleme
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 512, je recupere dans pin_id "055" il y a bien un probleme
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 513, je recupere dans pin_id "155" il y a bien un probleme
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 514, je recupere dans pin_id "255" il y a bien un probleme
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 515, je recupere dans pin_id "355" il y a bien un probleme
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 516, je recupere dans pin_id "455" il y a bien un probleme
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 517, je recupere dans pin_id "555" il y a bien un probleme
      // Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 518, je recupere dans pin_id "655" il y a bien un problème

      lcd.print(pin_id); 
    }
  #endif

Donc visiblement il y a bien un problème d’adressage, mais plus grave, et j’ai refais 3 fois le test pour être sur de ce que j’avance, une demande d’ACTION = 1 sur ma pin 511 ou 514 a le même résultat dans ma carte mega, là ça le fait pas, il n’y a pas qu’un problème de début de zone d’adressage, mais aussi du contenu…

SVP, aidez-moi

Merci par avance

DOM

Synthèse de mes relevés :
Action sur pin 510 => pin_id a l’arrivée = 254
Action sur pin 511 => pin_id a l’arrivée = 255
Action sur pin 512 => pin_id a l’arrivée = 055
Action sur pin 513 => pin_id a l’arrivée = 155
Action sur pin 514 => pin_id a l’arrivée = 255
Action sur pin 515 => pin_id a l’arrivée = 355
Action sur pin 516 => pin_id a l’arrivée = 455
Action sur pin 517 => pin_id a l’arrivée = 555
Action sur pin 518 => pin_id a l’arrivée = 655

Ouf, ça y est, j’ai trouvé !

ALors, on debut de mon sketch arduino, j’avais declarer la variable « pin_id » en byte, en m’inspirant des liens que vous m’viez transmis, hors dans mon cas, cela ne va pas du tout, il faut un int ! : voici mon correctif avec ajout d’une autre variable « user_pin_id » pour eviter la confusion dans le code, car « pin_id » sert pour d’autres choses :

Ci-dessous, mon code envoyé sur mon afficheur 4 lignes I2C qui m’a permit d’avancer :

void UserAction()
{
// int i;

char message[16] = "";

// c[1] = c[1]-'0';  ==5 (user pin start at 500)
// c[2] = c[2]-'0';
// c[3] = c[3]-'0';
// user_pin_id = 100 * int(c[1]) + 10 * int(c[2]) + int(c[3]);   // pin action number
//
// c[4] to c[n-1]   // pin action value
//
for (int i = 1; i < n; i++)
{
  if ( isDigit(c[i]) ) 
    c[i] = c[i] - '0'; // conversion simple char(ascii) vers int
}
user_pin_id = 100 * int(c[1]) + 10 * int(c[2]) + int(c[3]); // Numero de pin: 500 et +

// exemple 1
if ( user_pin_id >= 510 and user_pin_id < 518 ) // 8 pins sorties
{
    // JEEDOM  : Sortie Numérique (Sous-type Jeedom: défaut)
    // ARDUINO : c[] = U5000R -> U 500 0 R = binary 0 pin 500 -> c[4] = '0'
    // ARDUINO : c[] = U5001R -> U 500 1 R = binary 1 pin 500 -> c[4] = '1'
    int i = user_pin_id - 510;

// if ( c[4] == 1 )
// {
//// UserTimer[i] = millis() + 700; // Ajout de la temporisation de 0.7 secondes
// UserPins[i] = 1; // mise à 1 de la pin virtuelle
// }
// else
// {
// UserPins[i] = 0; // mise à 0 de la pin virtuelle
// }

    UserPins[i] = 1 - UserPins[i];
}

if ( UserPins[0] == 1 || (digitalRead(PIN_52_BP_LAMPE) == LOW) )
    digitalWrite(PIN_53_OUT_RELAIS_LAMPE, LOW); // Pilotage de mon relais test
else
    digitalWrite(PIN_53_OUT_RELAIS_LAMPE, HIGH); // Arret - Pilotage de mon relais test

#if (UseLCD16x2 == 2)
{
//lcd.begin();
//lcd.backlight();
//lcd.home();
lcd.setCursor(0,2); // Ligne 2
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 510, je recupere dans pin_id « 254 » il y a bien un probleme
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 511, je recupere dans pin_id « 255 » il y a bien un probleme
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 512, je recupere dans pin_id « 055 » il y a bien un probleme
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 513, je recupere dans pin_id « 155 » il y a bien un probleme
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 514, je recupere dans pin_id « 255 » il y a bien un probleme
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 515, je recupere dans pin_id « 355 » il y a bien un probleme
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 516, je recupere dans pin_id « 455 » il y a bien un probleme
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 517, je recupere dans pin_id « 555 » il y a bien un probleme
// Pour une ACTION envoyee de jeedom (val. = 1) sur ma pin 518, je recupere dans pin_id « 655 » il y a bien un probleme

  lcd.print(user_pin_id); 

  
  lcd.setCursor(0,3); // Ligne 3
  sprintf(message,"1:%d  2:%d  3:%d  4:%d",int(c[1]),int(c[2]),int(c[3]),int(c[4]));
  lcd.print(message); 
}

#endif

Bonjour @dom_vosges,

En fait, il manque juste le int devant pin_id :

int pin_id = 100 * int(c[1]) + 10 * int(c[2]) + int(c[3]);

Sinon c’est byte, d’où les valeurs erronées…

Bonne journée.

J’arrive desormais à recuperer la valeur d’une action dans ma carte arduino, j’ai bien avancé ce matin.

La suite sera de creer des boites dans Jeedom pour envoyer mon impulsion sur mes pins 510 à 518, pour cela, je solliciterais peut etre votre aide, ou tout du moins quelle metodologie a suivre, il s’agira en fait de siomple boutron poussoir dans l’interface Jeedom qui provoqueront la mise a 1 de la valeur « Action » de ma pin 510 ?

Sinon, j’ai deja posée la question il me semble, mais je la repose : est-il possible de se servir du debug « liaison-serie » de la carte arduino mega avec un montage Raspberry pi 3 - cable usb - vers carte arduino mega ?

Merci par avance pour vos reponses.

Bonne journee

DOM

Ah, ok, je viens de voir votre message entre temps, vous etiez sur la bonne piste egalement.

Juste brievement, pourriez vous m’indiquer la demarche pour la creation de mes boutons poussoirs dans l’interface Jeedom pour generer mes envois de valeurs sur Action (vers pin utilisateurs) ?

A bientot

DOM

Oui, on s’est répondu au même moment.

Juste brievement, pourriez vous m’indiquer la demarche pour la creation de mes boutons poussoirs dans l’interface Jeedom pour generer mes envois de valeurs sur Action (vers pin utilisateurs) ?

Normalement, vous avez déjà un bouton sur le dashboard générer par la création de la commande de votre équipement:

Sinon par un virtuel:

Sinon, j’ai deja posée la question il me semble, mais je la repose : est-il possible de se servir du debug « liaison-serie » de la carte arduino mega avec un montage Raspberry pi 3 - cable usb - vers carte arduino mega ?

Il faut dans ce cas un câble usb / ttl pour pouvoir utiliser les autres pin rx/tx du mega pour le debugtoSerial.
Mais le coup de l’afficheur lcd est pas mal, en remplaçant tous les DebugSerial.print par des lcd.print avec quelques ajustements.

Merci Merci Merci Revlys, ça y est, grâce au plugin virtuel, OK, je suis parvenu a me créer un bouton poussoir qui génère l’envoi de la valeur Action = 1 sur ma pin 510, et mon code arduino la redescend : j’obtient ainsi mon bouton poussoir distant.

Voici ma config de mon pluggin virtuel suite a vos conseils :

J’ai ensuite ajouté mon equipement virtuel « BP_PIN_510 » dans ma vue design (qui est bien vide pour le moment, mais je suis een phase de debug donc c’est normal) :

Mais alors par contre, pour ma vue dashboard, il y a un leger probleme, je n’ai pas le bouton « 510_output_other », mais c’est pas bien grave, vue que grace au pluggin virtuel, j’arriverai à me construire ma vue customisée de ma maison dans « design » :

Un grand merci à vous pour votre aide, mon projet fait un grand bon en avant. J’ai commandé un disque SSD que je devrais recevoir dans les jours qui viennent, car pour le moment, j’ai fait mes tests en utilisant une simple carte SD de 16 giga, mais hier, j’en ai cramé une donc le SSD va être le bienvenu pour la suite.

A bientôt pour d’autres aventures, mais là pour le moment, j’ai de quoi avancé pour la programmation de mes 8 lampes « télérupteurs »…

Merci merci

Bonne journée

DOM

1 « J'aime »