Code Arduino UNO vers Arduino Nano Every

Bonjour,

J'ai réalisé un code afin de créer un Variometre sur Arduino UNO avec plusieurs capteurs (baromètre, thermomètre, gps). J'avais pour objectif ensuite d'utiliser ce code sur la nano every mais il semble y avoir des problèmes avec les librairies. Je ne comprends pas les messages d'erreur pourriez-vous m'aider s'il vous plait ? :slight_smile:

Voici le code :

#include <Arduino.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_SHT31.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPS++.h>
#include <SoftwareSerial.h>


Adafruit_SSD1306 display(4);
Adafruit_BMP280 bme;
Adafruit_SHT31 sht;
TinyGPSPlus gps;

int switchInitState = LOW;
unsigned long time1;
int interMesure = 900;
int T;
int Hr;
const int pot1 = A0;
int Alt;
int V;

SoftwareSerial ss(11, 12);

float altActu;
float altPrev;
float altPrevPrev;
float vario;


double altCalibration;
double pressionJ;
double pressionCalibration;
double altMoyenne; 
double echantillon = 50.0;

//baro

//-------------------------------------------------------

void setup() {
 Serial.begin(9600);

 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  
 
 sht.begin(0x44);
 
 bme.begin(0x77);

 ss.begin(9600);                        
 
 pinMode(2,INPUT);
 
 
 display.clearDisplay();
 display.setTextColor(WHITE);
 display.setTextSize(2);
 display.setCursor(0,0);
 display.println("Variometre");
 display.setTextSize(1);
 display.println(" ");
 display.println("Gauthier FREYDT");
 delay(3000);
 
 while (switchInitState == LOW) {
  switchInitState = digitalRead(2);
  altCalibration = (map(analogRead(pot1),0,1023,0,100000))/100.0;
  
  display.clearDisplay();
  display.print("Vous etes a :");
  display.setTextSize(2);
  display.setCursor(0,12);
  display.print(altCalibration);
  display.setTextSize(1);
  display.print("m");
  display.display();
   
  delay(50);
  }
 
 pressionCalibration = altCalibration*0.1197;//valeur moyennée à 1500m (valeur approchée à 0m = 0.1171728)
 pressionJ = ((bme.readPressure())/100)+pressionCalibration;
 Serial.println(pressionJ);
 altActu = bme.readAltitude(pressionJ);
 altPrev = altActu;
 vario=0;

 display.clearDisplay();   // clears the screen and buffer   // Efface l'écran 
 smartDelay(2000);

}


//--------------------------------------------------------


void loop() {
  
 if((millis()-time1) >= interMesure){
  Serial.println("boucle");
  altMoyenne = 0.0;
  for(int x=1; x<=echantillon; x++) {                              
   altMoyenne = altMoyenne + bme.readAltitude(pressionJ);
   //delay(1);
  }  
  altMoyenne = altMoyenne/echantillon;
  altActu = altMoyenne;

  vario = altActu-altPrev;
  vario = vario * 1000;
  time1 = millis() - time1;
  vario = vario / time1; //en m/s
  time1 = millis();
  altPrev = altActu;

//alti
 
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print("hPa: ");
  Alt = altActu;
  display.print(Alt);
  display.println("m");
  
//vario
  display.setTextSize(2);
  display.setCursor(68,0);
  //display.print("Vz: ");
  String var = String(vario,1); 
  if(vario>0){ 
    display.print(" ");
    display.print(var);
  }
  else{
    display.print(var);
  }
  display.setTextSize(1);

  
//température/humidité

  display.setTextSize(1);
  display.setCursor(70,16);
  T=sht.readTemperature();
  Hr=sht.readHumidity();
  display.print(T);
  display.print("\xA7  ");
  display.print(Hr);
  display.print("%");

  
//gps

  
  display.setCursor(0,8);
  display.print("GPS: ");
  Alt = gps.altitude.meters();
  display.print(Alt);
  display.print("m");

  display.setCursor(0,16);
  display.print(gps.satellites.value());
  display.print(" sat");

  display.setCursor(0,25);
  if(gps.time.hour()<10){
    display.print(" ");
  }
  display.print(gps.time.hour());
  display.print(":");
  if(gps.time.minute()<10){
    display.print("0");
  }
  display.print(gps.time.minute());

  display.setCursor(70,25);
  V=0;
  V = gps.speed.kmph();
  display.print(V);
  display.print(" km/h");

  display.display();
 }



//son

 if ((vario*100) >= 0){
  int frequence = map(vario, 1, 500, 300, 700);
  int temps = map(vario, 1, 500, 500, 100);
  tone(8, frequence, 100);
  delay(temps);
 } 
 
 if ((vario*100) <= -200){
   int frequence = map(vario, -500, -200, 80, 150);
   tone(8, frequence, 100);
   delay(1);
 }


smartDelay(1); 
}


static void smartDelay(unsigned long ms)
{
  unsigned long start = millis();
  do 
  {
    while (ss.available())
      gps.encode(ss.read());
  } while (millis() - start < ms);
}

Bonjour

Message d'erreurs illisibles sur un smartphone : faire par copié-collé du message d'erreurs !

Bonjour al1fch

Voici le message d'erreur :

/Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp: In member function 'uint8_t Adafruit_BMP280::read8(byte)':
/Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp:185:50: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
     _wire->requestFrom((uint8_t)_i2caddr, (byte)1);
                                                  ^
In file included from /Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.h:25:0,
                 from /Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp:22:
/Users/gauthierfreydt/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.6/libraries/Wire/src/Wire.h:62:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
     uint8_t requestFrom(int, int);
             ^~~~~~~~~~~
/Users/gauthierfreydt/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.6/libraries/Wire/src/Wire.h:60:13: note: candidate 2: virtual uint8_t TwoWire::requestFrom(uint8_t, size_t)
     uint8_t requestFrom(uint8_t, size_t);
             ^~~~~~~~~~~
/Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp: In member function 'uint16_t Adafruit_BMP280::read16(byte)':
/Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp:211:50: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
     _wire->requestFrom((uint8_t)_i2caddr, (byte)2);
                                                  ^
In file included from /Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.h:25:0,
                 from /Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp:22:
/Users/gauthierfreydt/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.6/libraries/Wire/src/Wire.h:62:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
     uint8_t requestFrom(int, int);
             ^~~~~~~~~~~
/Users/gauthierfreydt/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.6/libraries/Wire/src/Wire.h:60:13: note: candidate 2: virtual uint8_t TwoWire::requestFrom(uint8_t, size_t)
     uint8_t requestFrom(uint8_t, size_t);
             ^~~~~~~~~~~
/Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp: In member function 'uint32_t Adafruit_BMP280::read24(byte)':
/Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp:252:50: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
     _wire->requestFrom((uint8_t)_i2caddr, (byte)3);
                                                  ^
In file included from /Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.h:25:0,
                 from /Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BMP280_Library-1.0.5/Adafruit_BMP280.cpp:22:
/Users/gauthierfreydt/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.6/libraries/Wire/src/Wire.h:62:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
     uint8_t requestFrom(int, int);
             ^~~~~~~~~~~
/Users/gauthierfreydt/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.6/libraries/Wire/src/Wire.h:60:13: note: candidate 2: virtual uint8_t TwoWire::requestFrom(uint8_t, size_t)
     uint8_t requestFrom(uint8_t, size_t);
             ^~~~~~~~~~~
/Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BusIO-1.6.0/Adafruit_I2CDevice.cpp: In member function 'bool Adafruit_I2CDevice::read(uint8_t*, size_t, bool)':
/Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BusIO-1.6.0/Adafruit_I2CDevice.cpp:160:79: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
   size_t recv = _wire->requestFrom((uint8_t)_addr, (uint8_t)len, (uint8_t)stop);
                                                                               ^
In file included from /Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BusIO-1.6.0/Adafruit_I2CDevice.h:1:0,
                 from /Users/gauthierfreydt/Documents/Arduino/libraries/Adafruit_BusIO-1.6.0/Adafruit_I2CDevice.cpp:1:
/Users/gauthierfreydt/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.6/libraries/Wire/src/Wire.h:63:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)
     uint8_t requestFrom(int, int, int);
             ^~~~~~~~~~~
/Users/gauthierfreydt/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.6/libraries/Wire/src/Wire.h:61:13: note: candidate 2: virtual uint8_t TwoWire::requestFrom(uint8_t, size_t, bool)
     uint8_t requestFrom(uint8_t, size_t, bool);
             ^~~~~~~~~~~
Le croquis utilise 32260 octets (65%) de l'espace de stockage de programmes. Le maximum est de 49152 octets.
Les variables globales utilisent 1691 octets (27%) de mémoire dynamique, ce qui laisse 4453 octets pour les variables locales. Le maximum est de 6144 octets.

j'y vois un warning sur une conversion dans une ligne de la librairie d'Adafruit, pas une erreur.
la compilation a pu s'effectuer ce qui ne serait pas le cas en cas d'erreur.
le code est fonctionnel

Effectivement après exportation vers l'arduino nano, cela fonctionne, merci beaucoup !