Créer un Projet de Jeu de Basket pour Deux Joueurs avec Arduino
Dans cet article, nous allons vous guider à travers la création d'un projet de jeu de basket pour deux joueurs en utilisant Arduino. Ce projet utilise des composants électroniques que vous pouvez facilement vous procurer dans notre boutique. Chaque joueur a un tour pour essayer de marquer, et le score est affiché sur un écran LCD.
Composants Nécessaires
Voici la liste des composants dont vous aurez besoin pour ce projet :
- Arduino Uno Dip REV3
- Module Capteur Ultrason HC-SR04
- Afficheur LCD I2C 2*16
- Fils de Connexion Mâle-Mâle 20 CM
- Fils de Connexion Mâle-Femelle 20 CM
- LED 5 mm
- Bouton Tactile 12127.3mm
- Buzzer Passif
- Plaque d'Essai 170 Points
- Résistance 1/4W 220 ohm
- Résistance 1/4W 10K ohm
Vous pouvez acheter tous ces composants directement depuis notre boutique en ligne. https://bit.ly/4cxfkgk
Schéma de Connexion
- Capteur Ultrason HC-SR04 : Connectez la broche Trig à la broche 9 de l'Arduino et la broche Echo à la broche 10.
- LED Verte et Rouge : Connectez la LED verte à la broche 2 et la LED rouge à la broche 3 de l'Arduino.
- Buzzer : Connectez le buzzer à la broche 4.
- Boutons Poussoirs : Connectez les boutons pour les joueurs 1 et 2 aux broches 5 et 6 respectivement. Connectez le bouton de réinitialisation à la broche 7.
- Afficheur LCD I2C : Connectez l'écran LCD aux broches SDA et SCL de l'Arduino.
- Alimentation et Masse : Assurez-vous que tous les composants partagent une connexion commune à l'alimentation et à la masse.
Code Arduino
Voici le code Arduino pour ce projet :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Définir l'adresse de l'écran LCD I2C (souvent 0x27 ou 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int trigPin = 9; // Broche Trig du HC-SR04
const int echoPin = 10; // Broche Echo du HC-SR04
const int greenLedPin = 2; // Broche LED verte
const int redLedPin = 3; // Broche LED rouge
const int buzzerPin = 4; // Broche Buzzer
const int button1Pin = 5; // Broche bouton poussoir pour Player 1
const int button2Pin = 6; // Broche bouton poussoir pour Player 2
const int resetButtonPin = 7; // Broche bouton poussoir pour réinitialiser
const int distanceThreshold = 20; // Seuil de distance en cm
const int trialDuration = 5000; // Durée de l'essai en millisecondes
bool player1Active = false;
bool player2Active = false;
unsigned long trialStartTime;
int scorePlayer1 = 0;
int scorePlayer2 = 0;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
pinMode(resetButtonPin, INPUT_PULLUP);
Serial.begin(9600); // Initialiser la communication série pour le débogage
lcd.init(); // Initialiser l'écran LCD
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Player1: 0");
lcd.setCursor(0, 1);
lcd.print("Player2: 0");
}
void loop() {
if (digitalRead(resetButtonPin) == LOW) {
// Réinitialiser les scores
scorePlayer1 = 0;
scorePlayer2 = 0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Player1: 0");
lcd.setCursor(0, 1);
lcd.print("Player2: 0");
Serial.println("Scores reset");
delay(500); // Debounce delay
}
if (digitalRead(button1Pin) == LOW) {
// Player 1 commence l'essai
player1Active = true;
player2Active = false;
trialStartTime = millis();
Serial.println("Player 1 start");
delay(500); // Debounce delay
} else if (digitalRead(button2Pin) == LOW) {
// Player 2 commence l'essai
player2Active = true;
player1Active = false;
trialStartTime = millis();
Serial.println("Player 2 start");
delay(500); // Debounce delay
}
if (player1Active || player2Active) {
unsigned long currentTime = millis();
unsigned long elapsedTime = currentTime - trialStartTime;
if (elapsedTime < trialDuration) {
// Afficher le compte à rebours sur l'écran LCD
int remainingTime = (trialDuration - elapsedTime) / 1000;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time left: ");
lcd.print(remainingTime);
lcd.print(" s");
// Mesurer la distance avec le HC-SR04 pendant les 5 secondes d'essai
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Si une balle est détectée pendant les 5 secondes d'essai, effectuer les actions appropriées
if (distance < distanceThreshold) {
digitalWrite(greenLedPin, HIGH);
digitalWrite(redLedPin, LOW);
// Succès
tone(buzzerPin, 1000); // Son de succès
delay(500);
noTone(buzzerPin);
digitalWrite(greenLedPin, LOW);
if (player1Active) {
scorePlayer1++;
} else {
scorePlayer2++;
}
// Attendre un court délai avant de passer à la suite du programme
delay(500);
}
} else {
// Temps d'essai écoulé, afficher le résultat
player1Active = false;
player2Active = false;
// Mettre à jour l'écran LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Player1: ");
lcd.print(scorePlayer1);
lcd.setCursor(0, 1);
lcd.print("Player2: ");
lcd.print(scorePlayer2);
}
}
}
Explications du Code
- Initialisation : Nous commençons par inclure les bibliothèques nécessaires et définir les broches utilisées par les différents composants.
- Setup : Nous initialisons les broches et l'écran LCD. Nous affichons les scores initiaux.
- Loop : La boucle principale vérifie si un bouton est pressé pour commencer un tour. Si un tour est en cours, la distance est mesurée avec le capteur ultrason. Si une balle est détectée (distance inférieure au seuil), le score est incrémenté pour le joueur actif. Le compte à rebours est affiché sur l'écran LCD. Si le temps est écoulé, les scores sont mis à jour.
Ce projet est un excellent moyen d'apprendre à utiliser différents composants électroniques et à programmer des interactions simples avec Arduino. Vous pouvez personnaliser ce projet selon vos préférences en modifiant les paramètres comme la durée des essais ou les seuils de distance.
Pour acheter tous les composants nécessaires, visitez notre boutique en ligne.
Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un commentaire ci-dessous. Bon bricolage !