-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #18 from PiFou86/dev
Dev
- Loading branch information
Showing
3 changed files
with
181 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
141 changes: 141 additions & 0 deletions
141
Module06_RegistreDecalage/Module06_RegistreDecalage_Exercices.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
# Module 06 - Registre à décalage | ||
|
||
Dans les exercices suivants, chaque led représente un bit d'un entier codé sur 8 bits. | ||
|
||
## Exercice 1 - Préparation du premier montage | ||
|
||
Reprenez le diagramme du cours et créez le sur Tinkercad. | ||
|
||
### Matériel | ||
|
||
- Une platine d'essais | ||
- 8 DELs | ||
- 8 résistances 500 Ohms | ||
- 1 arduino | ||
- 1 registre à décalage 74HC595N | ||
|
||
### À coder | ||
|
||
Effectuez les actions suivantes : | ||
|
||
- Affichez la valeur 3 avec vos DELs et testez le | ||
- Affichez la valeur 4 avec vos DELs et testez le | ||
- Affichez la valeur 42 avec vos DELs et testez le | ||
- Généralisez une fonction qui prend les paramètres suivants: une valeur et les 3 bornes de connexion. La fonction affiche la valeur | ||
avec vos DELs | ||
|
||
<details> | ||
<summary>Indice 1</summary> | ||
|
||
Inspirez vous de l'exemple du cours du module 04 sur le codage d'une couleur RVB dans un entier. Ici, vous n'avez pas à traiter les informations par 8 bits, mais bit par bit. Le décalage et le masque seront donc relatifs à 1 bit au lieu des 8 du cours. | ||
|
||
</details> | ||
|
||
<details> | ||
<summary>Indice 2</summary> | ||
|
||
Inspirez vous du code du cours : | ||
|
||
```cpp | ||
// M1 : la valeur reste intacte. Le masque se déplace de gauche à droite. | ||
int valeur = 42; | ||
for (int i = 7; i >= 0; --i) { | ||
Serial.print((valeur >> i) & 0x01); | ||
} | ||
Serial.println(); | ||
``` | ||
|
||
```cpp | ||
// M2: la valeur est détruite. La valeur se déplace de droite à gauche. | ||
for (int i = 0; i < 8; ++i) { | ||
Serial.print((valeur & 0x80) != 0); | ||
valeur <<= 1; | ||
} | ||
Serial.println(); | ||
``` | ||
|
||
</details> | ||
|
||
## Exercice 2 - Préparation du premier montage | ||
|
||
Reprenez le diagramme du cours et créez le sur Tinkercad. | ||
|
||
### Matériel | ||
|
||
- Une platine d'essais | ||
- 8 DELs | ||
- 8 résistances 500 Ohms | ||
- 1 arduino | ||
- 1 registre à décalage 74HC595N | ||
|
||
### À coder | ||
|
||
Effectuez les actions suivantes : | ||
|
||
- Codez la classe "RegistreDecalage" qui permet d'envoyer un byte au registre. | ||
- Codez un sketch qui permet d'afficher un compteur de 0 à 255 et qui repart à 0 à la fin : chaque led correspond à l'affichage d'un bit | ||
|
||
## Exercice 3 - Chenillard | ||
|
||
Reprenez votre montage précédent et votre classe "RegistreDecalage". | ||
|
||
### Matériel | ||
|
||
- Une platine d'essais | ||
- 8 DELs | ||
- 8 résistances 500 Ohms | ||
- 1 arduino | ||
- 1 registre à décalage 74HC595N | ||
|
||
### À coder | ||
|
||
Faites une animation qui permet de simuler un point qui se déplace de la droite vers la gauche et inversement quand le point est arrivé à une extrémité. | ||
|
||
## Exercice 4 - K2000 | ||
|
||
Reprenez votre montage précédent et votre classe "RegistreDecalage". | ||
|
||
### Matériel | ||
|
||
- Une platine d'essais | ||
- 8 DELs | ||
- 8 résistances 500 Ohms | ||
- 1 arduino | ||
- 1 registre à décalage 74HC595N | ||
|
||
### À coder | ||
|
||
Faites une animation qui permet de simuler trois points qui se déplacent de la droite vers la gauche et inversement quand le dernier point est arrivé à une extrémité. | ||
|
||
<details> | ||
<summary>Indice</summary> | ||
|
||
Vous manipulez un byte pour l'affichage. Pourquoi ne pas manipuler un int (16 bits) et n'afficher que les 8 du centre ? | ||
|
||
GGGG UUUU UUUU DDDD : | ||
|
||
- GGGG : dépassement à gauche | ||
- DDDD : dépassement à droite | ||
- UUUU UUUU : bits utiles pour l'affichage | ||
|
||
</details> | ||
|
||
## Exercice 5 - Horloge binaire (Optionnel) | ||
|
||
Reprenez votre montage précédent et votre classe "RegistreDecalage". | ||
|
||
### Matériel | ||
|
||
- Une platine d'essais | ||
- 8 DELs | ||
- 8 résistances 500 Ohms | ||
- 1 arduino | ||
- 1 registre à décalage 74HC595N | ||
|
||
### À coder | ||
|
||
La lecture de l'heure et des minutes s'effectuent par la console avec le format suivant "hh:mm" où hh est le nombre d'heure et mm le nombre de minutes. | ||
|
||
Une fois définie, l'heure s'affiche sur les 8 DELs : on alterne l'affichage des heures et des minutes. Pour les différencier, on éteint les DELs une seconde, puis on affiche les heures une seconde, puis les minutes une seconde. | ||
|
||
Quel délai devez-vous mettre pour avoir une vrai seconde ? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Module 06 - EEPROM | ||
|
||
## Exercice 1 - Enregistrement du statut d'une DEL | ||
|
||
Vous devez créer un montage et un programme qui permet de faire varier l'intensité d'un éclairage à partir d'un bouton poussoir. Si un coupure de courant survient, le montage doit retrouver ses anciennes valeurs. | ||
|
||
- Effectuez schéma et ensuite un montage qui comprend un bouton et une DEL. La puissance de la DEL doit pouvoir varier. À chaque pression du bouton l'intensité de la DEL augment de 20%. Une fois arrivée à 100%, une pression supplémentaire fait passer l'intensité à 0%. | ||
- Validez que votre montage et codez votre programme | ||
- Testez votre montage et votre programme | ||
- Modifiez votre programme afin qu'à chaque pression du bouton, vous sauvegardez l'intensité de la DEL dans l'EEPROM. Au démarrage de votre programme, l'intensité doit être lue de sorte que si une coupure de courant survient, au redémarrage de votre MCU, la DEL doit récupérer son intensité. | ||
|
||
## Exercice 2 - Nombre de pressions | ||
|
||
Vous devez créer une montage et un programme qui compte le nombre de pression effectuer sur 3 boutons. Chaque bouton correspond à l'appréciation des visiteurs d'une exposition : "Moment agréable mais sans plus", "J'ai passé un excellent moments" et "J'ai passé un excellent moment et je la recommande !". À l'appui d'une des boutons, une DEL clignote 2 fois afin d'indiquer à l'utilisateur que son choix a été comptabilisé. (Nous ne sommes pas loin d'une version simplifiée d'une machine à voter !). Si l'utilisateur appuie sur un des boutons plus de 3 secondes, le nombre de pressions de chaque bouton est affiché sur la console série. L'exposition devrait être visible par au plus 150 000 visiteurs au total. Une coupure de courant ne doit pas effacer les statistiques. | ||
|
||
### Exercice 2.1 - Version non écologique | ||
|
||
- Effectuez schéma et ensuite un montage qui comprend trois boutons et une DEL. | ||
- Validez que votre montage et codez votre programme | ||
- Testez votre montage et votre programme | ||
|
||
### Exercice 2.2 - Version non écologique (Optionnel) | ||
|
||
Votre conception de programme précédent ne permet pas de réinitialiser les compteurs. Imaginez et codez une façon de résoudre ce problème et de permettre de réutiliser votre matériel pour une autre exposition. |