[Résolu] Cohabitation SPI et I2C

Bonjour,

Je possède un arduino UNO depuis une petite semaine. Je débute donc.
J’ai avec satisfaction pu faire fonctionner un par un les éléments que j’ai commandé pour construire un barographe:

  • Baromètre Adafruit BMP388
  • Horloge Adafruit DS3231
  • Écran E-paper Waveshare.
    Les composants BMP388 et DS3231 sont connectés en I2C sur les pins 4 et 5
    L’écran est connecté en SPI.

J’arrive a faire fonctionner chaque module indépendamment, puis les 2 I2C ensemble. Je pense donc que mon cablage est correct
Lorsque j’ajoute l’ecran plus rien ne marche.

J’ai donc recommencé à zéro en écrivant un code pour l’écran seul. Il fonctionne mais cela n’est plus le cas en ajoutantles lignes liées à un composant I2C. Le setup semble bien se dérouler, mais rien dans les instructions de la boucle.

Y a t il une incompatibilité entre SPI et I2C?

Merci pour votre support

Voici mon code (ici avec ecran + RTC)

#include <SPI.h>
#include "epd4in2.h"
#include <epdpaint.h>

Epd epd;
#define COLORED     0
#define UNCOLORED   1

//RTC
#include <RTClib.h>
RTC_DS3231 rtc;
//RTC

int8_t compteur = 0;
char texte[8];

void setup() {
 Serial.begin(9600);
 delay(3000);
     
//RTC///
 if (! rtc.begin()) {
   Serial.println("Couldn't find RTC");
   while (1);
 }
//RTC//

 if (epd.Init() != 0) {
   Serial.print("e-Paper init failed");
   return;
 }
 epd.ClearFrame();
}
void loop() {
 
 unsigned char image[1500];
 Paint paint(image, 400, 28);    //width should be the multiple of 8

 dtostrf(compteur,5,0,texte);

 paint.Clear(UNCOLORED);
 paint.DrawStringAt(0, 0, texte, &Font24, COLORED);
 epd.SetPartialWindow(paint.GetImage(), 100, 40, paint.GetWidth(), paint.GetHeight());
 epd.DisplayFrame();

 Serial.println(compteur);
 compteur++;
 delay(5000);
}

Bonjour il n' y aucune raison pour que le SPI et l'I2C ne puissent cohabiter dans un même code. C'est assez courant.

J'ai parcouru ton code, cette ligne devrait se trouver avant le setup : peut-être est-ce la cause du problème ?

Paint paint(image, 400, 28);    //width should be the multiple of 8

Sinon, je ne connais pas la bibliothèque que tu utilises pour l'e-paper, donc je ne peux pas juger cette partie. Moi j'utilise GxEPD2 qui peut aussi afficher des bitmaps.

A ce propos, où est défini le contenu de ton image ?

Bonsoir,

J'ai corrigé en positionnant la ligne Paint avant le setup, cela fonctionne! Merci!

J'avais également trouvé GxEPD2. Je viens de le tester à nouveau et cela fonctionne également.

Par contre, le UNO va vite etre limité en place et RAM....

Encore merci pour le coup de main!