Division écran 5110

Je pensais que tu voulais des rectangles avec les coins arrondis, si ce sont des angles droits autant utiliser drawRect :

  display.drawRect(0, 0, 34, 48, 1); // cadre de gauche
  display.drawRect(36, 0, 48, 48, 1); //cadre de droite

Peut-être parce que tu n'effaces pas l'écran entre deux images successives ?
Là tu as deux options :

  • Soit tu effaces tout l'écran et tu réaffiches tout : les rectangles, le chiffre et la nouvelle image
  • Soit tu (tentes) effaces juste la partie droite dans le cadre. Mais si les 0 sont transparents ça ne marchera pas.

Pour effacer une partie de l'écran, il y a fillRect :
display.fillRect(37, 1, 46, 46, 0);

Si le fillRect ne fonctionne pas, il reste la solution de le faire "à la main" avec des boucles :

for (int i = 0; i < 47; i++)
  for (int j = 0; j < 47; j++)
    display.drawPixel(i + 37, j + 1, 0);

Ca met 0 dans le buffer de l'écran à l'intérieur du rectangle de droite. Ca devrait effacer l'image. Tu mets ça avant chaque appel de drawBitmap de l'animation des oiseaux.

Il faut comprendre un truc : l'Arduino va très très vite. Comme tu affiches dans la loop avec des temps de pause de 0.2 secondes, la loop se termine au bout d'une seconde et recommence. Donc l'affichage se fait très régulièrement et en superposé.

Tu peux tester avec ton code actuel (sans les effacements de la loop) en affichant un chiffre différent à chaque fois :

void loop() 
{
  static int i = 0;
  // Afficahe texte statique poru le moement puis variable mesurée
  Serial.begin(9600);
  display.setTextSize(1);
  display.setCursor(6,6);
  display.print(i);
  // Affichage animation OISEAU
  display.drawBitmap(38, 2, epd_bitmap_OISEAU01, 44, 44, 1);
  display.display();
  delay(200);
  display.drawBitmap(38, 2, epd_bitmap_OISEAU02, 44, 44, 1);
  display.display();
  delay(200);
  display.drawBitmap(38, 2, epd_bitmap_OISEAU03, 45, 44, 1);
  display.display();
  delay(200);
  display.drawBitmap(38, 2, epd_bitmap_OISEAU04, 44, 44, 1);
  display.display();
  delay(200);
  i = i + 1;
}

Là j'affiche un nombre qui part de 0 et augmente à chaque exécution de la loop. Que vois-tu ?
Ensuite, ajoute les clearDisplay : qu'est-ce qui change ?

1 Like

MERCI @lesept voilà la commande parfaite que j'espérais !
J'ai ajusté cette commande pour éviter d'effacer les angles du cadre de droite et c'est parfait !
L'objectif de ce post est donc atteint ! Merci beaucoup @lesept

Voici le résultat :
WhatsApp GIF 2024-11-01 at 15.22.16

Je poursuis mon projet très enthousiaste grâce au forum.arduino.cc

En guise de remerciement voici une image du hardware version prototype :

Bravo ! Bonne continuation.
Lorsqu'il sera terminé, tu pourras faire un message dans la section des projets terminés.
Si tu as des questions ou que tu veux optimiser ton code, continue ici !

1 Like

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