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