je cherche a communiquer entre 2 arduino uno en essayant de faire passer une variable int et une float cependant sur l'écran lcd branché au récepteur je reçois un int et un float qui ne change pas peut importe la modif, on a aussi essayer de faire marcher les codes les plus simple et rien n'a été concluant
dans le doute voici le dernier code que j'ai testé sur le récepteur:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Crée un objet LCD avec l'adresse I2C, 16 colonnes et 2 lignes
LiquidCrystal_I2C lcd(0x27, 16, 2); // Remplacez 0x27 par l'adresse de votre écran
void setup() {
Serial.begin(9600); // Initialise la communication série à 9600 bps
lcd.begin(); // Initialise l'écran LCD
lcd.backlight(); // Active le rétroéclairage de l'écran
}
void loop() {
if (Serial.available() > 0) {
char buffer[50]; // Tampon pour la chaîne de caractères
Serial.readBytesUntil('\n', buffer, sizeof(buffer)); // Lit jusqu'à la nouvelle ligne
buffer[sizeof(buffer) - 1] = '\0'; // Assurez-vous que la chaîne est terminée par un caractère nul
float floatValue;
int intValue;
// Analyse les données reçues
sscanf(buffer, "%f;%d", &floatValue, &intValue);
// Efface l'écran
lcd.clear();
// Affiche les valeurs sur le LCD
lcd.setCursor(0, 0); // Positionne le curseur à la première ligne
lcd.print("Float: ");
lcd.print(floatValue); // Affiche la valeur float
lcd.setCursor(0, 1); // Positionne le curseur à la deuxième ligne
lcd.print("Int: ");
lcd.print(intValue); // Affiche la valeur int
delay(1000); // Attendre 1 seconde avant de lire à nouveau
}
}
et le code de l'émetteur:
include <Arduino.h>
void setup() {
Serial.begin(9600); // Initialise la communication série à 9600 bps
}
void loop() {
float floatValue = 3.14; // Exemple de valeur float
int intValue = 42; // Exemple de valeur int
// Crée une chaîne de caractères pour envoyer les données
char buffer[50]; // Tampon pour la chaîne de caractères
snprintf(buffer, sizeof(buffer), "%.2f;%d", floatValue, intValue); // Formatage des données
Serial.println(buffer); // Envoie les données sous forme de chaîne
delay(1000); // Attendre 1 seconde avant d'envoyer à nouveau
}
et aussi dans le doute voici des photos de mon branchement :