Node red with arduino

bonjour,je m'appelle ugo et je viens de commencer un projet en domotique avec un raspberry pi et un arduino (branché en série).

Afin de pouvoir générer une interface web j'ai choisis de l'utilisation de node red.
tout ce passait pour le mieux, mais je suis tomber sur un problème que je n'arrive pas à résoudre. Mon problème est le suivant:

je n'arrive pas à envoyé une information à mon arduino. pour simplifier les choses je voudrai allumer une led avec l'intermédiaire d'un bouton ou d'un switch (dans le serveur web)et l'éteindre. en d'autre termes je voudrais arriver à changer le code du programme de mon arduino permettant l'allumage ou la fermeture de la led.

voici le code de node red et l'arduino:


image

j’espère que j'ai été assez claire hahaha.

un grand merci d'avance

The Arduino sketch code needs to watch for input on the serial port, that is sent by the Node RED flow. If that "on_off" button sends a single character payload to the serial out node, then something like the following will work. Depending what else needs to be handled, the code could get a lot more complex.

via Google Translate:

Le code de croquis Arduino doit surveiller l'entrée sur le port série, qui est envoyé par le flux Node RED. Si ce bouton "on_off" envoie une charge utile d'un seul caractère au nœud de sortie série, alors quelque chose comme le suivant fonctionnera. Selon ce qui doit être géré, le code pourrait devenir beaucoup plus complexe.

const int LED_PIN = 12;
const int ON_COMMAND = 'C';
const int OFF_COMMAND = 'c';
void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600); // Match to "Serial out" node configuration
}

void loop() {
  int TV;       // incoming serial byte
  if (Serial.available() > 0) {   // is a serial byte ready?
                                  // get incoming byte:
    TV = Serial.read();
    if (TV == ON_COMMAND) {
      digitalWrite(LED_PIN, HIGH);
    } else if (TV == OFF_COMMAND) {
      digitalWrite(LED_PIN, LOW);
    }
  }
}

Note that int TV = ""; probably is not what was intended. int specifies a number, not a string. So TV is never going to be equal to the string "SWHITCH1-1".

Notez que int TV =" "; n'est probablement pas ce qui était prévu. int spécifie un nombre, pas une chaîne. La TV ne sera donc jamais égale à la chaîne "SWHITCH1-1".

1 Like
  • English / Anglais

Have you tried the Firmata library for Arduino and the corresponding node node-red-node-arduino?

  • French / Français

Avez-vous essayé la librairie Firmata pour Arduino et le module node-red-node-arduino correspondant ?

Oui j ai trouvé hier la solution 1/2 heure plus tard haha il fallait que je précise la donnée que je envoyais en série sur mon arduino Dans le code de celui ci

Un grand merci pour votre réponse :blush:

Envoyé de mon iPhone

1 Like