Bonsoir,
je souhaite réaliser un coupe gâteau automatique. Pour cela, je sélectionne le nombre de parts souhaitées sur un écran LCD de référence Adafruit_RGBLCDShield. Cet écran possède des boutons poussoirs permettant d'augmenter le nombre de parts ainsi que de confirmer ce nombre. Or, lorsque je téléverse mon programme, l'écran s'allume, on voit "Nombre Parts : 2", mais impossible d'augmenter ce nombre, et je ne vois pas le problème. De plus, le programme contrôle également un moteur, mettant en rotation la plateau. Je vous laisse y jeter un œil afin de repérer une quelconque faute :
#include <Wire.h>
#include <Adafruit_RGBLCDShield.h>
#include <utility/Adafruit_MCP23017.h>
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7
#define maSortie
int DirB = 8;
int BrakeB = 13;
int nbrPart = 1;
int I=0;
void setup() {
lcd.begin(16, 2);
int time = millis();
lcd.print("Nbre parts : ");
pinMode(DirB,OUTPUT);
pinMode(BrakeB,OUTPUT);
}
void loop() {
lcd.setCursor(0, 1);
uint8_t buttons = lcd.readButtons();
if (buttons) {
lcd.clear();
lcd.setCursor(0,0);
if (buttons & BUTTON_LEFT) {
nbrPart= nbrPart +1;
if (nbrPart > 10) {
nbrPart= 2;
}
delay(200);
lcd.print("Nbre parts = ");
lcd.print(nbrPart);
}
if (buttons & BUTTON_SELECT) {
lcd.print("Nbre parts validé");
}
}
if (nbrPart==2) {
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(2431);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB, LOW);
I=I+1;
}
}
if (nbrPart==3) {
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(2161);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB, LOW);
I=I+1;
}
}
if (nbrPart==4) {
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(2026);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB, LOW);
I=I+1;
}
}
if (nbrPart==5) {
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(1945);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB LOW);
I=I+1;
}
}
if (nbrPart==6){
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(1891);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB, LOW);
I=I+1;
}
}
if (nbrPart==7) {
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(1853);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB, LOW);
I=I+1;
}
}
if (nbrPart==8) {
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(1823);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB, LOW);
I=I+1;
}
}
if (nbrPart==9) {
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(1801);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB, LOW);
I=I+1;
}
}
if (nbrPart==10) {
while(I < nbrPart){
digitalWrite(DirB, HIGH);
digitalWrite(BrakeB, LOW);
delay(1783);
digitalWrite(DirB, LOW);
digitalWrite(BrakeB, LOW);
I=I+1;
}
}
I=0;
}