Affichage de données reçus par un arduino mega sur un ecran tft3,5 pouces

bonjour je suis en en terminale en info et je dois pouvoir afficher les données que je recois par un arduino mega sur un écran tft de 3,5 pouces voici les 2 codes

Arduino uno recepteur:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(0, 1); // RX, TX


void setup() {
  Serial.begin(9600); // Démarre la communication série avec l'ordinateur
  mySerial.begin(9600); // Démarre la communication série avec l'Arduino Mega
}

void loop() {
  // Si des données sont disponibles depuis l'Arduino Mega
  if (mySerial.available()) {
    // Lire les données de l'Arduino Mega
    String data = mySerial.readStringUntil('\n');
    // Afficher les données reçues
    Serial.println("Data received from Arduino Mega: " + data);
  }
}

arduino mega transmetteur:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(17, 16); // RX, TX

#include "max6675.h"
//ATTENTION INSTALLER LA BIBLIOTHEQUE MAX6675 BY ADAFRUIT
int thermoDO = 2;
int thermoCS = 3;
int thermoCLK = 4;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);

const int sensorMin = 0;     // sensor minimum
const int sensorMax = 1024;  // sensor maximum
#include <DHT11.h>
DHT11 dht11(7);

int sensor = A5; // broche pour détection du capteur PLUIE
int etatSensor ; // état du capteur (haut ou bas)
unsigned long start_time=0; //temps de début d'un comptage
unsigned long end_time =0; //temps de fin d'un comptage
 
int nb_trous =20 ; // nombre de trous de la roue codeuse
bool etat_old= false ; // 
bool  etat_new = false; // les états vont changer à chaque chaque modiication de la valeu lue par le capteur (haut/5V ou bas/0V)
int compt=0; // comptage initialisé à 0
float rps=0; // vitesse intialisée à 0
long temps; //mesure du temps pour l'acquisition

#define DIGITAL_PIN 6
#define ANALOG_PIN 0
uint16_t gasVal;
boolean isgas = false;
String gas;

uint16_t x_axis = 0;
uint16_t y_axis = 0;
uint16_t z_axis = 0;

void setup() {
     Serial.println("MAX6675 test");
  delay(500);
    mySerial.begin(9600); // Démarre la communication série avec l'Arduino Uno
    Serial.begin(9600);
    Serial.println("The sensor is warming up...");
delay(30000);
pinMode(DIGITAL_PIN, INPUT);
    pinMode(sensor,INPUT); // la broche A0 est déclarée comme entrée
  temps = millis(); // mesure du temps
    }
void loop()
{
            gasVal = analogRead(ANALOG_PIN);
isgas = digitalRead(DIGITAL_PIN);
if (isgas) {
gas = "No";
}
else {
gas = "Yes";
}
gasVal = map(gasVal, 0, 1023, 0, 100);
mySerial.print("Gas detected: ");
mySerial.println(gas);
mySerial.print("Gas percentage: ");
mySerial.print(gasVal);
mySerial.print("%\n");
delay(100);    
           //humidity sensor
    int humidity = dht11.readHumidity();
    if (humidity != DHT11::ERROR_CHECKSUM && humidity != DHT11::ERROR_TIMEOUT) {
        mySerial.print("Humidity: ");
        mySerial.print(humidity);
        mySerial.println(" %");
    } else {
        mySerial.println(DHT11::getErrorString(humidity));
    }
           
            //rain sensor
  int sensorReading = analogRead(A1);
  int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
  switch (range) {
 case 0:   
    mySerial.println("Rain Warning");
    break;
 case 1:   
    mySerial.println("Not Raining");
    break;
  }
  delay(100);

  //accéléromètre
x_axis = analogRead(A2);
y_axis = analogRead(A10);
z_axis = analogRead(A6);
mySerial.print("X_axis: ");
mySerial.print(x_axis);
mySerial.print ("\t");
mySerial.print("Y_axis: ");
mySerial.print(y_axis);
mySerial.print("\t");
mySerial.print("Z_axis: ");
mySerial.println(z_axis);
delay(100);
  
  //thermocouple sensor
   mySerial.print("C = "); 
   mySerial.println(thermocouple.readCelsius());
   delay(100);
 
 //capteur eolien
 compt = 0;
 start_time=millis(); //on mesure le temps
 end_time=start_time+100; // pour un comptage toutes les secondes
 temps = millis(); //mesure du temps pour l'acquisition
 

while(millis()<end_time){ // comptage sur une seconde
  if (analogRead(sensor)< 50){
    etat_new = true; 
  }
  else {
    etat_new =false;
  }
  if (etat_old != etat_new) {
    etat_old = etat_new;
    compt = compt + 1;
  }
  
}
rps = float(compt)/(2*nb_trous) ; // il faut diviser par 2 car pour chaque trou , deux changements d'état vont être détectés
mySerial.print("temps  ");
mySerial.print(temps);
mySerial.print("  rps ");
mySerial.println(rps);
}

je galère depuis 2 jours j'ai jamais appris ca et je n'arrive pas a trouver de bon tuto ou alors j'ai peut être mal cherché bref merci d'avance

et vous l'avez depuis quand ce projet?

c'est quoi la question exacte?


PS

la Mega a des ports série matériel, pas besoin d'utiliser SoftwareSerial

Si vous voulez comprendre comment bien écouter le port série (ou gérer un flux asynchrone genre keypad) vous pouvez jeter un oeil à mon petit tuto sur le sujet

D0 et D1 sont les broches d'interface de la liaison série matérielle utilisée pour le téléchargement donc vous avez un conflit entre mySerial et Serial qui utilisent les même broches.
Et de toutes les façons, comme l'a indiqué @J-M-L , la Mega dispose de 4 liaisons série donc au lieu de mySerial vous pourriez utiliser Serial1, Serial2 ou Serial3.

un très grand merci je modifierai ça demain matin

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.