« I2L 2023 Groupe1 » : différence entre les versions
Aller à la navigation
Aller à la recherche
(→Code) |
|||
Ligne 29 : | Ligne 29 : | ||
== Première approche == | == Première approche == | ||
=== Test des | === Test des LED === | ||
<syntaxhighlight lang="c" line="1"> | <syntaxhighlight lang="c" line="1"> | ||
#include <avr/io.h> | #include <avr/io.h> |
Version du 28 septembre 2023 à 14:27
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
Proposition définitive
Répartition du travail
Carte
Seconde version pour corriger le DAC R-2R et pour mieux contrôler le volume.
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