« I2L 2023 Groupe1 » : différence entre les versions
Ligne 32 : | Ligne 32 : | ||
= Montage = | = Montage = | ||
== Test d'implémentation du buzzer == | == Test d'implémentation du buzzer == | ||
[[Fichier: | [[Fichier:2023_I2L_G1_Buzzer3.jpg|582x582px]] | ||
== Premier montage == | == Premier montage == |
Version du 18 octobre 2023 à 09:45
Proposition de système
Créer un jeu pour 4 joueurs avec 4 buzzers (boutons). Le buzzer émet 3 sons distincts, les joueurs doivent appuyer le plus rapidement possible sur le buzzer qui leur est attribué lorsque que le bon son est joué. Les sons émis par le haut-parleur sont configurables via une application lorsque l’ordinateur est connecté à la carte via le port USB. Une led RGB se trouve au milieu et affiche la couleur du vainqueur.
Une interface de contrôle via USB sera mise en place.
Contre-proposition
Le périphérique USB doit être de type spécifique (classe 0) et utiliser un point d'accès de volume, vous pouvez vous appuyer sur cet exemple LUFA de base : Média:LUFA_Minimal.zip.
Pour télécharger le son vers la carte, vous écrirez une application avec la bibliothèque libusb
.
Proposition définitive
Répartition du travail
Carte
Seconde version pour corriger le DAC R-2R et pour mieux contrôler le volume.
Montage
Test d'implémentation du buzzer
Premier montage
Câblage des 4 boutons
Code
Première approche
Test des LED
#include <avr/io.h>
#include <util/delay.h>
// Boutons sur le Port C
#define BUTTON_1_BIT 2
#define BUTTON_2_BIT 4
// Leds sur le Port D
#define LED_BLUE_BIT 0
#define LED_GREEN_BIT 1
#define LED_RED_BIT 2
#define BUTTON_BUZZER_BIT 6
int main(void)
{
DDRD &= ~(1 << BUTTON_BUZZER_BIT); // Entrée pour le buzzer
DDRD |= (1 << LED_BLUE_BIT) | (1 << LED_GREEN_BIT) | (1 << LED_RED_BIT); // Sortie pour les LEDS
DDRC &= ~(1 << BUTTON_1_BIT) & ~(1 << BUTTON_2_BIT); // Entrée pour les boutons
PORTC |= (1 << BUTTON_1_BIT) | (1 << BUTTON_2_BIT); // Activation des résistances de pull-up
PORTD |= (1 << BUTTON_BUZZER_BIT); // Activation des résistances de pull-up
while (1)
{
if (!(PINC & (1 << BUTTON_1_BIT)))
{
PORTD &= ~(1 << LED_BLUE_BIT);
}
else {
PORTD |= (1 << LED_BLUE_BIT);
}
if (!(PINC & (1 << BUTTON_2_BIT)))
{
PORTD &= ~(1 << LED_GREEN_BIT);
}
else {
PORTD |= (1 << LED_GREEN_BIT);
}
if (!(PIND & (1 << BUTTON_BUZZER_BIT)))
{
PORTD &= ~(1 << LED_RED_BIT);
}
else {
PORTD |= (1 << LED_RED_BIT);
}
}
}
void loopLed()
{
PORTD |= (1 << LED_BLUE_BIT);
PORTD &= ~(1 << LED_GREEN_BIT);
PORTD &= ~(1 << LED_RED_BIT);
_delay_ms(100);
PORTD &= ~(1 << LED_BLUE_BIT);
PORTD |= (1 << LED_GREEN_BIT);
PORTD &= ~(1 << LED_RED_BIT);
_delay_ms(100);
PORTD &= ~(1 << LED_BLUE_BIT);
PORTD &= ~(1 << LED_GREEN_BIT);
PORTD |= (1 << LED_RED_BIT);
_delay_ms(100);
}
Conception
Réalisation
Démonstrations
Rendus
Projet KiCAD : Fichier:I2L-2023-Carte-G1.zip
Programmes : Fichier:I2L-2022-Programmes-G1.zip