Skip to content

Commit

Permalink
Merge pull request #18 from PiFou86/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
aparent701 committed Dec 9, 2020
2 parents 49aa9ec + 9259ce4 commit f6e566b
Show file tree
Hide file tree
Showing 3 changed files with 181 additions and 2 deletions.
18 changes: 16 additions & 2 deletions Module04_ProgrammationC/Module04_ProgrammationC.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,16 @@ Effectuez le montage en vous inspirant du schéma suivant :

### Étape 2 : Programmation

Le but du programme est de lire un message provenant de la console et qui l'enregistre en mémoire. Un maximum de 5 messages doivent être conservés et affichés.
Le but du programme est de lire un message provenant de la console et qui l'enregistre en mémoire. Un maximum de 5 messages doivent être conservés et affichés : **si l'utilisateur envoie un 6 ième message, il est simplement ignoré**.
(Version optionnelle - levez cette contrainte et retenez simplement les 5 derniers messages. Pour cela inspirez-vous du [buffer circulaire](https://fr.wikipedia.org/wiki/Buffer_circulaire))

Durant la boucle, si aucun texte est disponible à la console, la DEL verte est allumée. Lorsqu'un message est arrivé, la DEL rouge s'allume durant 1 seconde. Le message s'inscrit dans un tableau de 5 occurrences. Si le message reçu est "Lire", tous les messages enregistrés sont affichés à l'écran de la console. Les messages sont effacés. Un temps d'attente de 3 secondes suivra chaque séquence de lecture.
Durant la boucle, si aucun texte est disponible à la console, la DEL verte est allumée. Lorsqu'un message est arrivé, la DEL rouge s'allume durant 1 seconde.

Si le message reçu est "Lire", tous les messages enregistrés sont affichés à l'écran de la console. Les messages sont effacés.

Sinon, le message s'inscrit dans un tableau de 5 occurrences.

Un temps d'attente de 3 secondes suivra chaque séquence de lecture.

*Version TinkerCad*

Expand Down Expand Up @@ -211,6 +218,13 @@ void loop()
// fin de Affichage8DELs.cpp
```

<details>
<summary>Indice</summary>

Inspirez vous de l'exemple du cours 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>

## Exercice 5 - Programmation optionnelle de la classe Affichage8DELs

À la place de prendre 8 DELs comme dans l'exercice précédent, vous devez fournir 7 constructeurs ayant de 1 à 8 paramètres qui représentent un numéro de borne. Si le programmeur utilise le constructeur à deux paramètres, il ne pourra allumer que deux DELs.
Expand Down
141 changes: 141 additions & 0 deletions Module06_RegistreDecalage/Module06_RegistreDecalage_Exercices.md
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 ?
24 changes: 24 additions & 0 deletions ModuleXY_EEPROM/Module06_EEPROM_Exercices.md
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.

0 comments on commit f6e566b

Please sign in to comment.