1. Faire clignoter une DEL (suite)
Reprenons le câblage de la semaine précédente. Rappels :
- Créer un compte : https://www.tinkercad.com/join
- Créer un câblage : https://www.tinkercad.com/dashboard?type=circuits&collection=designs
Le programme était le suivant :
void setup() { pinMode(3, OUTPUT); } void loop() { digitalWrite(3, HIGH); delay(1000); // Wait for 1000 millisecond(s) digitalWrite(3, LOW); delay(1000); // Wait for 1000 millisecond(s) }
Ce programme comporte deux parties :
- La fonction setup(), exécutée une seule fois pour définir la configuration initiale.
- La fonction loop(), exécutée en boucle.
Les différents éléments de ce programme sont expliqués dans le tableau ci-dessous :
Elément de programme | Description |
---|---|
void | Définit une fonction ne retournant aucune valeur |
pinMode(3, OUTPUT); | Le connecteur 3 est défini en sortie |
digitalWrite(3, HIGH); | Le connecteur 3 délivre une tension de 5 V |
digitalWrite(3, LOW); | Le connecteur 3 délivre une tension de 0 V |
delay(1000); | Le programme se met en pause pendant 1000 ms soit 1 s |
// | Il s'agit d'un commentaire destiné au programmeur |
Travail à effecuter :
Modifier le programme pour envoyer le signal de détresse SOS en code Morse. Ce signal est constitué de trois points, puis trois traits, et enfin trois points (· · · — — — · · ·). La DEL doit donc :
- Clignoter trois fois rapidement pour le caractère S.
- Puis attendre une seconde pour le prochain caractère.
- Clignoter trois fois lentement pour le caractère O.
- Puis attendre une seconde pour le prochain caractère.
- Clignoter à nouveau trois fois rapidement pour le caractère S.
- Puis rester éteinte deux secondes pour recommencer.
Faire appel à votre professeur si vous ne trouvez pas la solution.
2. Sortie pseudo-analogique
Une carte Arduino comporte 20 connecteurs pouvant se configurer en entrée ou en sortie logiques. Il sont repérés A0 à A5 et 0 à 13 sur la carte. Certains connecteurs disposent de fonctions complémentaires :
- Les six connecteurs A0 à A5 peuvent être configurés en entrée analogique.
- Les six connecteurs dont le numéro est précédé du signe "~" peuvent se configurer en sortie pseudo-analogique (signal MLI ou PWM).
- Les connecteurs 0 et 1 peuvent gérer les flux de données entrants et sortants d'une liaison série.
- Le connecteur 13 est associé à une résistance permettant de brancher une DEL sans y adjoindre de résistance.
Travail à effectuer :
Testez le programme ci-dessous. Constatez que la DEL s'allume et éteint progressivement.
float periode=2; void setup() { pinMode(3, OUTPUT); } void loop() { for (float t=0; t<periode; t=t+0.01) { analogWrite(3, 127.5+127.5*sin(t*2*PI/periode)); delay(10); } }
Les différents éléments de ce programme sont précisés ci-dessous :
Elément de programme | Description |
---|---|
float periode=2; | Le contenu de la variable "periode" est un nombre à virgule, auquel on affecte la valeur 2 |
for | Pour mettre en place une boucle |
analogWrite(); | Cette fonction prend deux paramètres. Le numéro du connecteur et un nombre compris entre 0 et 255. 0 pour 0 V, 255 pour 5 V, 127.5 pour 2.5 V etc. |
analogWrite(3, 127.5+127.5*sin(t*2*PI/periode)); | Le connecteur 3 délivre une tension dont la moyenne est comprise entre 0 et 5 V selon le deuxième paramètre. |
En mathématique, la fonction sin(x) :
- Est positive pour 0 < x < π
- Est négative pour π < x < 2.π
- Retourne une valeur comprise entre -1 et 1.
En conséquence :
- 127,5×sin(x) retourne une valeur comprise entre -127,5 et 127,5.
- 127,5+127,5×sin(x) retourne une valeur comprise entre 0 et 255.
3. Pour aller plus loin en musique
Le bipeur (ou buzzer en anglais) piézoélectrique produit un son quand on lui applique une tension alternative. La fonction ton() prend deux paramètres :
- Le numéro du connecteur.
- La fréquence du signal alternatif en Hz.
Créez le câblage ci-dessous :
Puis testez le programme suivant :
void setup() { } void loop() { tone(3, 300); delay(200); noTone(3); delay(500); }
Enfin adaptez ce programme pour envoyer un SOS.