Bonjour,
Je recrée le jeu Mastermind en ligne sur Tinkercad (je précise car il n'y a pas toutes les bibliothèques disponibles par ex) et j'ai déjà bien progressé mais j'ai un problème pour renvoyer dans le moniteur la combinaison de couleur entrée sur les neopixel strips. Je vous mets en pj mon montage et mon code complet en dessous. J'ai quand même un retour dans le moniteur assez proche de ce que je voudrais avoir : j'obtiens la combinaison entrée mais elle s'affiche en continue (ex: rjvbrjvbrjvb) au lieu d'une seule fois.
Je mets aussi l'URL de mon projet tinkercad si ça peut vous aider à mieux comprendre.
Merci!
code
#include <Adafruit_NeoPixel.h>
int buttonPin1 = 10;
int buttonPin2 = 11;
int buttonPin3 = 12;
int buttonPin4 = 13;
int buttonPin[] = {buttonPin1,buttonPin2,buttonPin3,buttonPin4};
int counter1=0;
int counter2=0;
int counter3=0;
int counter4=0;
int counter[] = {counter1,counter2,counter3,counter4};
int buttonState1=0;
int buttonState2=0;
int buttonState3=0;
int buttonState4=0;
int buttonState[] = {buttonState1,buttonState2,buttonState3,buttonState4};
int lastbuttonState1=0;
int lastbuttonState2=0;
int lastbuttonState3=0;
int lastbuttonState4=0;
int lastbuttonState[] = {lastbuttonState1,lastbuttonState2,lastbuttonState3,lastbuttonState4};
int buttonbloqPin = 9;
int buttonbloqState = 0;
int lastbuttonbloqState = 0;
int counterbloq = 0;
char c1;
char c2;
char c3;
char c4;
char code_joueur[]= {c1,c2,c3,c4};
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(10, 2);
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(10, 3);
Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(10, 4);
Adafruit_NeoPixel strip4 = Adafruit_NeoPixel(10, 5);
Adafruit_NeoPixel strip[] = {strip1, strip2, strip3, strip4};
void setup() {
Serial.begin(9600);
for (int i=0; i <= 3; i++){
pinMode(buttonPin[i], INPUT);
}
for (int j=0; j <=3; j++) {
strip[j].begin();
strip[j].show(); // Initialize all pixels to 'off'
}
}
void loop() {
buttonbloqState = digitalRead(buttonbloqPin);
if (buttonbloqState != lastbuttonbloqState) {
if (buttonbloqState == HIGH) {
counterbloq++;
}
else{
counterbloq =counterbloq;
}
lastbuttonbloqState = buttonbloqState;
}
for (int i=0; i <= 9; i++){
if (counterbloq == i) {
for (int j=0; j <= 3; j++){
uint32_t rose = strip[j].Color(255, 0, 255);
uint32_t bleu = strip[j].Color(1, 102, 102);
uint32_t vert = strip[j].Color(0, 255, 0);
uint32_t jaune = strip[j].Color(255, 255, 0);
buttonState[j] = digitalRead(buttonPin[j]);
if (buttonState[j] != lastbuttonState[j]) {
if (buttonState[j] == HIGH) {
counter[j]++;
}
else{
counter[j]=counter[j];
}
lastbuttonState[j] = buttonState[j];
}
if(counter[j]==0){
strip[j].setPixelColor(i, 0, 0, 0); //noir
strip[j].show();
}
else if (counter[j]%4==1){
strip[j].setPixelColor(i, rose); //rose
strip[j].show();
}
else if (counter[j]%4==2){
strip[j].setPixelColor(i, bleu); //bleu
strip[j].show();
}
else if (counter[j]%4==3 ){
strip[j].setPixelColor(i, vert); //vert
strip[j].show();
}
else if (counter[j]%4==0){
strip[j].setPixelColor(i, jaune); //jaune
strip[j].show();
}
if (strip[j].getPixelColor(i) == rose) {
code_joueur[j]='r';
}
else if (strip[j].getPixelColor(i) == bleu) {
code_joueur[j]='b';
}
else if (strip[j].getPixelColor(i) == vert) {
code_joueur[j]='v';
}
else if (strip[j].getPixelColor(i) == jaune) {
code_joueur[j]='j';
}
}
}
}
Serial.print(code_joueur);
}
