Bonjour,
Je dispose d'une carte 4Display-Shield-160 avec Carte Arduino Uno et j'ai créer un menu possédant trois choix et j'aimerais faire en sorte que un rectangle se déplacer sur les trois choix lorsque je bouge le joystick ( Haut, bas, haut, bas )
Je me suis aider de l'exemple du départ mais je m'y pert
Cela m'affiche les trois choix :
Cocktail 1
Cocktail 2
Cocktail 3
Le rectangle est de base sur cocktail 2 et en affiche un autre sur cocktail 1 lorsqu'on utilise le joystick vers le haut et inversement pour cocktail 3
Mon problème est que les rectangles restent
Pouvez vous m'aider avec le code ? ( Il faudrait que je le réduise mais je ne sais pas tout ce qu'il faut enlever )
Voici le code :
#define DisplaySerial Serial
#include "Goldelox_Serial_4DLib.h"
#include "Goldelox_Const4D.h"
Goldelox_Serial_4DLib Display(&DisplaySerial);
void Joystick_Tests(void)
{
#ifndef GOLDELOX_JOYSTICK
#define DOWNPIN 2
#define FIREPIN 5
#define UPPIN 6
pinMode(DOWNPIN, INPUT_PULLUP);
pinMode(FIREPIN, INPUT_PULLUP);
pinMode(UPPIN, INPUT_PULLUP);
#endif
int i ;
int oldi ;
Display.gfx_Cls() ;//Permet de ne pas faire réaparraitre le mot cocktail
Display.txt_Xgap(6);
Display.txt_Height(3);
Display.txt_FGcolour(GREEN);
Display.putstr("COCKTAIL 1") ;
Display.txt_FGcolour(YELLOW);
Display.putstr("\n\n");
Display.putstr("COCKTAIL 2");
Display.txt_FGcolour(RED);
Display.putstr("\n\n");
Display.putstr("COCKTAIL 3");
Display.txt_FGcolour(WHITE);
i = -1 ;
while (i != FIRE)
{
oldi = i ;
#ifdef GOLDELOX_JOYSTICK
i = Display.joystick() ;
#else
if (digitalRead(DOWNPIN) == LOW)
i = DOWN ;
else if (digitalRead(FIREPIN) == LOW)
i = FIRE ;
else if (digitalRead(UPPIN) == LOW)
i = UP ;
else
i = RELEASED ;
#endif
if (i != oldi)
{
switch (i)
{
case RELEASED : Display.gfx_Rectangle( 140, 75, 0, 40, WHITE) ;
break ;
case UP : Display.gfx_Rectangle( 140, 0, 0, 25, WHITE) ;
break ;
case DOWN : Display.gfx_Rectangle( 140, 120, 0, 90, WHITE) ;
break ;
case FIRE : Display.putstr(" Fire ") ;
break ;
}
}
}
}
void setup()
{
#ifdef LOG_MESSAGES
HWLOGGING.begin(19200);
#endif
}
void loop()
{
Display.TimeLimit4D = 5000 ; // 2 second timeout on all commands
DisplaySerial.begin(9600) ;
Joystick_Tests() ;
delay(5000) ;
}
Je vous remercie d'avance et si vous ne m'avez pas compris n'hésiter pas à me redemander