Explication sur le fonctionnement de la mémoire de l'arduino

Bonjour,
je vient vers vous pour m'aider a avoir des explications et peut être la solution pour gérer la mémoire de mon Arduino, pour cela je pose quelque question.
1- le fait d'utiliser Serial.print utilise t-il beaucoup de mémoire et influence t-il mon timer millis?
2- je met mon programme qui fonctionne, mais dès que je remet le dernier serial print mon programme ne fonctionne plus.
3- si c'est juste un problème de mémoire y a t il un moyen de réduire la mémoire ( j'ai encore beaucoup de code pour finir mon programme)
merci d'avance pour votre aide précieux.

#define ENTREE_ANALOGIQUE 1
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
#include <Fonts/FreeMono9pt7b.h>                    // Normal (en 9, 12, 18, et 24 pts)
#define nombreDePixelsEnLargeur 128         // Taille de l'écran OLED, en pixel, au niveau de sa largeur
#define nombreDePixelsEnHauteur 64          // Taille de l'écran OLED, en pixel, au niveau de sa hauteur
#define brocheResetOLED         -1          // Reset de l'OLED partagé avec l'Arduino (d'où la valeur à -1, et non un numéro de pin)
#define adresseI2CecranOLED     0x3C        // Adresse de "mon" écran OLED sur le bus i2c (généralement égal à 0x3C ou 0x3D)
#define IN1 10
#define IN2 5
Adafruit_SSD1306 ecranOLED(nombreDePixelsEnLargeur, nombreDePixelsEnHauteur, &Wire, brocheResetOLED);   // Le "Wire" indique qu'on travaille en I2C


volatile int bpMAV = 0;  //ON OFF
volatile int bpMAR = 0; //ON OFF
volatile int bpFINCOURSE = 0; //fin de course  du système
volatile int intPORTE = 0; // INTERRUPTEUR port
volatile int intCONTACTCLEF = 0; // INTERRUPTEUR clé
volatile int intAUTO = 0; // INTERRUPTEUR manuel/Auto

int PWM1 = 204;// rapport cyclique 80%
int PWM2 = 50; // rapport cyclique 20%
int PWM3 = 127; // rapport cyclique 50%
int PWM4 = 50; // rapport cyclique 20%

int crono3 = 1300;
int cronall2 = 1000;


unsigned long chrono_marche_avant;
int marche_avant_active = 0;
unsigned long delai_marche_avant;
unsigned long chrono_marche_arriere;
int marche_arriere_active = 0;
unsigned long delai_marche_arriere;
int obstacle_marche_avant = 0;
int obstacle_marche_arriere = 0;
unsigned long chrono_porte_ouverte ;
int porte_ouverte_active = 0;
unsigned long delai_porte_ouverte;
int marche_arriere_obstacle_active = 0;
unsigned long delai_marche_arriere_obstacle;
unsigned long chrono_marche_arriere_obstacle;
int marche_avant_obstacle_active = 0;
unsigned long delai_marche_avant_obstacle;
unsigned long chrono_marche_avant_obstacle;
float SensorRead = analogRead(A2) * 5.0 / 1023.0;  //We read the sensor output

int flag = 0;
int flag1 = 0;

const unsigned char myBitmap [] PROGMEM = {
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0c, 0x1f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0x0f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3f, 0x27, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x7e, 0x4f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x7c, 0xcf, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0xe1, 0x8f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x03, 0x1f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf2, 0x3f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xfc, 0x3f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xc0, 0x7f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xc0, 0x02, 0x3f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x1f, 0xfc, 0x3f, 0xff, 0xfd, 0x0f, 0xe0, 0x3f, 0xf9, 0x8f, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x1f, 0xfe, 0x1f, 0xff, 0xfc, 0x3f, 0xf8, 0x3f, 0xf9, 0x8f, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x1f, 0xff, 0x0f, 0xff, 0xf8, 0x7f, 0xf8, 0x7f, 0xfb, 0x1f, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0x8f, 0xff, 0x07, 0xff, 0xf1, 0xff, 0xf8, 0x7f, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xc3, 0xfe, 0x83, 0xff, 0xe3, 0xff, 0xf0, 0xff, 0xfe, 0x07, 0x03, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xc7, 0xff, 0xf0, 0xff, 0xfc, 0x3f, 0xf1, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xf0, 0xff, 0x80, 0xff, 0xc7, 0xff, 0xe1, 0xff, 0xfc, 0x7f, 0xd9, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xf0, 0x7f, 0x00, 0x3f, 0x8f, 0xff, 0xc1, 0xff, 0xf8, 0x7f, 0xf8, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xf8, 0x3f, 0x00, 0x00, 0x1f, 0xff, 0xc3, 0xff, 0xf8, 0xff, 0xf0, 0x1f, 0xff, 0xff,
  0xff, 0xff, 0xf8, 0x00, 0x01, 0x00, 0x1f, 0xff, 0x87, 0xff, 0xf0, 0xff, 0xf1, 0x8f, 0xff, 0xff,
  0xff, 0xff, 0xfc, 0x00, 0x01, 0x84, 0x3f, 0xff, 0x87, 0xff, 0xf1, 0xff, 0xf1, 0xc7, 0xff, 0xff,
  0xff, 0xff, 0xfe, 0x00, 0x01, 0x80, 0x7f, 0xff, 0x0f, 0xff, 0xe1, 0xff, 0xe3, 0xe7, 0xff, 0xff,
  0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x1f, 0xff, 0xe3, 0xff, 0xc3, 0xe3, 0xff, 0xff,
  0xff, 0xff, 0xff, 0x80, 0xff, 0x00, 0xff, 0xfe, 0x1f, 0xff, 0xc3, 0xff, 0x87, 0xe3, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xc3, 0xff, 0xc0, 0xff, 0xfe, 0x3f, 0xff, 0xc7, 0xff, 0xc7, 0xf1, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xe1, 0xff, 0xc1, 0xff, 0xfe, 0x7f, 0xff, 0x87, 0xff, 0x8f, 0xf1, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xf1, 0xff, 0x81, 0xff, 0xfc, 0xff, 0xff, 0x8f, 0xff, 0x8f, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xf8, 0x7e, 0x03, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0x0f, 0xfc, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xfc, 0x18, 0x03, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x1f, 0xfc, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0x3f, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0x7f, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xf8, 0x0f, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xfd, 0xff, 0xf8, 0x00, 0xf0, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x80, 0x00, 0x7f, 0xf9, 0xff, 0xc0, 0x01, 0xe0, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xfe, 0x1f, 0x80, 0x00, 0x0f, 0x80, 0x3f, 0x00, 0x7f, 0xc1, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe1, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc3, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x07, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x1f, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x3f, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x1f, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x10, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '106870349-vecteur-d-icône-de-porte-isolé-sur-fond-blanc-pour-la-conception-de-votre-application-web-et-mobile-', 128x64px
const unsigned char myBitmap1 [] PROGMEM = {
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'istockphoto-1140967663-612x612', 128x64px
const unsigned char myBitmap2 [] PROGMEM = {
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};


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

  // Initialise le Timer 2 pour déclencher les interruptions à intervalle régulier
  TCCR2A = 0; //default
  TCCR2B = 0b00000110; // clk/256 est incrémenté toutes les 16uS
  TIMSK2 = 0b00000001; // TOIE2
  sei();               // autorise les interruptions

  ecranOLED.begin(SSD1306_SWITCHCAPVCC, adresseI2CecranOLED);

  ecranOLED.clearDisplay();
  ecranOLED.setTextSize(2);
  ecranOLED.setCursor(0, 0);
  ecranOLED.setTextColor(SSD1306_WHITE);

  ecranOLED.println("__________");
  ecranOLED.println("GroupeInti");
  ecranOLED.println("**ENJOY**");
  ecranOLED.println("__________");
  ecranOLED.display();
  ecranOLED.setTextSize(1);


  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(3, INPUT); // INTERRUPTEUR intPORTE
  pinMode(9, INPUT); // INTERRUPTEUR intCONTACTCLEF
  pinMode(8, INPUT); // INTERRUPTEUR intAUTO
  pinMode(6, INPUT); //  pin marche avant
  pinMode(12, INPUT); // pin marche arrière
  pinMode(7, INPUT); // pin FIN COURSE



}

void ecran (String valeur1, String ouvert_ferme, String valeur2, int etat2 , String valeur3, int etat3 , String valeur4, int etat4 )
{
  ecranOLED.clearDisplay();
  ecranOLED.setTextSize(1);
  ecranOLED.setCursor(0, 0);
  ecranOLED.setTextColor(SSD1306_WHITE);
  ecranOLED.println("__________");
  ecranOLED.print(valeur1);
  ecranOLED.print(" = ");
  ecranOLED.println(ouvert_ferme);
  ecranOLED.println("__________");
  ecranOLED.print(valeur2);
  ecranOLED.print(" = ");
  ecranOLED.println(etat2);
  ecranOLED.println("__________");
  ecranOLED.print(valeur3);
  ecranOLED.print(" = ");
  ecranOLED.println(etat3);
  ecranOLED.println("__________");
  ecranOLED.print(valeur4);
  ecranOLED.print(" = ");
  ecranOLED.println(etat4);
  ecranOLED.println("__________");
  ecranOLED.display();


}

void mesure (String valeur, float tension )
{
  ecranOLED.clearDisplay();
  ecranOLED.setTextSize(1);
  ecranOLED.setCursor(0, 0);
  ecranOLED.setTextColor(SSD1306_WHITE);
  ecranOLED.println("__________");
  ecranOLED.print(valeur);
  ecranOLED.print(" = ");
  ecranOLED.print(tension);
  ecranOLED.println(" V ");
  ecranOLED.display();
}

void warning (String warm  )
{
  ecranOLED.clearDisplay();
  ecranOLED.setTextSize(2);
  ecranOLED.setCursor(0, 0);
  ecranOLED.setTextColor(SSD1306_WHITE);
  ecranOLED.println("__________");
  ecranOLED.println(warm);
  ecranOLED.println("__________");
  ecranOLED.display();


}
void image (const unsigned char img  )
{
  ecranOLED.clearDisplay();
  ecranOLED.setCursor(0, 0);
  ecranOLED.drawBitmap(1, 1,  myBitmap, 128, 64, 1);
  ecranOLED.display();


}
void image1 (const unsigned char img1  )
{
  ecranOLED.clearDisplay();
  ecranOLED.setCursor(0, 0);
  ecranOLED.drawBitmap(1, 1,  myBitmap1, 128, 64, 1);
  ecranOLED.display();


}
void image2 (const unsigned char img2  )
{
  ecranOLED.clearDisplay();
  ecranOLED.setCursor(0, 0);
  ecranOLED.drawBitmap(1, 1,  myBitmap2, 128, 64, 1);
  ecranOLED.display();


}


int marcheavant1 ()
{
  analogWrite(IN1, PWM1);
  digitalWrite(IN2, LOW);

}
int marcheavant2 ()
{
  analogWrite(IN1, PWM4);
  digitalWrite(IN2, LOW);

}
int marchearriere1 ()
{
  digitalWrite(IN1, LOW);
  analogWrite(IN2, PWM1 );

}
int marchearriere2 ()
{
  digitalWrite(IN1, LOW);
  analogWrite(IN2, PWM2 );

}
int Stop ()
{
  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW );

}


void loop()
{
  if (intAUTO == 1)
  {
    //   warning("Mode Auto");
    if (intPORTE == 1 && bpFINCOURSE == 0 && intCONTACTCLEF == 0 )
    {
      if (flag1 == 0 || flag1 == 2 ||  flag1 == 1 ||  flag1 == 3)
      {
        //image1(myBitmap1);
        //warning("  Porte    Ouverte");

        if (marche_arriere_active == 0 || marche_avant_obstacle_active == 0)
        {
          chrono_marche_avant = millis();
          marche_avant_active = 1;
        }
        chrono_porte_ouverte = millis();
        porte_ouverte_active = 1;

      }
      flag1 = 1;
    }

    if (intPORTE == 0 && bpFINCOURSE == 1)
    {

      if (flag1 == 1)
      {
        // image2(myBitmap2);
        //warning("  Porte    Fermer");
        if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
        {
          chrono_marche_arriere = millis();
          marche_arriere_active = 1;
        }

        flag1 = 0;
      }

    }
    if (bpFINCOURSE == 1 && intCONTACTCLEF == 1 && intPORTE == 1)
    {
      if (flag1 == 0 || flag1 == 1 ||  flag1 == 3 )
      {
        //image1(myBitmap1);
        //warning("  Porte    Ouverte");
        if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
        {
          chrono_marche_arriere = millis();
          marche_arriere_active = 1;
        }
        chrono_porte_ouverte = millis();
        porte_ouverte_active = 1;

        flag1 = 2;
      }
    }
    if (bpFINCOURSE == 1 && intCONTACTCLEF == 1 && intPORTE == 0)
    {
      if (flag1 == 0 || flag1 == 2 ||  flag1 == 1)
      {
        //image2(myBitmap2);
        //warning("  Porte    Fermer");
        if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
        {
          chrono_marche_arriere = millis();
          marche_arriere_active = 1;
        }
        flag1 = 3;
      }

    }
    if (intCONTACTCLEF == 1 && intPORTE == 1 && bpFINCOURSE == 0)
    {
      //image1(myBitmap1);
      //warning("  Porte    Ouverte");
      chrono_porte_ouverte = millis();
      porte_ouverte_active = 1;
      Stop();
    }
  }
  if (intAUTO == 0)

  {
    //warning("   Mode     Manuel");

    if (bpMAV == 0 && bpMAR == 0  && intPORTE == 0 && intCONTACTCLEF == 0 )


    {
      // image2(myBitmap2);
      // warning("  Porte    Fermer");
      //ecran ("CAP PORTE", "FERMER", "CAPTEUR CLEF", 0, "BP AV", 0, "BP AR", 0);

    }


    if (bpMAV == 1 && bpMAR == 0  && intPORTE == 0 && intCONTACTCLEF == 0  )
    {
      //image2(myBitmap2);
      //warning("  Porte    Fermer");
      //ecran ("CAP PORTE", "FERMER", "CAPTEUR CLEF", 0, "BP AV", 1, "BP AR", 0);

      if (marche_arriere_active == 0 || marche_avant_obstacle_active == 0)
      {
        chrono_marche_avant = millis();
        marche_avant_active = 1;
      }

    }

    if (bpMAV == 0 && bpMAR == 1  && intPORTE == 0 && intCONTACTCLEF == 0  )
    {
      //image2(myBitmap2);
      //warning("  Porte    Fermer");
      //ecran ("CAP PORTE", "FERMER", "CAPTEUR CLEF", 0, "BP AV", 0, "BP AR", 1);
      if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
      {
        chrono_marche_arriere = millis();
        marche_arriere_active = 1;
      }
    }

    if (bpMAV == 0 && bpMAR == 0  && intPORTE == 0 && intCONTACTCLEF == 1  )
    {
      // image2(myBitmap2);
      // warning("  Porte    Fermer");
      //ecran ("CAP PORTE", "FERMER", "CAPTEUR CLEF", 1, "BP AV", 0, "BP AR", 0);

      if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
      {
        chrono_marche_arriere = millis();
        marche_arriere_active = 1;
      }

    }

    if (bpMAV == 0 && bpMAR == 0  && intPORTE == 1 && intCONTACTCLEF == 1  )
    {
      // image1(myBitmap1);
      // warning("  Porte    Ouverte");
      //ecran ("CAP PORTE", "OUVERTE", "CAPTEUR CLEF", 1, "BP AV", 0, "BP AR", 0);
      chrono_porte_ouverte = millis();
      porte_ouverte_active = 1;

      if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
      {
        chrono_marche_arriere = millis();
        marche_arriere_active = 1;
      }
    }

    if (bpMAV == 1 && bpMAR == 1 && intPORTE == 1 && intCONTACTCLEF == 1  )
    {

      //ecran ("NO", "1", "NO", 1, "NO", 1, "NO", 1);

      //image(myBitmap1);



    }
    if (bpMAV == 1 && bpMAR == 0  && intPORTE == 1 && intCONTACTCLEF == 0  )
    {
      //image1(myBitmap1);
      // warning("  Porte    Ouverte");
      //ecran ("CAP PORTE", "OUVERTE", "CAPTEUR CLEF", 0, "BP AV", 1, "BP AR", 0);
      chrono_porte_ouverte = millis();
      porte_ouverte_active = 1;

      if (marche_arriere_active == 0 || marche_avant_obstacle_active == 0)
      {
        chrono_marche_avant = millis();
        marche_avant_active = 1;
      }

    }

    if (bpMAV == 0 && bpMAR == 1  && intPORTE == 1 && intCONTACTCLEF == 0  )
    {
      //image1(myBitmap1);
      //warning("  Porte    Ouverte");
      //ecran ("CAP PORTE", "OUVERTE", "CAPTEUR CLEF", 0, "BP AV", 0, "BP AR", 1);

      if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
      {
        chrono_marche_arriere = millis();
        marche_arriere_active = 1;
      }
      chrono_porte_ouverte = millis();
      porte_ouverte_active = 1;
    }
    if (bpMAV == 0 && bpMAR == 0  && intPORTE == 1 && intCONTACTCLEF == 0 )
    {
      // ecran ("CAP PORTE", "OUVERTE", "CAPTEUR CLEF", 0, "BP AV", 0, "BP AR", 0);
      // image1(myBitmap1);
      //warning("  Porte    Ouverte");
      chrono_porte_ouverte = millis();
      porte_ouverte_active = 1;
    }
  }

  float SensorRead = analogRead(A2) * 5.0 / 1023.0;  //We read the sensor output

  mesure("tension", SensorRead);

  if (marche_avant_active == 1 )
  {
    delai_marche_avant = millis() - chrono_marche_avant;
    Serial.print (" delai_marche_avant=");
    Serial.println (delai_marche_avant);
  }
  if (marche_avant_active == 1  && delai_marche_avant < 850 )

  {
    Serial.print ("delai_marche_avant: marcheavant1");

    marcheavant1();

  }
  if ( marche_avant_active == 1  && delai_marche_avant <= 2500 && delai_marche_avant >= 850)
  {
    Serial.print ("delai_marche_avant: marcheavant2");
    marcheavant2();

  }
  if ( marche_avant_active == 1  && delai_marche_avant > 2500 )
  {
    Serial.print ("delai_marche_avant: Stop");
    Stop();
    marche_avant_active = 0;

  }

  if (marche_avant_active == 1  && delai_marche_avant < 2500 && SensorRead < 2.20)
  {
    Serial.println ("delai_marche_avant: obstacle");
    chrono_marche_avant_obstacle = millis();
    marche_avant_active = 0;
    marche_avant_obstacle_active = 1;
  }

  if (marche_avant_obstacle_active == 1 )
  {
    delai_marche_avant_obstacle = millis() - chrono_marche_avant_obstacle;
    Serial.print (" delai_marche_avant_obstacle=");
    Serial.println (delai_marche_avant_obstacle);
    marchearriere1();

  }
  if ( marche_avant_obstacle_active == 1  && delai_marche_avant_obstacle >= delai_marche_avant  )
  {
    Serial.print (" delai_marche_avant: Stop");
    Stop();
    marche_avant_obstacle_active = 0;
  }


  if (marche_arriere_active == 1  )
  {

    delai_marche_arriere = millis() - chrono_marche_arriere;
    Serial.print (" delai_marche_arriere=");
    Serial.println (delai_marche_arriere);

  }
  if (marche_arriere_active == 1  && delai_marche_arriere < 1100 )

  {
    Serial.print ("marchearriere1");

    marchearriere1();

  }
  if ( marche_arriere_active == 1 && delai_marche_arriere < 2700 && delai_marche_arriere >= 1100)
  {
    Serial.print ("marchearriere2");
    marchearriere2();

  }
  if ( marche_arriere_active == 1 && delai_marche_arriere > 2700)
  {
    Serial.print ("Stop");
    Stop();
    marche_arriere_active = 0;
  }
  if (marche_arriere_active == 1  && delai_marche_arriere < 2700 && SensorRead > 2.95)
  {
    chrono_marche_arriere_obstacle = millis();
    marche_arriere_active = 0;
    marche_arriere_obstacle_active = 1;
  }
  if (marche_arriere_obstacle_active == 1 )
  {
    delai_marche_arriere_obstacle = millis() - chrono_marche_arriere_obstacle;
    Serial.println ("delai_obstacle=");
    Serial.println (delai_marche_arriere_obstacle);
    marchearriere1();
  }

  if ( marche_arriere_obstacle_active == 1  && delai_marche_arriere_obstacle >= delai_marche_arriere  )
  {
    //Serial.print (" delai_marche_arriere: Stop");
    Stop();
    marche_arriere_obstacle_active = 0;
  }

}

// routine d'interruption du timer
ISR (TIMER2_OVF_vect)
{
  // 256-6 --> 250X16uS = 4mS
  // Recharge le timer pour que la prochaine interruption se déclenche dans 4mS
  TCNT2 = 6;
  //================================//
  //je vais lire  toutes les entrées//
  //================================//
  bpMAV = digitalRead (6);// le bp av
  bpMAR = digitalRead (12);// le bp arr
  intPORTE = digitalRead (3);// le bp intPORTE
  intCONTACTCLEF = digitalRead (9);// le bp intCONTACTCLEF
  intAUTO = digitalRead (8);// le bp intAUTO
  bpFINCOURSE = digitalRead (7);// le bpFINCOURSE
  //================================//
  //================================//
  //================================//

}

Bonjour lounis9254

Qu'est-ce qui ne fonctionne plus, planté?

Oui, surtout la mémoire la plus "précieuse" au fonctionnement de l'Arduino. Plusieurs trucs à faire:
Tu répètes de nombreuses fois
println("_________");
Si tu crées une variable constante une fois:
const String underscore = "__________";
et tu fait
println(underscore);

Tout les Serial.print de ce genre:
Serial.print (" delai_marche_avant=");
Modifiés en:
Serial.print (F(" delai_marche_avant="));

Tu auras déjà économisé une poignée d'octets.

Cordialement
jpbbricole

je pilote un moteur via des bouton donc quand j'appui sur le bouton marche avant ou marche arrière y'a rien qui se passe et j'ai un point d'exclamation au niveau de mon moniteur série.

c'est la mémoire dynamique?

Bien oui c'est vrai, on veut économiser les ressources alors on crée des objets inutiles.
Pourquoi toujours ce réflexe d'utiliser les Strings. Surtout si c'est juste pour faire de l'affichage.

const String machaine = "ceci est ma chaine";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println(machaine);
}

void loop() {
  // put your main code here, to run repeatedly:

}

Sketch uses 3168 bytes (2%) of program storage space. Maximum is 130048 bytes.
Global variables use 604 bytes (3%) of dynamic memory, leaving 15780 bytes for local variables. Maximum is 16384 bytes.


const char machaine[] = "ceci est ma chaine";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println(machaine);
}

void loop() {
  // put your main code here, to run repeatedly:

}

Sketch uses 1766 bytes (1%) of program storage space. Maximum is 130048 bytes.
Global variables use 588 bytes (3%) of dynamic memory, leaving 15796 bytes for local variables. Maximum is 16384 bytes.

Moralité avec des String

  • le code est pratiquement 2 fois plus gros dans le contexte de ce test
  • et il consomme de la RAM en plus

C'est la SRAM.
J'ai fait des essais, le plus efficace est de mettre les F("xxx") partout où c'est possible ça donne ceci:
Sans:

Compiling 'ARDFR_EssaisDivers' for 'Arduino Uno'
Program size: 20 824 bytes (used 65% of a 32 256 byte maximum) (2,16 secs)
Minimum Memory Usage: 877 bytes (43% of a 2048 byte maximum)

Avec:

Compiling 'ARDFR_EssaisDivers' for 'Arduino Uno'
Program size: 20 908 bytes (used 65% of a 32 256 byte maximum) (1,20 secs)
Minimum Memory Usage: 719 bytes (35% of a 2048 byte maximum)
#define ENTREE_ANALOGIQUE 1
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
#include <Fonts/FreeMono9pt7b.h>                    // Normal (en 9, 12, 18, et 24 pts)
#define nombreDePixelsEnLargeur 128         // Taille de l'écran OLED, en pixel, au niveau de sa largeur
#define nombreDePixelsEnHauteur 64          // Taille de l'écran OLED, en pixel, au niveau de sa hauteur
#define brocheResetOLED         -1          // Reset de l'OLED partagé avec l'Arduino (d'où la valeur à -1, et non un numéro de pin)
#define adresseI2CecranOLED     0x3C        // Adresse de "mon" écran OLED sur le bus i2c (généralement égal à 0x3C ou 0x3D)
#define IN1 10
#define IN2 5
Adafruit_SSD1306 ecranOLED(nombreDePixelsEnLargeur, nombreDePixelsEnHauteur, &Wire, brocheResetOLED);   // Le "Wire" indique qu'on travaille en I2C


volatile int bpMAV = 0;  //ON OFF
volatile int bpMAR = 0; //ON OFF
volatile int bpFINCOURSE = 0; //fin de course  du système
volatile int intPORTE = 0; // INTERRUPTEUR port
volatile int intCONTACTCLEF = 0; // INTERRUPTEUR clé
volatile int intAUTO = 0; // INTERRUPTEUR manuel/Auto

int PWM1 = 204;// rapport cyclique 80%
int PWM2 = 50; // rapport cyclique 20%
int PWM3 = 127; // rapport cyclique 50%
int PWM4 = 50; // rapport cyclique 20%

int crono3 = 1300;
int cronall2 = 1000;


unsigned long chrono_marche_avant;
int marche_avant_active = 0;
unsigned long delai_marche_avant;
unsigned long chrono_marche_arriere;
int marche_arriere_active = 0;
unsigned long delai_marche_arriere;
int obstacle_marche_avant = 0;
int obstacle_marche_arriere = 0;
unsigned long chrono_porte_ouverte ;
int porte_ouverte_active = 0;
unsigned long delai_porte_ouverte;
int marche_arriere_obstacle_active = 0;
unsigned long delai_marche_arriere_obstacle;
unsigned long chrono_marche_arriere_obstacle;
int marche_avant_obstacle_active = 0;
unsigned long delai_marche_avant_obstacle;
unsigned long chrono_marche_avant_obstacle;
float SensorRead = analogRead(A2) * 5.0 / 1023.0;  //We read the sensor output

int flag = 0;
int flag1 = 0;

const unsigned char myBitmap [] PROGMEM = {
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x0c, 0x1f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0x0f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3f, 0x27, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x7e, 0x4f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe4, 0x7c, 0xcf, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0xe1, 0x8f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, 0x03, 0x1f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf2, 0x3f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x3f, 0xfc, 0x3f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xc0, 0x7f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xc0, 0x02, 0x3f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0x1f, 0xfc, 0x3f, 0xff, 0xfd, 0x0f, 0xe0, 0x3f, 0xf9, 0x8f, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0x1f, 0xfe, 0x1f, 0xff, 0xfc, 0x3f, 0xf8, 0x3f, 0xf9, 0x8f, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0x1f, 0xff, 0x0f, 0xff, 0xf8, 0x7f, 0xf8, 0x7f, 0xfb, 0x1f, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0x8f, 0xff, 0x07, 0xff, 0xf1, 0xff, 0xf8, 0x7f, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xc3, 0xfe, 0x83, 0xff, 0xe3, 0xff, 0xf0, 0xff, 0xfe, 0x07, 0x03, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xc7, 0xff, 0xf0, 0xff, 0xfc, 0x3f, 0xf1, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xf0, 0xff, 0x80, 0xff, 0xc7, 0xff, 0xe1, 0xff, 0xfc, 0x7f, 0xd9, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xf0, 0x7f, 0x00, 0x3f, 0x8f, 0xff, 0xc1, 0xff, 0xf8, 0x7f, 0xf8, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xf8, 0x3f, 0x00, 0x00, 0x1f, 0xff, 0xc3, 0xff, 0xf8, 0xff, 0xf0, 0x1f, 0xff, 0xff,
	0xff, 0xff, 0xf8, 0x00, 0x01, 0x00, 0x1f, 0xff, 0x87, 0xff, 0xf0, 0xff, 0xf1, 0x8f, 0xff, 0xff,
	0xff, 0xff, 0xfc, 0x00, 0x01, 0x84, 0x3f, 0xff, 0x87, 0xff, 0xf1, 0xff, 0xf1, 0xc7, 0xff, 0xff,
	0xff, 0xff, 0xfe, 0x00, 0x01, 0x80, 0x7f, 0xff, 0x0f, 0xff, 0xe1, 0xff, 0xe3, 0xe7, 0xff, 0xff,
	0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x1f, 0xff, 0xe3, 0xff, 0xc3, 0xe3, 0xff, 0xff,
	0xff, 0xff, 0xff, 0x80, 0xff, 0x00, 0xff, 0xfe, 0x1f, 0xff, 0xc3, 0xff, 0x87, 0xe3, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xc3, 0xff, 0xc0, 0xff, 0xfe, 0x3f, 0xff, 0xc7, 0xff, 0xc7, 0xf1, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xe1, 0xff, 0xc1, 0xff, 0xfe, 0x7f, 0xff, 0x87, 0xff, 0x8f, 0xf1, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xf1, 0xff, 0x81, 0xff, 0xfc, 0xff, 0xff, 0x8f, 0xff, 0x8f, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xf8, 0x7e, 0x03, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0x0f, 0xfc, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xfc, 0x18, 0x03, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0x1f, 0xfc, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0x3f, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0x7f, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xf8, 0x0f, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xfd, 0xff, 0xf8, 0x00, 0xf0, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x80, 0x00, 0x7f, 0xf9, 0xff, 0xc0, 0x01, 0xe0, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xfe, 0x1f, 0x80, 0x00, 0x0f, 0x80, 0x3f, 0x00, 0x7f, 0xc1, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe1, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc3, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x07, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x1f, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x3f, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x1f, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x05, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x10, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// '106870349-vecteur-d-icône-de-porte-isolé-sur-fond-blanc-pour-la-conception-de-votre-application-web-et-mobile-', 128x64px
const unsigned char myBitmap1 [] PROGMEM = {
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x30, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// 'istockphoto-1140967663-612x612', 128x64px
const unsigned char myBitmap2 [] PROGMEM = {
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};



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

	// Initialise le Timer 2 pour déclencher les interruptions à intervalle régulier
	TCCR2A = 0; //default
	TCCR2B = 0b00000110; // clk/256 est incrémenté toutes les 16uS
	TIMSK2 = 0b00000001; // TOIE2
	sei();               // autorise les interruptions

	ecranOLED.begin(SSD1306_SWITCHCAPVCC, adresseI2CecranOLED);

	ecranOLED.clearDisplay();
	ecranOLED.setTextSize(2);
	ecranOLED.setCursor(0, 0);
	ecranOLED.setTextColor(SSD1306_WHITE);

	ecranOLED.println(F("__________"));
	ecranOLED.println(F("GroupeInti"));
	ecranOLED.println(F("**ENJOY**"));
	ecranOLED.println(F("__________"));
	ecranOLED.display();
	ecranOLED.setTextSize(1);


	pinMode(IN1, OUTPUT);
	pinMode(IN2, OUTPUT);
	pinMode(3, INPUT); // INTERRUPTEUR intPORTE
	pinMode(9, INPUT); // INTERRUPTEUR intCONTACTCLEF
	pinMode(8, INPUT); // INTERRUPTEUR intAUTO
	pinMode(6, INPUT); //  pin marche avant
	pinMode(12, INPUT); // pin marche arrière
	pinMode(7, INPUT); // pin FIN COURSE



}

void ecran (String valeur1, String ouvert_ferme, String valeur2, int etat2 , String valeur3, int etat3 , String valeur4, int etat4 )
{
	ecranOLED.clearDisplay();
	ecranOLED.setTextSize(1);
	ecranOLED.setCursor(0, 0);
	ecranOLED.setTextColor(SSD1306_WHITE);
	ecranOLED.println(F("__________"));
	ecranOLED.print(valeur1);
	ecranOLED.print(F(" = "));
	ecranOLED.println(ouvert_ferme);
	ecranOLED.println(F("__________"));
	ecranOLED.print(valeur2);
	ecranOLED.print(F(" = "));
	ecranOLED.println(etat2);
	ecranOLED.println(F("__________"));
	ecranOLED.print(valeur3);
	ecranOLED.print(F(" = "));
	ecranOLED.println(etat3);
	ecranOLED.println(F("__________"));
	ecranOLED.print(valeur4);
	ecranOLED.print(F(" = "));
	ecranOLED.println(etat4);
	ecranOLED.println(F("__________"));
	ecranOLED.display();


}

void mesure (String valeur, float tension )
{
	ecranOLED.clearDisplay();
	ecranOLED.setTextSize(1);
	ecranOLED.setCursor(0, 0);
	ecranOLED.setTextColor(SSD1306_WHITE);
	ecranOLED.println(F("__________"));
	ecranOLED.print(valeur);
	ecranOLED.print(F(" = "));
	ecranOLED.print(tension);
	ecranOLED.println(F(" V "));
	ecranOLED.display();
}

void warning (String warm  )
{
	ecranOLED.clearDisplay();
	ecranOLED.setTextSize(2);
	ecranOLED.setCursor(0, 0);
	ecranOLED.setTextColor(SSD1306_WHITE);
	ecranOLED.println(F("__________"));
	ecranOLED.println(warm);
	ecranOLED.println(F("__________"));
	ecranOLED.display();


}
void image (const unsigned char img  )
{
	ecranOLED.clearDisplay();
	ecranOLED.setCursor(0, 0);
	ecranOLED.drawBitmap(1, 1,  myBitmap, 128, 64, 1);
	ecranOLED.display();


}
void image1 (const unsigned char img1  )
{
	ecranOLED.clearDisplay();
	ecranOLED.setCursor(0, 0);
	ecranOLED.drawBitmap(1, 1,  myBitmap1, 128, 64, 1);
	ecranOLED.display();


}
void image2 (const unsigned char img2  )
{
	ecranOLED.clearDisplay();
	ecranOLED.setCursor(0, 0);
	ecranOLED.drawBitmap(1, 1,  myBitmap2, 128, 64, 1);
	ecranOLED.display();


}


int marcheavant1 ()
{
	analogWrite(IN1, PWM1);
	digitalWrite(IN2, LOW);

}
int marcheavant2 ()
{
	analogWrite(IN1, PWM4);
	digitalWrite(IN2, LOW);

}
int marchearriere1 ()
{
	digitalWrite(IN1, LOW);
	analogWrite(IN2, PWM1 );

}
int marchearriere2 ()
{
	digitalWrite(IN1, LOW);
	analogWrite(IN2, PWM2 );

}
int Stop ()
{
	digitalWrite(IN1, LOW);

	digitalWrite(IN2, LOW );

}


void loop()
{
	if (intAUTO == 1)
	{
		//   warning("Mode Auto");
		if (intPORTE == 1 && bpFINCOURSE == 0 && intCONTACTCLEF == 0 )
		{
			if (flag1 == 0 || flag1 == 2 ||  flag1 == 1 ||  flag1 == 3)
			{
				//image1(myBitmap1);
				//warning("  Porte    Ouverte");

				if (marche_arriere_active == 0 || marche_avant_obstacle_active == 0)
				{
					chrono_marche_avant = millis();
					marche_avant_active = 1;
				}
				chrono_porte_ouverte = millis();
				porte_ouverte_active = 1;

			}
			flag1 = 1;
		}

		if (intPORTE == 0 && bpFINCOURSE == 1)
		{

			if (flag1 == 1)
			{
				// image2(myBitmap2);
				//warning("  Porte    Fermer");
				if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
				{
					chrono_marche_arriere = millis();
					marche_arriere_active = 1;
				}

				flag1 = 0;
			}

		}
		if (bpFINCOURSE == 1 && intCONTACTCLEF == 1 && intPORTE == 1)
		{
			if (flag1 == 0 || flag1 == 1 ||  flag1 == 3 )
			{
				//image1(myBitmap1);
				//warning("  Porte    Ouverte");
				if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
				{
					chrono_marche_arriere = millis();
					marche_arriere_active = 1;
				}
				chrono_porte_ouverte = millis();
				porte_ouverte_active = 1;

				flag1 = 2;
			}
		}
		if (bpFINCOURSE == 1 && intCONTACTCLEF == 1 && intPORTE == 0)
		{
			if (flag1 == 0 || flag1 == 2 ||  flag1 == 1)
			{
				//image2(myBitmap2);
				//warning("  Porte    Fermer");
				if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
				{
					chrono_marche_arriere = millis();
					marche_arriere_active = 1;
				}
				flag1 = 3;
			}

		}
		if (intCONTACTCLEF == 1 && intPORTE == 1 && bpFINCOURSE == 0)
		{
			//image1(myBitmap1);
			//warning("  Porte    Ouverte");
			chrono_porte_ouverte = millis();
			porte_ouverte_active = 1;
			Stop();
		}
	}
	if (intAUTO == 0)

	{
		//warning("   Mode     Manuel");

		if (bpMAV == 0 && bpMAR == 0  && intPORTE == 0 && intCONTACTCLEF == 0 )


		{
			// image2(myBitmap2);
			// warning("  Porte    Fermer");
			//ecran ("CAP PORTE", "FERMER", "CAPTEUR CLEF", 0, "BP AV", 0, "BP AR", 0);

		}


		if (bpMAV == 1 && bpMAR == 0  && intPORTE == 0 && intCONTACTCLEF == 0  )
		{
			//image2(myBitmap2);
			//warning("  Porte    Fermer");
			//ecran ("CAP PORTE", "FERMER", "CAPTEUR CLEF", 0, "BP AV", 1, "BP AR", 0);

			if (marche_arriere_active == 0 || marche_avant_obstacle_active == 0)
			{
				chrono_marche_avant = millis();
				marche_avant_active = 1;
			}

		}

		if (bpMAV == 0 && bpMAR == 1  && intPORTE == 0 && intCONTACTCLEF == 0  )
		{
			//image2(myBitmap2);
			//warning("  Porte    Fermer");
			//ecran ("CAP PORTE", "FERMER", "CAPTEUR CLEF", 0, "BP AV", 0, "BP AR", 1);
			if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
			{
				chrono_marche_arriere = millis();
				marche_arriere_active = 1;
			}
		}

		if (bpMAV == 0 && bpMAR == 0  && intPORTE == 0 && intCONTACTCLEF == 1  )
		{
			// image2(myBitmap2);
			// warning("  Porte    Fermer");
			//ecran ("CAP PORTE", "FERMER", "CAPTEUR CLEF", 1, "BP AV", 0, "BP AR", 0);

			if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
			{
				chrono_marche_arriere = millis();
				marche_arriere_active = 1;
			}

		}

		if (bpMAV == 0 && bpMAR == 0  && intPORTE == 1 && intCONTACTCLEF == 1  )
		{
			// image1(myBitmap1);
			// warning("  Porte    Ouverte");
			//ecran ("CAP PORTE", "OUVERTE", "CAPTEUR CLEF", 1, "BP AV", 0, "BP AR", 0);
			chrono_porte_ouverte = millis();
			porte_ouverte_active = 1;

			if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
			{
				chrono_marche_arriere = millis();
				marche_arriere_active = 1;
			}
		}

		if (bpMAV == 1 && bpMAR == 1 && intPORTE == 1 && intCONTACTCLEF == 1  )
		{

			//ecran ("NO", "1", "NO", 1, "NO", 1, "NO", 1);

			//image(myBitmap1);



		}
		if (bpMAV == 1 && bpMAR == 0  && intPORTE == 1 && intCONTACTCLEF == 0  )
		{
			//image1(myBitmap1);
			// warning("  Porte    Ouverte");
			//ecran ("CAP PORTE", "OUVERTE", "CAPTEUR CLEF", 0, "BP AV", 1, "BP AR", 0);
			chrono_porte_ouverte = millis();
			porte_ouverte_active = 1;

			if (marche_arriere_active == 0 || marche_avant_obstacle_active == 0)
			{
				chrono_marche_avant = millis();
				marche_avant_active = 1;
			}

		}

		if (bpMAV == 0 && bpMAR == 1  && intPORTE == 1 && intCONTACTCLEF == 0  )
		{
			//image1(myBitmap1);
			//warning("  Porte    Ouverte");
			//ecran ("CAP PORTE", "OUVERTE", "CAPTEUR CLEF", 0, "BP AV", 0, "BP AR", 1);

			if (marche_avant_active == 0 || marche_arriere_obstacle_active == 0)
			{
				chrono_marche_arriere = millis();
				marche_arriere_active = 1;
			}
			chrono_porte_ouverte = millis();
			porte_ouverte_active = 1;
		}
		if (bpMAV == 0 && bpMAR == 0  && intPORTE == 1 && intCONTACTCLEF == 0 )
		{
			// ecran ("CAP PORTE", "OUVERTE", "CAPTEUR CLEF", 0, "BP AV", 0, "BP AR", 0);
			// image1(myBitmap1);
			//warning("  Porte    Ouverte");
			chrono_porte_ouverte = millis();
			porte_ouverte_active = 1;
		}
	}

	float SensorRead = analogRead(A2) * 5.0 / 1023.0;  //We read the sensor output

	mesure("tension", SensorRead);

	if (marche_avant_active == 1 )
	{
		delai_marche_avant = millis() - chrono_marche_avant;
		Serial.print F((" delai_marche_avant="));
		Serial.println (delai_marche_avant);
	}
	if (marche_avant_active == 1  && delai_marche_avant < 850 )

	{
		Serial.print ("delai_marche_avant: marcheavant1");

		marcheavant1();

	}
	if ( marche_avant_active == 1  && delai_marche_avant <= 2500 && delai_marche_avant >= 850)
	{
		Serial.print ("delai_marche_avant: marcheavant2");
		marcheavant2();

	}
	if ( marche_avant_active == 1  && delai_marche_avant > 2500 )
	{
		Serial.print ("delai_marche_avant: Stop");
		Stop();
		marche_avant_active = 0;

	}

	if (marche_avant_active == 1  && delai_marche_avant < 2500 && SensorRead < 2.20)
	{
		Serial.println (F("delai_marche_avant: obstacle"));
		chrono_marche_avant_obstacle = millis();
		marche_avant_active = 0;
		marche_avant_obstacle_active = 1;
	}

	if (marche_avant_obstacle_active == 1 )
	{
		delai_marche_avant_obstacle = millis() - chrono_marche_avant_obstacle;
		Serial.print F((" delai_marche_avant_obstacle="));
		Serial.println (delai_marche_avant_obstacle);
		marchearriere1();

	}
	if ( marche_avant_obstacle_active == 1  && delai_marche_avant_obstacle >= delai_marche_avant  )
	{
		Serial.print (" delai_marche_avant: Stop");
		Stop();
		marche_avant_obstacle_active = 0;
	}


	if (marche_arriere_active == 1  )
	{

		delai_marche_arriere = millis() - chrono_marche_arriere;
		Serial.print (F(" delai_marche_arriere="));
		Serial.println (delai_marche_arriere);

	}
	if (marche_arriere_active == 1  && delai_marche_arriere < 1100 )

	{
		Serial.print ("marchearriere1");

		marchearriere1();

	}
	if ( marche_arriere_active == 1 && delai_marche_arriere < 2700 && delai_marche_arriere >= 1100)
	{
		Serial.print ("marchearriere2");
		marchearriere2();

	}
	if ( marche_arriere_active == 1 && delai_marche_arriere > 2700)
	{
		Serial.print ("Stop");
		Stop();
		marche_arriere_active = 0;
	}
	if (marche_arriere_active == 1  && delai_marche_arriere < 2700 && SensorRead > 2.95)
	{
		chrono_marche_arriere_obstacle = millis();
		marche_arriere_active = 0;
		marche_arriere_obstacle_active = 1;
	}
	if (marche_arriere_obstacle_active == 1 )
	{
		delai_marche_arriere_obstacle = millis() - chrono_marche_arriere_obstacle;
		Serial.println F(("delai_obstacle="));
		Serial.println (delai_marche_arriere_obstacle);
		marchearriere1();
	}

	if ( marche_arriere_obstacle_active == 1  && delai_marche_arriere_obstacle >= delai_marche_arriere  )
	{
		//Serial.print (" delai_marche_arriere: Stop");
		Stop();
		marche_arriere_obstacle_active = 0;
	}

}

// routine d'interruption du timer
ISR (TIMER2_OVF_vect)
{
	// 256-6 --> 250X16uS = 4mS
	// Recharge le timer pour que la prochaine interruption se déclenche dans 4mS
	TCNT2 = 6;
	//================================//
	//je vais lire  toutes les entrées//
	//================================//
	bpMAV = digitalRead (6);// le bp av
	bpMAR = digitalRead (12);// le bp arr
	intPORTE = digitalRead (3);// le bp intPORTE
	intCONTACTCLEF = digitalRead (9);// le bp intCONTACTCLEF
	intAUTO = digitalRead (8);// le bp intAUTO
	bpFINCOURSE = digitalRead (7);// le bpFINCOURSE
	//================================//
	//================================//
	//================================//

}

Cordialement
jpbbricole

On dirait que c'est variables ne sont jamais modifiées dans le programme.
Il vaudrait mieux les déclarer comme constantes. Cela n'occupe pas de place en mémoire

const int PWM1 = 204;// rapport cyclique 80%
const int PWM2 = 50; // rapport cyclique 20%
const int PWM3 = 127; // rapport cyclique 50%
const int PWM4 = 50; // rapport cyclique 20%

Des bonnes habitudes à prendre:

  • au lieu de les appeler PWM1, .. PWM4 ce serait plus clair de les nommer 20pourcent, 50pourcent, 80pourcent
    comme ça on sait ce qui est passé comme valeur à PWM et on s'évite de devoir ajouter des commentaires
  • et les entrées
    pinMode(3, INPUT); // INTERRUPTEUR intPORTE
    pinMode(9, INPUT); // INTERRUPTEUR intCONTACTCLEF
    pinMode(8, INPUT); // INTERRUPTEUR intAUTO
    pinMode(6, INPUT); //  pin marche avant
    pinMode(12, INPUT); // pin marche arrière
    pinMode(7, INPUT); // pin FIN COURSE

pourquoi ne pas les déclarer en tête du programme en leur donnant des noms explicites

    const uint8_t interPORTE = 3;
    const uint8_t interCLEF = 9;
    const uint8_t interAUTO = 8
    const uint8_t marcheAVANT = 6;
    const uint8_t marcheARRIERE = 12;
    const uint8_t finDeCOURSE = 7;

et les utiliser dans le programme. Une fois de plus on s'évite des commentaires

    pinMode(interPORTE, INPUT); 
    pinMode(interCLEF, INPUT);
    pinMode(interAUTO, INPUT); 
    pinMode(marcheAVANT, INPUT); 
    pinMode(marcheARRIERE, INPUT); 
    pinMode(finDeCOURSE, INPUT);

Surtout quand on voit ceci :
La fonction accepte une String en argument.

Et on lui passe un char * ou un char[], ce qui provoque forcément une conversion :

Tu parles d'un gaspillage ...

Bonjour,
Merci pour tout vos réponse, ça m'a aider à économisé beaucoup de mémoire.
j'ai une autre question concernant la gestion de mon afficheur, je voudrai afficher les images et des truc en appuyant sur les bouton en évitant d'utiliser des delay .
j'ai essayer de mettre un chronomètre mais je n'arrive pas a le gérer

De quels delay() on parle, il n'y a pas de delay() dans ton code?

ah oui c'est vrai j'ai supprimer la partie ou y a des delay(), en exemple je veut faire un truc comme ceci

if (intCONTACTCLEF == 1 && bpFINCOURSE == 1)
{
warning( " STOP!");
delay(200);
warning( " ");
delay(200);
warning( " STOP!");
delay(200);
warning( " ");
delay(200);
warning( " STOP!");
delay(200);
warning( " ");
delay(200);
warning( "Retracter la marche avant de démarer ");
}

ça ne prendrai pas plus de mémoire en faisant ainsi ?

il faut faire comment alors?

Ne pas utiliser String tout simplement

void mesure (const char * valeur, float tension ) {
 ...
}

et si vraiment vous avez besoin d'utiliser la classe String passez au moins les paramètres par référence pour ne pas dupliquer la String lors de l'appel de fonction en rajoutant juste un & après le type ➜ par exemple

void ecran (String& valeur1, String& ouvert_ferme, String& valeur2, int etat2 , String& valeur3, int etat3 , String& valeur4, int etat4 )

comme dit par mes camarades, déclarer une String pour cela est une double hérésie quand il 'agit d'économiser de la mémoire.

Outre le fait que la classe String prend plus de place qu'un simple const char * (et encore mieux en utilisant PROGMEM) le compilateur est en fait intelligent.

Lors qu'on écrit "----------------" on a implicitement une variable de type const char * et donc le compilateur sait que cette chaîne ne peut pas être modifiée et donc il peut en tirer partie s'il a besoin de tout ou partie de cette chaîne plus tard.

Par exemple:

si on compile cela sur UNO

void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println("-------------");
}

void loop() {}

on consomme 202 octets de SRAM

maintenant si vous compilez cela:

void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
  Serial.println("-------------");
}

void loop() {}

le code consomme ENCORE 202 octets ➜ le compilateur a été assez intelligent pour repérer que l'on utilisait les même cStrings constantes et donc n'en a alloué qu'une seule en mémoire.

le compilateur est même super smart, si vous avez un print avec 10 tirets

void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println("----------");
}

void loop() {}

➜ 194 octets de SRAM

maintenant compilez cela

void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println("----------");
  Serial.println("---------");
  Serial.println("--------");
  Serial.println("-------");
  Serial.println("------");
  Serial.println("-----");
  Serial.println("----");
  Serial.println("---");
  Serial.println("--");
  Serial.println("-");
}

void loop() {}

et le code utilise encore 198 octets de SRAM

Pourquoi ? parce que le compilateur a vu qu'il pouvait réutiliser la fin de la chaîne constante qui contient les 10 tirets pour en prendre qu'un sous ensemble et donc il n'a rien alloué de plus.

La bonne solution c'est de mettre bien sûr F("----------") et on a le double effet kiss cool.

void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println(F("----------"));
}

void loop() {}

➜ 188 octets en SRAM (on a gagné 10 octets pour les 10 tirets)

et si on utilise un sous ensemble le compilateur est toujours fort:

void setup() {
  Serial.begin(115200); Serial.println();
  Serial.println(F("----------"));
  Serial.println(F("---------"));
  Serial.println(F("--------"));
  Serial.println(F("-------"));
  Serial.println(F("------"));
  Serial.println(F("-----"));
  Serial.println(F("----"));
  Serial.println(F("---"));
  Serial.println(F("--"));
  Serial.println(F("-"));}

void loop() {}

➜ toujours 188 octets en SRAM

@jpbbricole a été mordu par une String quand il était petit et il est possédé

Bonjour fdufnews

Non, pas tout à fait, j'ai simplement utilisé les possibilités du langage Arduino qui propose plein de fonctions pour traiter les chaînes de caractères.
Comme je pense que l'équipe Arduino qui a développé tout ça n'est pas moins connaisseur de la chose ou plus stupide que tout les pseudos "experts" qui critiquent tout ça...
Les fonctions String facilitent grandement le traitement des chaînes de caractères et comme je fais partie de ceux que tu qualifies élégamment:
Donc pour la faire courte Arduino c'est pour les noobs (ou les flemmards)
(moi, c'est plutôt flemmard!) Je continuerai d'utiliser les String et d'en proposer l'usage, comme l'immense majorité des usager de l'Arduino.

Cordialement
jpbbricole

Vous pouvez mais autant le faire à bon escient quand même...

Dans les discussions spécifiques sur l'optimisation mémoire par exemple, ce n'est généralement pas une bonne idée de proposer des Strings.

Faire

const String underscore = "__________";

coûte de la mémoire flash pour représenter le code, puis de la RAM pour le const char * "__________" et enfin de la RAM pour la String elle même - sans parler de la mémoire flash affectée au constructeur de la classe String et de l'allocation dynamique de mémoire...

De plus, dans le cas présent votre proposition n'apporte rien, elle est même contre-productive et consomme juste plus de mémoire SRAM que la version où @lounis9254 fait des println("__________"); comme je l'ai expliqué plus haut puisque le compilateur n'alloue pas plusieurs fois la chaîne.

la bonne réponse était celle que vous aviez donné ensuite, utiliser la macro F("texte") pour mettre le texte en mémoire flash.

Bonjour J-M-L

Dont acte.

Cordialement
jpbbricole

Je voudrais quand même rappeler que les fonctions dont on parle ne sont pas une création d'Arduino, mais de Wiring.
https://arduinohistory.github.io/

H barragan n'a jamais voulu développer une API pour des développements professionnels, ce qu'il a développé, en reprenant le travail de processing, était destiné à des artistes en "design industriel" qui ne connaissaient rien à la programmation.

Depuis ce projet à évoluer vers moins d'amateurisme, mais ce n'est pas encore du professionnel de première classe.
Il faut garder ces faits en mémoire avant de porter des jugements.

L'équipe arduino ne développe plus :
les adaptations des fonctions sont faites par les concepteurs des micros : Atmel/Microchip, Espressif, Nordic, STMicro, etc ......

L'IDE V2 peine à sortir.
Arduino V2 ressemble étrangement à la nouvelle IDE qu'ARM mets, très lentement, au point pour son projet MBed (c'est à se demander si ARM veut réellement la sortir).
La présence de directeurs d'ARM au conseil d'administration de la société de droit suisse Arduino SA explique peut-être ce retard sur Arduino V2.