I2L 2022 Groupe1
Proposition de système
Notre proposition :
- Créer un pad numérique avec 12 touches, les chiffres (de 0 à 9), le point, la touche verrou numérique et trois led (rouge, bleu, vert).
Les propositions acceptées :
- La touche "verrou numérique" permet d'avoir une double signification des touches (numérique/flèches de direction), avec une LED de contrôle de l'activation du verrou.
- Un mini-simon est disponible en mode autonome, trois leds (rouge, bleu et vert) associées aux touches 1, 2 et 3.
Contre-proposition
Pas de souci sur le principe. Mais étant donné que le code pour votre carte est le plus simple à réaliser vous devez ajouter une fonctionnalité supplémentaire.
Je vous propose les difficultés suivantes :
- une touche "verrou numérique" qui permet d'avoir une double signification des touches (numérique/flèches de direction), avec une LED de contrôle de l'activation du verrou
- un jeu en mode autonome (quand le périphérique est alimenté sans être connecté à un bus USB), par exemple un mini-simon avec les 3 LED associées aux touches 1,2 et 3.
Programmes
Programme version 1 :
Programme version finale :
Prog USB
- LUFA
Schéma, présentation du système embarqué
Schéma du système embarqué sur Kicad :
Carte soudée :
Vidéo du simon:
Problèmes rencontrés
Nous avons tout d'abord rencontré un problème sur la difficulté du projet, en effet par rapport à d'autre groupe, l'idée d'un clavier numérique de 12 touches étaient trop "simple".
Nous avons donc accepté la contre proposition émise.
Ensuite le problème que nous avons rencontré a été de distinguer la mode clavier du mode simon. Dans la première version du code le simon ce lance lorsque on le connecte au pc et ensuite il passe en mode clavier.
Ce problème est résolu dans la version finale.
Compilation
Utilitaires
https://winavr.sourceforge.net/
https://github.com/mariusgreuel/avrdude/releases
- gcc-avr
- avr-libc
- dfu-programmer
- DFU/USB
Compilation par ligne de commande:
compilation :
avr-gcc -mmcu=atmega328p -DF_CPU=8000000UL -c -Wall -I. -Os timer.c -o timer.o (8000000 au lieu de 16000000)
- fichier .c → fichier .o
édition des liens :
avr-gcc -mmcu=atmega328p -g -lm -Wl,--gc-sections -o timer.elf timer.o (.elf exécutable)
- fichier .c → fichier .elf
téléversement :
avr-objcopy -j .text -j .data -O ihex timer.elf timer.hex
- fichier .elf → fichier .hex
commande dfu-programmer :
dfu-programmer atmega16u2 erase dfu-programmer atmega16u2 flash timer.hex dfu-programmer atmega16u2 reset
Tableau des touches
cables | ||||||
---|---|---|---|---|---|---|
colonne 1 | colonne 2 | colonne 3 | ||||
port | touche | port | touche | port | touche | |
PB7 | 7 | PB5 | 8 / flèche vers le haut | PB3 | 9 | |
PB6 | 4 / flèche vers la gauche | PB4 | 5 | PB2 | 6 / flèche vers la droite | |
PD4 | 1 | PD6 | 2 / flèche vers le bas | PB1 | 3 | |
PD3 | verrou num | PD5 | 0 | PB0 | . / ; |
Tableau des leds
port | led | touches | bit | ||
---|---|---|---|---|---|
led 1 | PD0 | rouge | chiffres ou flèches | 0x01 | |
led 2 | PD1 | bleu | verrou num | ||
led 3 | PD2 | vert |
Fichiers
Projet KiCAD : Fichier:I2L-2022-CARUYER-MONBORREN.zip.
Programme C : Fichier:I2L-2022-G1-programme.zip.
Programme V1: Fichier:Projet SystemeEmbarque-LUFA V1.zip .
Programme version finale: