« I2L 2023 Groupe1 » : différence entre les versions
Aller à la navigation
Aller à la recherche
(→Carte) |
(→Code) |
||
Ligne 27 : | Ligne 27 : | ||
= Code = | = Code = | ||
== Première approche == | |||
=== Test des LES === | |||
<syntaxhighlight lang="c" line="1"> | |||
#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); | |||
} | |||
</syntaxhighlight> | |||
== Conception == | == Conception == |
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 LES
#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