Cours:ChenillardShield

De troyesGEII
Révision datée du 12 septembre 2017 à 09:18 par Bjacquot (discussion | contributions) ({{Bleu|Composants et position}})
Aller à : navigation, rechercher

Retour à la liste des Tps

Éléments de correction


Vous allez fabriquer une carte d'extension arduino (appelée communément "shield") que vous programmerez par la suite pour réaliser un chenillard.

Fabrication de la carte

Cahier des charges

Cette carte aura pour contraintes de :

  • permettre la programmation d'un chenillard sur 6 leds
  • permettre de changer le sens de défilement
  • proposer un moyen d’arrêter/démarrer le défilement
  • permettre de changer la vitesse


Composants et position

Nous trouverons sur la carte les composants suivants, avec le numéro de patte (pin) arduino associée permettrant d'observer/modifier l'état du capteur/actionneur

Composants position arduino Fonction
6 leds pattes 8 à 13 affichage du chenillard
1 potentiomètre A1 modification de la vitesse
1 bouton poussoir A2 start/stop
1 interrupteur A3 changement du sens

Programmation

Gestion des leds

Notion de port

ArduinoPinout.png

En observant attentivement la figure ci-contre, on constate que les pattes utilisées pour commander les leds n'ont pas été choisies au hasard.

En effet, nous utilisons les pattes 8 à 13, qui correspondent pour le µcontrôleur au PORTB (PB0, PB1, PB2, ...).

Info.jpg Ainsi, il devient possible de modifier l'état de toutes ces sorties/leds, en une seule instruction :

void setup()
{
   // déclarer toutes les pattes en sortie :

}

void loop()
{
   //mettre toutes les sorties à '1'
   PORTB = 0b00111111;  
   delay(200);
   //mettre toutes les sorties à '0'
   PORTB = 0b00000000;  // ou PORTB = 0x00; ou encore PORTB = 0;
   delay(200);
}

Utilisation

Lede.png Lede.png Lede.png Lede.png Leda.png Leda.png
Leda.png Leda.png Leda.png Leda.png Lede.png Leda.png

Question.jpg En vous inspirant du programme précédent, faire un programme affichant successivement ces 2 motifs pendant 0,5s.

Chenillard

Question.jpg Écrire le programme du chenillard

Il s'agit d'allumer une seule led et de faire en sorte qu'elle se "déplace" de droite à gauche :

Lede.png Lede.png Lede.png Lede.png Lede.png Leda.png
Lede.png Lede.png Lede.png Lede.png Leda.png Lede.png
...
Leda.png Lede.png Lede.png Lede.png Lede.png Lede.png

Remarque : Rappelez-vous qu'il y a déjà une "boucle" dans votre programme .... la fonction loop !

Bluebg.png
Aidesmall.png
À propos de cette image

Une boucle bien sûr !


Pour réaliser un chenillard simple, nous devons envoyer successivement les valeurs suivantes sur le port :

Binaire Décimal
val1 = 0 0 0 0 0 0 0 1 1
val2 = 0 0 0 0 0 0 1 0 2
val3 = 0 0 0 0 0 1 0 0 4
val4 = 0 0 0 0 1 0 0 0 8
val5 = 0 0 0 1 0 0 0 0 16
val6 = 0 0 1 0 0 0 0 0 32

Remarque : Une solution élégante consiste à utiliser les opérateurs de décalage

Changer la vitesse

Question.jpg Modifier votre programme pour que la vitesse du chenillard dépende du potentiomètre

Remarque : il s'agit bien évidemment de faire une lecture analogique.


Changer le sens de "rotation"

Question.jpg Modifier votre programme pour que le sens de rotation dépende de la position de l'interrupteur

Mise en route/arrêt

On souhaite pouvoir arrêter/démarrer le chenillard à chaque appui sur le bouton poussoir.

Question.jpg Faire les modifications nécessaires pour répondre à ce nouveau cahier des charges.

Allons plus loin

Pour les 2 programmes suivants, en cas de besoin, vous pouvez chercher des informations sur cette page.

Chenillard double

Pour un chenillard double, 2 leds se déplacent en sens opposé.

Question.jpg Écrire le programme correspondant.


Chenillard à entassement

un chenillard à entassement est un chenillard simple avec une led qui se déplace, mais une fois arrivée à l'extrémité la led reste allumée et on en rajoute une au départ, qui se déplace et s'empile sur la précédente ....

Question.jpg Écrire le programme correspondant.


Plusieurs mode

Question.jpg Faire en sorte que chaque appui sur le bouton poussoir change le type de chenillard :

  • arrêté
  • simple
  • double
  • entassement