Cours:Shieldinfo : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Boutons)
 
(43 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
={{Bleu|Description}}=
+
[[Fichier:Shiledinfo3d.jpg|vignette|upright=4|droite]]
  
=Boutons=
+
[[Cours:Arduinoshieldprof | Lien enseignants]]
 +
 
 +
[[Cours:TPs_1103|{{Rouge|<big>'''Tps GEII S1 : M1103'''</big>}}]]
 +
 
 +
[[Cours:TPs_2103|{{Rouge|<big>'''Tps GEII S2 : M2103'''</big>}}]]
 +
 
 +
 
 +
={{Rouge|Composition}}=
 +
 
 +
=={{Bleu|Boutons}}==
 +
===description===
 +
 
 +
Le shield comporte 4 boutons, dont 2 possèdent une interruption spécifique. Chaque bouton est relié à une porte "non". Une fonction "trigger" sur les entrées permet de limiter les changements d'états impromptus (rebonds) lors du changement d'état des boutons.
 +
 
 +
Le tableau suivant donne les caractéristiques utiles :
 +
 
 +
{{Cours:ShieldinfoTableauBps}}
 +
 
 +
===Principe d'utilisation===
 +
 
 +
<source lang=c>
 +
const char bpPin[4]={2,3,A0,A1};              // Position physique des boutons
 +
char bpEtat[4];
 +
char bpAncien[4];
 +
 
 +
void setup()
 +
{
 +
    char i;
 +
    for (i=0;i<4;i++) pinMode(bpPin[i],INPUT); // Déclaration des 4 entrées
 +
}
 +
 
 +
void loop()
 +
{
 +
    char i;
 +
    for (i=0;i<4;i++)
 +
    {
 +
        bpAncien[i]=bpEtat[i];                // Conservation des états précédents
 +
        bpEtat[i]=digitalRead(bpPin[i]);      // Lecture des nouveaux états
 +
    }
 +
    if ((bpEtat[0]==0)&&(bpAncien[0]==1))      // En cas d'appui sur bp0
 +
    {
 +
          ......
 +
    }
 +
    .....
 +
}
 +
 
 +
</source>
 +
 
 +
=={{Bleu|Leds}}==
 +
 
 +
===Description===
 +
 
 +
6 leds connectées en "cathodes communes" sont présentes sur la carte. Une led s'allume donc lorsqu'un niveau logique '1' est présent sur la sortie associée.
 +
 
 +
Attention, le commutateur permet de choisir entre les Leds et les afficheurs 7 segments.
 +
 
 +
Leur position et couleur sont données dans le tableau suivant :
 +
 
 +
{{Cours:ShieldinfoTableauLeds}}
 +
 
 +
===Principe d'utilisation===
 +
 
 +
<source lang=c>
 +
 
 +
void setup()
 +
{
 +
    char i;
 +
    for (i=6;i<=13;i++) pinMode(i,OUTPUT);    // Déclaration des 6 sorties
 +
}
 +
 
 +
void loop()
 +
{
 +
    char i;
 +
    for (i=6;i<=13;i++) digitalWrite(i,HIGH); // Les Leds s'allument
 +
    delay(500);                              // Attente pendant 500ms
 +
    for (i=6;i<=13;i++) digitalWrite(i,LOW); // Les Leds s'éteignent
 +
    delay(500);                              // Attente pendant 500ms
 +
}
 +
 
 +
</source>
 +
 
 +
=={{Bleu|Afficheurs 7 segments}}==
 +
 
 +
===Description===
 +
 
 +
[[Fichier:7seg.png|droite]]
 +
 
 +
Les 2 afficheurs ne peuvent pas être utilisés simultanément. L'état de la sortie mux (arduino port 4 ou PD4) permet de sélectionner l'un ou l'autre. En allumant successivement l'un puis l'autre rapidement, on a l'illusion qu'ils sont tous 2 allumés.
 +
Les segments des afficheurs sont câblés de façon analogue comme décrit ci dessous :
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Bouton !! Position !! Arduino Pin !! Interruption !! Résistance de tirage
+
! Segment
|-
+
|| pt ||  g ||  f ||  e || d || c || b || a
| bp1 || Bas Gauche || 2 || 0 || Pull Up
 
 
|-
 
|-
| bp2 || Haut Gauche || 3 || 1 || Pull Up
 
 
|-
 
|-
| bp3 || Bas Droite || A0 ||  || Pull Down
+
! Arduino Pin
 +
|| 11  || 9 || 10 ||  8 ||  7  ||  6 || 12 || 13
 
|-
 
|-
| bp4 || Haut Droite || A1 || || Pull Down
+
! Port
 +
|| PB3 || PB1 || PB2 || PB0 || PD7 || PD6 || PB4 || PB5
 
|}
 
|}
 +
 +
===Principe d'utilisation===
  
 
<source lang=c>
 
<source lang=c>
const char bpPin[4]={2,3,A0,A1};  // Position physique des boutons
+
 
char bpEtat[4];
+
const char pinMux = 4;
 +
const char pinAff[8]={13,12,6,7,8,10,9,11};
  
 
void setup()
 
void setup()
 
{
 
{
 
     char i;
 
     char i;
     for (i=0;i<4;i++) pinMode(bpPin[i],INPUT);
+
 
 +
     for (i=0;i<8;i++) pinMode(pinAff[i],OUTPUT);   // Déclaration des 8 sorties des afficheurs
 +
    pinMode(pinMux,OUTPUT);                        // + sortie de multiplexage (choix de l'afficheur)
 
}
 
}
  
 
void loop()
 
void loop()
 
{
 
{
     char i;
+
     char i,c;
     for (i=0;i<4;i++) bpEtat[i]=digitalRead(bpPin[i]);
+
 
 +
     for (i=0;i<8;i++) digitalWrite(pinAff[i],HIGH); // Les segments s'allument
 +
    for (c=0;c<20;c++)
 +
    {
 +
        digitalWrite(pinMux,1);                    // sur l'afficheur 1
 +
        delay(10);
 +
        digitalWrite(pinMux,0);                    // puis sur l'afficheur 2
 +
        delay(10);
 +
    }
 +
 
 +
 
 +
    for (i=0;i<8;i++) digitalWrite(pinAff[i],LOW);  // Les segments s'éteignent
 +
    for (c=0;c<20;c++)
 +
    {
 +
        digitalWrite(pinMux,1);                    // sur l'afficheur 1
 +
        delay(10);
 +
        digitalWrite(pinMux,0);                    // puis sur l'afficheur 2
 +
        delay(10);
 +
    }
 +
 
 +
}
 +
 
 +
</source>
 +
 
 +
=={{Bleu|MLI (ou PWM)}}==
 +
===Description===
 +
 
 +
Une sortie MLI non filtrée ou après un filtre passe bas de fréquence de coupure 50Hz est disponible sur la carte. Cette sortie est reliée sur l'arduino Pin 5 ou PD5.
 +
 
 +
===Principe d'utilisation===
 +
 
 +
<source lang=c>
 +
 
 +
const unsigned char mliPin=5;
 +
 
 +
void setup()
 +
{
 +
  pinMode(mliPin,OUTPUT);
 +
}
 +
 
 +
void loop()
 +
{
 +
  analogWrite(mliPin,valeur);    // valeur de mli entre 0 et 255
 +
}
 +
 
 +
</source>
 +
 
 +
=={{Bleu|Entrées analogiques}}==
 +
===Description===
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Capteur !! Arduino Pin !! Port
 +
|-
 +
| photo coupleur par réflexion || A2 || PC2
 +
|-
 +
| LDR, intensité lumineuse || A3 || PC3
 +
|-
 +
| CTN, thermistance || A4 || PC4
 +
|-
 +
| mesure de composant (*) || A5 || PC5
 +
|}
 +
 
 +
(*) Mesure de composant : en plaçant un composant sur les barrettes adéquates, et en utilisant l'entrée analogique A5 ou PC5, il est possible d'identifier le composant inséré, la mesure effectuée étant un pont diviseur entre ce composant la sortie 5 et une résistance de 10 kΩ.
 +
 
 +
===<span id="analogExp">Principe d'utilisation</span>===
 +
<source lang=c>
 +
void setup()
 +
{
 +
  Serial.begin(9600);
 
}
 
}
  
 +
void loop()
 +
{
 +
  Serial.println(analogRead(A3),DEC);
 +
  delay(500); 
 +
}
 
</source>
 
</source>
  
=Capteurs=
+
={{Rouge|Documents pour la fabrication}}=
 +
 
 +
La première étape consiste à déposer de la pâte à braser sur chacune des pastilles des composants.
 +
 
 +
L'image ci dessous permet de repérer facilement la position des pastilles sur la carte.
 +
 
 +
[[Fichier:ComposantsTopShieldInfo.png]]
 +
 
 +
 
 +
[[Fichier:Shiledinfo.jpg|cadre|droite]]
  
 
[[Media:ArduinoBoard.brd]]
 
[[Media:ArduinoBoard.brd]]

Version actuelle datée du 28 mars 2015 à 10:32

Shiledinfo3d.jpg

Lien enseignants

Tps GEII S1 : M1103

Tps GEII S2 : M2103


Composition

Boutons

description

Le shield comporte 4 boutons, dont 2 possèdent une interruption spécifique. Chaque bouton est relié à une porte "non". Une fonction "trigger" sur les entrées permet de limiter les changements d'états impromptus (rebonds) lors du changement d'état des boutons.

Le tableau suivant donne les caractéristiques utiles :

Bouton Position Arduino Pin Port Interruption Niveau logique si bouton appuyé
A Bas Gauche 2 PD2 int0 1
D Haut Gauche 3 PD3 int1 1
B Bas Droite A0 PC0 0
C Haut Droite A1 PC1 0

Principe d'utilisation

const char bpPin[4]={2,3,A0,A1};               // Position physique des boutons
char bpEtat[4];
char bpAncien[4];

void setup()
{
    char i;
    for (i=0;i<4;i++) pinMode(bpPin[i],INPUT); // Déclaration des 4 entrées
}

void loop()
{
    char i;
    for (i=0;i<4;i++)
    {
        bpAncien[i]=bpEtat[i];                 // Conservation des états précédents
        bpEtat[i]=digitalRead(bpPin[i]);       // Lecture des nouveaux états
    }
    if ((bpEtat[0]==0)&&(bpAncien[0]==1))      // En cas d'appui sur bp0
    {
          ......
    }
    .....
}

Leds

Description

6 leds connectées en "cathodes communes" sont présentes sur la carte. Une led s'allume donc lorsqu'un niveau logique '1' est présent sur la sortie associée.

Attention, le commutateur permet de choisir entre les Leds et les afficheurs 7 segments.

Leur position et couleur sont données dans le tableau suivant :

Numéro f5 f4 f3 f2 f1 f0 p1 p0
Couleur r o v r o v v r
Arduino Pin 13 12 11 10 9 8 7 6
Port Arduino UNO PB5 PB4 PB3 PB2 PB1 PB0 PD7 PD6
Port Arduino LEONARDO PC7 PD6 PB7 PB6 PB5 PB4 PE6 PD7

Principe d'utilisation

void setup()
{
    char i;
    for (i=6;i<=13;i++) pinMode(i,OUTPUT);    // Déclaration des 6 sorties
}

void loop()
{
    char i;
    for (i=6;i<=13;i++) digitalWrite(i,HIGH); // Les Leds s'allument
    delay(500);                               // Attente pendant 500ms
    for (i=6;i<=13;i++) digitalWrite(i,LOW); // Les Leds s'éteignent
    delay(500);                               // Attente pendant 500ms
}

Afficheurs 7 segments

Description

7seg.png

Les 2 afficheurs ne peuvent pas être utilisés simultanément. L'état de la sortie mux (arduino port 4 ou PD4) permet de sélectionner l'un ou l'autre. En allumant successivement l'un puis l'autre rapidement, on a l'illusion qu'ils sont tous 2 allumés. Les segments des afficheurs sont câblés de façon analogue comme décrit ci dessous :

Segment pt g f e d c b a
Arduino Pin 11 9 10 8 7 6 12 13
Port PB3 PB1 PB2 PB0 PD7 PD6 PB4 PB5

Principe d'utilisation

const char pinMux = 4;
const char pinAff[8]={13,12,6,7,8,10,9,11};

void setup()
{
    char i;

    for (i=0;i<8;i++) pinMode(pinAff[i],OUTPUT);    // Déclaration des 8 sorties des afficheurs
    pinMode(pinMux,OUTPUT);                         // + sortie de multiplexage (choix de l'afficheur)
}

void loop()
{
    char i,c;

    for (i=0;i<8;i++) digitalWrite(pinAff[i],HIGH); // Les segments s'allument
    for (c=0;c<20;c++)
    {
        digitalWrite(pinMux,1);                     // sur l'afficheur 1
        delay(10);
        digitalWrite(pinMux,0);                     // puis sur l'afficheur 2
        delay(10);
    }


    for (i=0;i<8;i++) digitalWrite(pinAff[i],LOW);  // Les segments s'éteignent
    for (c=0;c<20;c++)
    {
        digitalWrite(pinMux,1);                     // sur l'afficheur 1
        delay(10);
        digitalWrite(pinMux,0);                     // puis sur l'afficheur 2
        delay(10);
    }

}

MLI (ou PWM)

Description

Une sortie MLI non filtrée ou après un filtre passe bas de fréquence de coupure 50Hz est disponible sur la carte. Cette sortie est reliée sur l'arduino Pin 5 ou PD5.

Principe d'utilisation

const unsigned char mliPin=5;

void setup()
{
   pinMode(mliPin,OUTPUT);
}

void loop()
{
   analogWrite(mliPin,valeur);     // valeur de mli entre 0 et 255
}

Entrées analogiques

Description

Capteur Arduino Pin Port
photo coupleur par réflexion A2 PC2
LDR, intensité lumineuse A3 PC3
CTN, thermistance A4 PC4
mesure de composant (*) A5 PC5

(*) Mesure de composant : en plaçant un composant sur les barrettes adéquates, et en utilisant l'entrée analogique A5 ou PC5, il est possible d'identifier le composant inséré, la mesure effectuée étant un pont diviseur entre ce composant la sortie 5 et une résistance de 10 kΩ.

Principe d'utilisation

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.println(analogRead(A3),DEC);
  delay(500);  
}

Documents pour la fabrication

La première étape consiste à déposer de la pâte à braser sur chacune des pastilles des composants.

L'image ci dessous permet de repérer facilement la position des pastilles sur la carte.

ComposantsTopShieldInfo.png


Shiledinfo.jpg

Media:ArduinoBoard.brd


Media:shieldinfo.sch