Skateboard électrique

Bonjour,
J’ai un projet qui est de faire un afficheur du pourcentage de la batterie d’un skateboard électrique (batterie Lithium Ion 29.4Vmax, 2Ah). Mes professeurs ont déjà validé l’utilisation de la tension pour déduire le pourcentage de batterie et pour la distance, j’ai pensé qu’on pourait voir à chaque minute la variation de distance en fonction du pourcentage perdu et qu’en multipliant le tout par le pourcentage restant, on obtiendrait une éstimation de la distance restante à parcourir. De plus, je joint un diagramme du montage et les courbes excel utilisées. Dites moi ce que vous en pensez et les problèmes éventuels (je suis nouveau sur Arduino !)

Voici le code :

#include <LiquidCrystal.h>

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
const float pi = 3.14159;
const float r = (34.5*0.01);
int n = 1;
int Distance;
int Pourcentage;
int Pourcentagerestant;
int DistanceRestante;
int entre1 = A0;
const int capteur = 6;
int time;
const unsigned long UneMinute = 60000;           // 1 minute = 60000ms
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
float listDistance[] = {0};
int listPourcentage[] = {0};
int listDifferencePourcentage[] = {0};


void setup() {
  lcd.begin(16, 2);          // nombre de caractères et de lignes du lcd
  pinMode(entre1, INPUT);
  pinMode(capteur,INPUT);
  lcd.print("Autonomie :");         // Affiche un message sur le lcd
  lcd.setCursor(0, 1);
  lcd.print("Distance :");
  Serial.begin(9600);

}

void loop() {

  int NombreDeTours = 0;
  boolean compteTours = LOW;
  unsigned long Temps = 0;
  unsigned long startTime = millis();
  
  while (Temps < UneMinute) {
    int Valeur1 = analogRead(entre1);                    //Valeur de la tension après avoir été convertie en numérique (ARDUINO -> 10 bit)
    float Tension1 = (Valeur1*(4.9 / 1003));             //Conversion de la tension sur 4.9V (valeur max en numérique : 1003)
    float Tension2 = (Tension1*6);                       //Conversion de la tension sur 29,4V
  
    if (Tension2 < 22.45) {
      Pourcentage = 0;
    }
    else {
      Pourcentage = ((Tension2*14.442)-324.78);      //calcul de l'autonomie avec l'équation tirée d'excel
    }
    lcd.setCursor(12, 0);
    lcd.print(Pourcentage);
    lcd.print("%");
    
    if (digitalRead(capteur) == HIGH) {             //valeur HIGH ou LOW
        compteTours = HIGH;
    }
    if (digitalRead(capteur) == LOW && compteTours == HIGH) {
        NombreDeTours++;
        compteTours=LOW;
    }
    Temps = millis() - startTime;
  }
  
  listDistance[n] = (NombreDeTours*2*pi*r);               //distance parcourue
  listPourcentage[n] = Pourcentage;
  listDifferencePourcentage[n] = (listPourcentage[n-1]-listPourcentage[n]);

  if (n==1 || listDifferencePourcentage[n]==0) {    // OU
    lcd.setCursor(11, 1);
    lcd.print("Erreur");
  }
  else {
    DistanceRestante = ((listDistance[n]/listDifferencePourcentage[n])*Pourcentage);
    lcd.setCursor(11, 1);
    lcd.print(DistanceRestante);
    lcd.print("m");
  }
  n++;

}

De plus je n’ai pas l’habitude d’utiliser arduino et me demandais si
if (n==1 || listDifferencePourcentage[n]==0) {
est l’équivalent de
if (n==1 or listDifferencePourcentage[n]==0):
en Python

Merci d’avance !

Grapix:
De plus je n'ai pas l'habitude d'utiliser arduino et me demandais si
if (n==1 || listDifferencePourcentage[n]==0) {
est l'équivalent de
if (n==1 or listDifferencePourcentage[n]==0):
en Python

Oui, || correspond au ou entre 2 booléen.

Un tableau définit par tableau ne réserve pas d'espace de stockage puisque le compilateur ne connais pas le besoin au moment de la compilation.
Il faut spécifier une dimension entre les crochets.
Sur un PC avec de la mémoire on peut faire de l'allocation dynamique pour adapter la taille du tableau dynamiquement mais sur un processeur avec peu de mémoire ça ne fonctionne pas correctement. Il vaut mieux fixer une taille raisonnable, adaptée au besoin.