Cours:Shieldinfo : Différence entre versions
m |
|||
(46 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | [[Fichier:Shiledinfo3d.jpg|vignette|upright=4|droite]] | ||
+ | |||
+ | [[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" | ||
+ | |- | ||
+ | ! 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=== | ||
+ | |||
+ | <source lang=c> | ||
+ | |||
+ | 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); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </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> | ||
+ | |||
+ | ={{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]] | ||
+ | |||
+ | |||
+ | [[Media:shieldinfo.sch]] |
Version actuelle datée du 28 mars 2015 à 10:32
Sommaire
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
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.