Bonjour, je cherche une solution j’utilise un Arduino uno en maitre qui envoie avec la liaison série I2C
des informations à l’esclave qui est méga 2560 sont rôle d’afficher des images et autres informations
Sur l esclave 2560 : a l étape demandé le souci c’est tant que l’image ne ce n’est pas complètement chargé je reste à cette étape
Alors que je souhaite passer à l’étape suivante même si l’image n’est pas complètement affichée
Comment faire
Le maitre uno lui continu sans retard ce qui est très bien la raison des 2 cartes
Voici le code de l’esclave simplifier
// Je suis l esclave afficheur
#include <Wire.h> // Envoi des données sur le bus i2c
#include <UTFT.h>
UTFT myGLCD(CPLD, 38,39,40,41);//Pour ecran 5" avec MD070SD
// Déclarons les polices que nous utiliserons ////////////////
extern uint8_t SmallFont[];
extern uint8_t Ubuntu[]; //24x32 pixels 95 Caractères
/////// Librairie pour afficher images sur écran /////////////////
#include <UTFT_tinyFAT.h>
UTFT_tinyFAT FichierImage(&myGLCD);
int affichage0 = 0; // Pour afficher l image qu une seul fois
int affichage1 = 0;
int affichage2 = 0;
int affichage3 = 0;
/////////////////////////////////////////////////////////////////////
/////// Librairie pour touches tactile //////////////////////////////
#include <UTFT_tinyFAT.h>
UTFT_tinyFAT myFiles(&myGLCD);
#include <UTouch.h>
UTouch myTouch( 6, 5, 4, 3, 2);
int x; int y; int x1; int y1;
///////////////////////////////////////////////////////////////////
int etape ='a';
void setup(){
/////// Communication serie I2C ///////////////////////////////////
Wire.begin(8); // L adresse de cet esclave est #8
Wire.onReceive(reception); // Preparer une fonction spécifique a la reception de donnee
Wire.onRequest(requete); // Fonction traitant une demande de données (demandé par le maitre)
/////// Setup image LCD ///////////////////////////////
file.initFAT();
randomSeed(analogRead(0));
myGLCD.clrScr (); // Efface l'écran
// FichierImage.loadBitmap(0, 0, 800, 480, "princ1.RAW");
////// Setup TFT LCD 800x480 5" /////////////////////////
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
myGLCD.setFont(Ubuntu);//
///// setup tactil ////////////////////////////////////
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
}
void loop() {
if (etape =='a'){ if (affichage0 == 0) {
myGLCD.clrScr (); // Efface l'écran
FichierImage.loadBitmap(0,0, 480, 320, "PIC703.RAW");//Image chat 320x240
(affichage0 = 1); affichage1 = 0;
}}
// Ici meme si l image n est pas fini de charger je veux passer a l etape b
if (etape =='b'){ if (affichage1 == 0){
myGLCD.clrScr (); // Efface l'écran
FichierImage.loadBitmap(480,0, 320, 240, "PIC303.RAW");//Image chat 320x240
affichage1 = 1; affichage0 = 0;
}}
}
//////////////////////////////////////////////////////////////////////////////////////////////
void reception(int nombreoctet){ // Fonction qui s execute si quelque chose est present sur l interface
char c = Wire.read(); //Recevoir une lettre
if (c == 'a') { etape='a';}
if (c == 'b') { etape='b';}
}
//////////////////////////////////////////////////////////////////////////////////////////////
// Fonction qui est exécutée lorsque le maître du bus I2C
// réclame des données à l'esclave
void requete( ) {
// Pour recevoir des infos de l escale afficheur
}