Le bonneteau est un jeu où l’on cache une balle sous des gobelets que l’on mélange très rapidement et il ne faut pas perdre la balle de vue pour la trouver à la fin du mélange.
Ici la balle est un aimant et sous les gobelets sont disposés des capteurs à effet hall (qui captent les variations de champs magnétiques)
On désigne le gobelet où l’on pense que la balle se trouve, si c’est le bon une lumière verte s’allume sinon une lumière rouge.
int ldr1 = A0; int ldr2 = A1; int ldr3 = A2; int ledR = 11; int ledV = 10; int hall1 = 2; int hall2 = 3; int hall3 = 4; int ldr1Value; int ldr2Value; int ldr3Value; void setup() { pinMode(ledR, OUTPUT); pinMode(ledV, OUTPUT); pinMode(ldr1, INPUT); pinMode(ldr2, INPUT); pinMode(ldr3, INPUT); pinMode(hall1, INPUT); pinMode(hall2, INPUT); pinMode(hall3, INPUT); Serial.begin(9600); } void loop() { int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0; ldr1Value = analogRead(ldr1); ldr2Value = analogRead(ldr2); ldr3Value = analogRead(ldr3); buttonState1 = digitalRead(hall1); buttonState2 = digitalRead(hall2); buttonState3 = digitalRead(hall3); //ldr1ValueMap = map(ldr1Value,0,1024,0,255); //ldr2ValueMap = map(ldr2Value, 0,1024,0,255); //ldr3ValueMap = map(ldr3Value, 0,1024,0,255); Serial.print("ldr1Value ="); Serial.print(ldr1Value); Serial.print("\t"); Serial.print("ldr2Value ="); Serial.println(ldr2Value); if ((ldr1Value < 300) && (buttonState1 == HIGH)){ digitalWrite(ledR, LOW); digitalWrite(ledV, HIGH); delay(3000); digitalWrite(ledV, LOW); } if ((ldr1Value < 300) && (buttonState1 == LOW)){ digitalWrite(ledR, HIGH); delay(3000); digitalWrite(ledR, LOW); digitalWrite(ledV, LOW); } if ((ldr2Value < 300) && (buttonState2 == HIGH)){ digitalWrite(ledR, LOW); digitalWrite(ledV, HIGH); delay(3000); digitalWrite(ledV, LOW); } if ((ldr2Value < 300) && (buttonState2 == LOW)){ digitalWrite(ledR, HIGH); delay(3000); digitalWrite(ledR, LOW); digitalWrite(ledV, LOW); } if ((ldr3Value < 300) && (buttonState3 == HIGH)){ digitalWrite(ledR, LOW); digitalWrite(ledV, HIGH); delay(3000); digitalWrite(ledV, LOW); } if ((ldr3Value < 300) && (buttonState3 == LOW)){ digitalWrite(ledR, HIGH); delay(3000); digitalWrite(ledR, LOW); digitalWrite(ledV, LOW); } delay(0); }