I2L 2023 Groupe1

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche

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

I2L-2023-Carte3D-G1.png
I2L-2023-CarteSchema-G1.pdf

Seconde version pour corriger le DAC R-2R et pour mieux contrôler le volume.

I2L-2023-Carte3D-G1-v2.png
I2L-2023-CarteSchema-G1-v2.pdf

Montage

Test d'implémentation du buzzer

Buzzer3.jpg

Premier montage

Montage buzzer carte.jpg


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