ArduinoTutorial_V2
Transcript of ArduinoTutorial_V2
-
7/23/2019 ArduinoTutorial_V2
1/93
6/8/2014 1
F A
F4GSC JL L ARALA N 2014
F ARALA F4GSC JL L 2014 1
-
7/23/2019 ArduinoTutorial_V2
2/93
6/8/2014 2
P
Objectifs de cette formation
Description de la carte ArduinoUNO R3
Description de quelques shields Arduino
Description du Mega328P
Quelques lments du language de programmation Structure dun programme Arduino
Dfinition des variables et des constantes Structures de rpitition Structures de test
Description des interfaces numriques et analogiques
But de ces interfaces Numriques Analogiques
F ARALA F4GSC JL L 2014 6/8/2014 2
-
7/23/2019 ArduinoTutorial_V2
3/93
6/8/2014 3
P
Description des entes/sorties numriques simples Description et fonctionnement
Exemple 1 : Clignotant dune LED vitesse programmable. Exemple 2 : Dcodage et envoi du message SMS en code morse. Exemple 3 : Commande dun pont en H ( faire).
Le convertisseur analogique numrique Description et fonctionnement
Exemple 1 : Ralisation dun voltmtre , 0-10v. Exemple 2 : Ralisation dun capacimtre , Cx >2nF.
Le PWM (Pulse Width Modulation) Description et Fonctionnement Contrle de lintensit lumineuse dune diode LED
Contrle continu A partir des touches + et -
Convertisseur Numrique/analogique Exemple 1 : Gnration dune rampe. Exemple 2 : Gnration dun signal triangulaire. Exemple 3 : Gnration dun signal sinusodal.
Modulation tout ou rien Gnrateur dappel gnral audio (CQ de F5KEQ).
F ARALA F4GSC JL L 2014
-
7/23/2019 ArduinoTutorial_V2
4/93
6/8/2014 46/8/2014F ARALA F4GSC JL L 2014 4
P
Les Liaisons Sries Synchrones et Asynchrones Srie Asynchrone
Description et Fonctionnement Interface avec lHyperterminal
I2C Synchrone Description et Fonctionnement
Les interruptions
-
7/23/2019 ArduinoTutorial_V2
5/93
6/8/2014F ARALA F4GSC JL L 2014 5
I
-
7/23/2019 ArduinoTutorial_V2
6/93
I
Do vient le nom arduino?
En lan 1002, le roi Arduin (Arduino en italien) devint le seigneur de la petite villedIvrea.
Un bar dans une rue pave de la ville, honore sa mmoire, Bar di Re Arduino.
Massimo Banzi, un des fondateur de ce concept, a pour habitude dtancher sa soifdans ce bar. Le nom du projet lectronique Arduino fait rfrence ce bar.
La philosophie
Populariser le dveloppement de llectronique et de linformatique industrielle.
Apprendre llectronique par la pratique au lieu de commencer par apprendre lalgbre
et les lois de llectronique (approche anglo-saxonne).
Disposer dune plateforme matrielle et logicielle bas cot.
Partager les dveloppements matrielles sous licence Creative Commons et logiciellessous licence open source.
6/8/2014F ARALA F4GSC JL L 2014 6
-
7/23/2019 ArduinoTutorial_V2
7/93
I
Les plus
Pouvoir rutiliser les dveloppements matriels et logiciels (librairies) crer pardautres dveloppeurs.
Lhritage des librairies permet de rduire considrablement le temps dveloppementdes systmes.
La complexit de lassemblage de fonctions lectroniques et informatique est rduite(1).
Le dveloppeur peut se concentrer sur le dveloppement de son ide et facilite donc lacration et linnovation.
Cette simplification permet tout un public nayant pas les comptences en lectroniqueet informatique de crer et innover.
Note(1) Le temps dapprentissage dun microcontrleur peut prendre quelques jours quelques mois en fonctions de la
complexit des priphriqes quil intgre. Les librairies open source permettent de saffranchir de cet apprentissage en utilisantdes fonctions logicielles qui intgrent la complexit de programmation des priphriques.
6/8/2014F ARALA F4GSC JL L 2014 7
-
7/23/2019 ArduinoTutorial_V2
8/93
I
Les moins Les optimisations logicielles (taille,temps dxcution) se sont possibles quaux
dveloppeurs ayant des connaissances approndies.
6/8/2014F ARALA F4GSC JL L 2014 8
-
7/23/2019 ArduinoTutorial_V2
9/93
6/8/2014 96/8/2014F ARALA F4GSC JL L 2014 9
D A U
-
7/23/2019 ArduinoTutorial_V2
10/93
6/8/2014 106/8/2014F ARALA F4GSC JL L 2014 10
D A UNO R3
E A/N
E/ N
Les interfaces dentres/sorties numriques et analogiques
Gnd
Gnd
5v3.3vRESET
AREF
IOREF vin
AREF : source de rfrence de tension externe
IOREF : Fournit le 5v comme rfrence pour les cartes shields.
Vin : alimentation externe (7-12v)
-
7/23/2019 ArduinoTutorial_V2
11/93
6/8/2014 116/8/2014F ARALA F4GSC JL L 2014 11
D A UNO R3
Les Entres/Sorties Spciales
E/S N S A (UART)E/S N S S (I2C)
E/S N PWME/S N S S (SPI)
-
7/23/2019 ArduinoTutorial_V2
12/93
E
-
7/23/2019 ArduinoTutorial_V2
13/93
E
A . 5 3.3.
shield thernet
shield GPS/GSM
shield zeebe shield audio Shield SD card
Shield tlmtrie ultrason
Shield Contrle moteurShield prototype
Shield Afficheur graphique
-
7/23/2019 ArduinoTutorial_V2
14/93
6/8/2014 14
D A328P
6/8/2014F ARALA F4GSC JL L 2014 14
-
7/23/2019 ArduinoTutorial_V2
15/93
6/8/2014 15
D AT328P
Les fonctions embarques dans lATmega328P
C (C ) IC 8B
A H . U
.
RISC (R I S) 2
(20MIPS).
32
.
E 1
F= 16MH T=66.
2 16
A C.
L
E 1
F ARALA F4GSC JL L 2014 6/8/2014 15
-
7/23/2019 ArduinoTutorial_V2
16/93
6/8/2014 16
D AT328P
Les fonctions embarques dans lATmega328P
Les ressource matrielles Les plans mmoire
6/8/2014F ARALA F4GSC JL L 2014 16
Mmoire Taille Opration dcriture/Lecture
Programme - 32 kOctets de mmoireFlash.
- Ecriture au chargemnt du programme.
Donnes Volatiles - 2 koctets de mmoire RAM. - Ecriture/lecture Accessible toutmoment.
Donnes non Volatiles - 1 koctets de mmoireEEPROM.
- Plusieurs koctets demmoire Flash.
- Ecriture/lecture Accessible toutmoment.
- Ecriture au chargemnt du programme.- Lecture tout moment.
Notes :
- FLASH : Propprit qui permet deffacer/crire rapidement une grande portion de la mmoire-Technologie qui permet de raliser une mmoire qui peut tre crite/efface lectriquement.- Le contenu de la mmoire est maintenu lorsque lalimentation est teinte.
- RAM : Random Access Memory- Technologie qui permet de lraliser une mmoire qui peut tre crite/efface lectriquement.- Le contenu est perdu lorsque lalimentation est teinte.
- EEPROM : Electrically-Erasable Read Only-Memory- Technologie qui permet de raliser une mmoire qui peut tre crite/efface lectriquement.- Le contenu de la mmoire est mainetnu lorsque lalimentation est teinte.
-
7/23/2019 ArduinoTutorial_V2
17/93
6/8/2014 17
D AT328P
Les fonctions embarques dans lATmega328P
Les ressource matrielles (botier PDIP) Les priphriques
Oscillateur RC interne calibr (8MHz). Oscillateur externe (32KHz /0.4MHz - 16MHz). 2 x Timer/Compteur 8bits. 1 x Timer/Compteur 16bits. 1 x Timer/compteur temps rel. 1 x timer chien de garde avec oscillateur spar.
Pr-diviseur dhorloge 8bits. 6 x PWM. 6 x Entres analogiques 10-bits avec mesure de la temprature. 1 x UART. 1 x liaison srie synchrone SPI (Matre et esclave).
1 x liaison srie synchrone I2C. 1 x comparateur analogique. 26 x sources dinterruption internes et externes. Tension dalimentation : 1.8v 5.5v.
6/8/2014F ARALA F4GSC JL L 2014 17
-
7/23/2019 ArduinoTutorial_V2
18/93
6/8/2014 18
D AT328P
6/8/2014F ARALA F4GSC JL L 2014 18
Les fonctions embarques dans lATmega328P Les ressource matrielles
Les autres membres de la famille
-
7/23/2019 ArduinoTutorial_V2
19/93
6/8/2014F ARALA F4GSC JL L 2014 19
Q C
-
7/23/2019 ArduinoTutorial_V2
20/93
Q C
Structure dun programme Arduino
6/8/2014F ARALA F4GSC JL L 2014 20
//===========================================================//-- La librairie LCD est utilise.//===========================================================#include
//===========================================================//-- La diode LED est connecte la broche 13.//===========================================================
Int led=13;
//===========================================================//-- Construit un objet LCD et prcise que les broches 12,11,5,4,3,2 connecte//-- le LCD la carte Arduino.//------------------------------------------------------------------------------------------------------//-- broche 12 : RS -11:Enable 5: D4 4:D5 -3 : D6 - 2 : D7//===========================================================
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//===========================================================void setup() {//-- Dfinit le nombre de caractre par ligne ainsi que le nombre de lignelcd.begin(16, 2);
//-- Affiche le message Hello World.lcd.print("hello, world!");
}
//===========================================================void loop() {Int compteur;// set the cursor to column 0, line 1lcd.setCursor(0, 1);
// print the number of seconds since reset:lcd.print(millis() / 1000);++compteur;
}//===========================================================
Construction du priphrique lcd et prcise commentce prifrique se connnecte la carte arduino ( quelssignaux sont utiliss).
Inclusion dun fichier comprenant les fonctionslogicielles permettant le pilotage des fonctionslectroniques matrielles (shield).
Boucle de programme xcute la mise sous-tension ou aprs une remise zro.
Boucle de programme principale xcute la mise soustension ou aprs une remise zro (boucle sans fin).
Affectation des noms symboliques au broches dE/Sde la carte Arduino.
-
7/23/2019 ArduinoTutorial_V2
21/93
Q C
Dfinition des variables et des constantes
Constante FLASH, EPROM, RAM Donne fixe qui ne change pas lors de lxcution du programme.
Variable EPROM et RAM Dfinition
Donne dont la valeur est modifie en fonction de lactivit du programme.
Type dune variable Dfinie la nature de la donne ainsi que sa taille (dpend de larchitecture du microcontrleur
(8,16,32 ou 64-bits);
Dfinie le signe de la donne : signe positive ou ngative, non signe positive.
6/8/2014F ARALA F4GSC JL L 2014 21
-
7/23/2019 ArduinoTutorial_V2
22/93
Q C
Dfinition des variables et des constantes Taille et dynamique de codage des donnes (variables, constantes)
6/8/2014F ARALA F4GSC JL L 2014 22
(A328)
T 1 8 16 32 32 64
N 1 2 4 4 8
D
()
0
1
127
+128
32768
+32767
2 147 483 648
+2 147 483 647
3.40282347+38
+3.40282347E38
1.79769313486231570308
1.79769313486231570308
D
( )
0
1
0
255
0
65535
0
4 294 967 295
E B ON; C ; I ; ; ; ;
-
7/23/2019 ArduinoTutorial_V2
23/93
Q C
Dfinition des variables et des constantes Type dune variable (suite)
Occupation mmoire Le type dtermine combien doctets seront utilises pour loger la variable ou la
constante dans le plan mmoire.
6/8/2014F ARALA F4GSC JL L 2014 23
8 variables boolennes
1 variables char
1 variables int
1 variables long
Plan mmoireFlash, RAM, EPROM
4 octets
2 octets
1 octet
8 bits
-
7/23/2019 ArduinoTutorial_V2
24/93
Q C
Dfinition des structures de rpitition conditionnelle Structure qui permet de rpter plusieurs fois le mme traitementjusqu ce que la
condition de fin apparaisse.
Tant que la condition nest pas vrifie alors faire le traitement
int i;.
for (i=1 ; i
-
7/23/2019 ArduinoTutorial_V2
25/93
Q C
Dfinition des structures de rpitition conditionnelle Structure qui permet de rpter plusieurs fois le mme traitementjusqu ce que la
condition de fin apparaisse.
Si la condition est vrifie alors rpter le traitement
int i;
.i=1;
while (i
-
7/23/2019 ArduinoTutorial_V2
26/93
Dfinition des structures de rpitition conditionnelle Structure qui permet de rpter plusieurs fois le mme traitementjusqu ce que la
condition de fin apparaisse.
Faire le traitementsi la condition est vrifie alors rpter le traitement
int i;
.
i=1;do{serial.print(I = ); serial.printl(i);
i=i+1;}
while (i
-
7/23/2019 ArduinoTutorial_V2
27/93
Dfinition des structures de test conditionnelle Ces structures permettent dappliquer un traitement logiciel particulier en fonction
dun vnement qui apparait ou en fonction de lvolution dune variable.
Si la condition est vrifie alors faire traitement1sinon faire traitement2
int condition;
.
condition=10;.
if (condition==1){
serial.print(condition = ); serial.println(condition);}
else
{serial.print(condition = ); serial.println(condition);
}
Q C
6/8/2014F ARALA F4GSC JL L 2014 27
-
7/23/2019 ArduinoTutorial_V2
28/93
Dfinition des structures de test conditionnelle Ces Structures permettent dappliquer un traitement logiciel particulier en fonc tion
dun vnement qui apparait ou en fonction de lvolution dune variable.
Si la condition1 est vrifie alors faire traitement1sinon si la condition2 est vrifie alors faire traitement2
sinon si la condition3 est vrifie alors faire traitement3sinon si la condition4 est vrifie .
int condition;
.
condition=2;.
if (condition==1){
serial.print(condition 1 = ); serial.printl(condition);}elseif (condition==2)
{serial.print(condition 2 = ); serial.printl(condition);
}elseif (condition==3){serial.print(condition 3 = ); serial.printl(condition);
}elseif (condition==4) {.}
Q C
6/8/2014F ARALA F4GSC JL L 2014 28
-
7/23/2019 ArduinoTutorial_V2
29/93
Dfinition des structures de test conditionnelle Ces Structures permettent dappliquer un traitement logiciel particulier en fonc tion
dun vnement qui apparait ou en fonction de lvolution dune variable.
Test (var)si var=condition1 alors faire traitement1
si var=condition2 alors faire traitement2
char var;.
var = A;.Switch (var){
case A :{serial.print(var_A = ); serial.printl(var);break ;
}case B :{
serial.print(var _B= ); serial.printl(var);break ;}
}
Q C
6/8/2014F ARALA F4GSC JL L 2014 29
-
7/23/2019 ArduinoTutorial_V2
30/93
6/8/2014 306/8/2014F ARALA F4GSC JL L 2014 30
D E/S
-
7/23/2019 ArduinoTutorial_V2
31/93
6/8/2014 31
L E/S N S
Proprits Ce sont des E/S qui ont deux tats et dont ceux-ci sont contrls par lutilisateur
(programme).
Celles qui ne sont pas des E/S simples sont des E/S analogiques et des E/S spcifiques.
Actions faire par programmation pour utiliser ces E/S.
Indiquer quelle broche est utilise.
int Signal1 =2;
Indiquer la direction de lE/S est-ce que lutilisateur besoin dune Entre ou une Sortie?
pinMode( Signal1,OUTPUT); ou pinMode(Signal1,INPUT);
En fonction du besoin du programme, forcer la Sortie ltat haut(VDD) ou bas (GND) ou lire
lEntre.
Sortie : digitalWrite(Signal1,HIGH);ou digitalWrite(Signal1,LOW); Entre : var = digitalRead(Signal1);
F ARALA F4GSC JL L 2014
-
7/23/2019 ArduinoTutorial_V2
32/93
6/8/2014 32
L E/S N S
Exemple 1 Utilisation des entres/sorties Faire clignoter la led associe la broche 13 avec une priode de 1 seconde si la broche
2 est ltat 1 (VDD=5v) et 2 secondes si elle est 0 (Gnd=0v).
Dclaration des broches utilisesint Led=13 ;int Interrupteur= 2 ;
Indiquer la direction des broches 2 et 13Void setup{
pinMode(Led,OUTPUT);pinMode(Interrupteur,INPUT);
}
ProgrammeVoid loop(){boolean Toggle;
if (digitalRead(Interrupt)==1) delay(1000) ;else delay(2000) ;if (Toggle==1)
{digitalWrite(Led,LOW) ; Toggle=0;
}else{
digitalWrite(Led,HIGH) ; Toggle=1;}
}
F ARALA F4GSC JL L 2014
C.F exprimentation_1
-
7/23/2019 ArduinoTutorial_V2
33/93
6/8/2014 33
L E/S N S
Exemple 2 Utilisation des sorties Dcoder et Gnrer en code morse le message SMS
Dure point : tpoint = 200ms trait : 3 x tpoint Interval entre deux lettres : Interv1 = 3 x tpoint
Interval dentre deux mots : Interv2 = 7 x tpoint
7 x tpoint
3 x tpoint1 x tpoint
M S S
F ARALA F4GSC JL L 2014
C.F exprimentation_2
1 x tpoint 3 x tpoint
-
7/23/2019 ArduinoTutorial_V2
34/93
6/8/2014 34
L E/S N S
Exemple 2 Programme
L=13;
// 0 : 1 , 1: , 2:
// , 3 : .
MT=1,1,1,2,1,1,2,1,1,1,3; =200;
()
M(L,OUTPUT);
()
;
;
(1)
// D
(MT)
0:
W(L,HIGH); ();
W(L,LOW); ();
;
1:
W(L,HIGH); (2*);
W(L,LOW) ; ();
;
2:
W(L,LOW); (3*);
;
3:
W(L,LOW); (7*);
;
;
++;
(>10)=0;
F ARALA F4GSC JL L 2014
-
7/23/2019 ArduinoTutorial_V2
35/93
6/8/2014 35
C A/N
Dfinition et fonctionnement Fonction lectronique intgre dans CTRL qui asssure linterface entre me
monde analogique et le monde numrique Conversion analogique/numrique(CAN).
Monde numrique
Bit: chiffre binaire qui ne peut prendre que deux valeurs : 0 ou 1 0 ou VDD : Grandeur binaire au sens lectrique du terme 0 la masse VDD
5v,3v,
Chiffre cod sur N bits 4 bits : codage de 16 valeurs 8 bits : codage de 256 valeurs 16 bits : codage de 65536 valeurs
Monde analogique Grandeur qui peut prendre une infinit de valeur au cours du temps qui passe.
Il faudrait une infinit de bit pour coder une grandeur analogique
pas ralisablephysiquement. Rsolution (la plus petite valeur que le CAN peut coder:
Res= Vref/2^Nbits, exemple Vref=5v , Nbits=8 Res = 5/256 =19mV.
Le convertisseur analogique numrique arrondit donc la grandeur analogique (troncature).
F ARALA F4GSC JL L 2014 6/8/2014 35
-
7/23/2019 ArduinoTutorial_V2
36/93
6/8/2014 36
C A/N
Description et fonctionnement Un convertisseur numrique/analogique 10-bits fournit une
tension de comparaison lentre V- du comparateur qui estcontrle par le compteur 10-bits.
Lorsque la tension de rfrence V- est gale la tensionanalogique V+ le processus de conversion sarrte et fournitla grandeur analogique convertie en numrique (ANx-analogique ANx-Numrique).
F ARALA F4GSC JL L 2014 6/8/2014 36
-
7/23/2019 ArduinoTutorial_V2
37/93
C A/N
Example 1: Ralisation dun voltmtre Le principe consiste utiliser le CAN pour mesurer une tension analogique
comprise entre 0 et 10v. La lecture sera envoye sur le port de la liaison demise au point (Tool Serial link).
6/8/2014F ARALA F4GSC JL L 2014 37
const int voltMetrePin = A1;float Tension;void setup() {Serial.begin(9600);analogReference(DEFAULT);}
void loop() {Tension=analogRead(voltMetrePin)*10.0/1023;
Serial.print(" Tension (mV) = ");Serial.println(Tension);}
C.F exprimentation_3
-
7/23/2019 ArduinoTutorial_V2
38/93
C A/N
Exemple 2 : Ralisation dun capacimtre. Le principe de la mesure de Cx consiste la charger lectriquement par lintermdiaire
dun chelon de tension et dune rsistance connue. Le convertisseur analogique numrique poursuit la tension jusqu ce quelle ait atteinte
63% de sa valeur finale. Un compteur logiciel mesure le temps entre le dbut et la finde la charge.
Une fois Cx mesure, celle-ci est dcharge par la broche RAZ. La fonction delay(1ms) est utilise comme base de temps de rfrence.
6/8/2014F ARALA F4GSC JL L 2014 38
R
TCRxCT =>=- Equation pour dterminer C en connaissant T et R :
Exemple : T= 5ms et R=470kohms C=10nF, Tmin= 1ms Cmin=2nF
C.F exprimentation_4
-
7/23/2019 ArduinoTutorial_V2
39/93
C A/N
Exemple 2 : Ralisation dun capacimtre.
// I
P = A5;
// E
C = A4;
// E/S
RA = A3;
// R ( )
R = 460;
// S T = RC
S = 5*0.63;
()
S.(9600);
// P
M(P,OUTPUT);
// P
W(P,LOW);
// C
M(C,INPUT);
// RA
M(RA,INPUT);
()
;
;
// I
W(P,HIGH);
=0;
// C T = RC
((R(C)*5.0/1023) < S)
(1) ; ++;
// C C, > 1 C .
(>1) =*1000/R C;
=0;
// A
S.(" C(F) =") ; S.();
S.(" T () =") ; S.();
S.(" ");
// RA
W(P,LOW);
// D C
M(RA,OUTPUT) ; W(RA,LOW);
D(1);
// R RA
M(RA,INPUT);
(1000);
-
7/23/2019 ArduinoTutorial_V2
40/93
6/8/2014 40
M L I (PWM)
Description et fonctionnement Signal priodique
Pin 5 : Priode fixe standard T=490Hz Pin 6 : Priode fixe standard T=980Hz La priode peut est ajuste.
Impulsion dont la largeur peut avoir 256 valeurs diffrentes ( 0 255) PWM 8-bits Largeur de limpulsion est fonction du traitement numrique (la largeur de
limpulsion est module).
Numrique
Analogique
F ARALA F4GSC JL L 2014 6/8/2014 40
-
7/23/2019 ArduinoTutorial_V2
41/93
M L I (PWM)
Contrle de lintensit lumineuse dune diode LED. Exemple 1
Lintensit varie de 0 100% var_MLI =[ 0.. 255] tous les 20ms.
La valeur moyenne de la tension de commande de la LED est de:
6/8/2014F ARALA F4GSC JL L 2014 41
const byte Periode=20;void setup() {}
void loop() {byte var_MLI;
for (var_MLI=0;var_MLI
-
7/23/2019 ArduinoTutorial_V2
42/93
M L I (PWM)
Contrle de lintensit lumineuse dune diode LED. Exemple 2
Contrle de lintensit lumineuse dune diode LED partir des touches du clavier +et -, valides par lappui de la touche Enter.
Incmente et dcrmente la largeur de limpulsion partir de la touche + et
- du clavier (utilisation du Serial Monitor). Retard de 500ms entre deux changements.
6/8/2014F ARALA F4GSC JL L 2014 42
-
7/23/2019 ArduinoTutorial_V2
43/93
M L I (PWM)
Contrle de lintensit lumineuse dune diode LED. Exemple 2
Contrle de lintensit lumineuse dune diode LED partir des touches du clavier +et -, valides par lappui de la touche Enter.
6/8/2014F ARALA F4GSC JL L 2014 43
-
7/23/2019 ArduinoTutorial_V2
44/93
6/8/2014 44
M L I (PWM)
Convertisseur Numrique/Analogique Principe de fonctionnement
e(f)
F1 F2 F31FT
=f(Hz)
E0=E x t
T
0Hz
continu
E0=E x t
T
s(f)
f(Hz)
Transforme deFourier
Filtre Passe-Bas
Tension continue
C.F exprimentation_5- Mise en vidence du contenu spectral,du filtrage et de la valeur moyenne.
- Frquence dchantillonnage = 2kHz- FC = 20Hz et 2Hz- E=5v
F ARALA F4GSC JL L 2014
44
T= 500Hz (PWM0)
-
7/23/2019 ArduinoTutorial_V2
45/93
6/8/2014 45
M L I (PWM)
Convertisseur Numrique/Analogique Loi de conversion numrique analogique
Numrique Analogique Exemple
ExcursionAnlogique
Excursionnumrique
Rsolution
0 E0 E 0 E0 E
0 n 255 n
0 E E255
1 E255
t nE0 E ET 255
= =
0 E0 5v
255
0 E 5v255
519.6mV
255 =
F ARALA F4GSC JL L 2014 6/8/2014 45
Compteur 8-bit : 0
-
7/23/2019 ArduinoTutorial_V2
46/93
6/8/2014 46
M L I (PWM)
Convertisseur Numrique/Analogique Exemple 1 :Ralisation dune rampe une pente:
Frquence = 500ms Amplitude 5v PWM sur la broche 5
const int PWM0=5;
const byte Periode=2;byte var_MLI;
void setup() {}
void loop(){for (var_MLI =0; var_MLI
-
7/23/2019 ArduinoTutorial_V2
47/93
6/8/2014 47
M L I (PWM)
Convertisseur Numrique/Analogique Exemple 2: Ralisation dune rampe double pentes:
Frquence = 500ms Amplitude 5v PWM sur la broche 5
const int PWM0=5;const byte Periode=2;void setup(){byte var_MLI =0;}
void loop()
{for (var_MLI =0; var_MLI 0; var_MLI --){analogWrite(PWM0, var_MLI);delay(Periode);}
}
F ARALA F4GSC JL L 2014 6/8/2014 47
M L I (PWM)
-
7/23/2019 ArduinoTutorial_V2
48/93
6/8/2014 48
M L I (PWM)
Convertisseur Numrique/Analogique Exemple 3: Ralisation dun signal sinusodal
Frquence = 500ms Amplitude 2.5v centr sur 2.5v Tension dalimentation, VDD = 5 ;
Nombre de point dans la sinusode, N = 255;
Equation de la sinusode
y = 2.5 + 2.5 x sin(2*pi*n/N))
Le PWM naccepte que des nombres entiers (pas de nombre dcimal)
m = partie entire (y*N/VDD)
F ARALA F4GSC JL L 2014 6/8/2014 48
Dcalagede +2.5v
Sinus variantentre 0v et 5v
C.F exprimentation_8
M L I (PWM)
-
7/23/2019 ArduinoTutorial_V2
49/93
6/8/2014 49
M L I (PWM)
Convertisseur Numrique/Analogique Exemple 3: Ralisation dun signal sinusodal
#include // --- Enregistrement des points dfinissant une priode de sinusode complte et fournir au PWM.prog_uchar SinusTab[] PROGMEM={128,131,134,137,140,143,146,149,152,156,159,162,165,168,171,174,176,179,182,185,188,191,193,196,199,201,204,206,209,211,213,216,218,220,222,224,226,228,230,232,234,235,237,239,240,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,79,81,84,87,90,93,96,99,103,106,109,112,115,118,121,124,127};
// ------- Dfinition des constantes et affection de la broche la fonction PWMconst int PWM0 = 5 ; const byte Periode = 2;
// --- Programme dinitialisation Ici aucune initialisation nest requise.void setup() {}
// --- Programme proncipale qui sxcutera jusqu lextinction de lalimentationvoid loop(){// ---- Dclaration des variables du programmebyte Pulse=0 ; byte k=0 ; unsigned char sinus;
//--- Boucle sans fin qui fournir les points de la sinusode au PWM.for (k=0;k
-
7/23/2019 ArduinoTutorial_V2
50/93
6/8/2014 50
M L I (PWM)
C N/A Exemple 3: Ralisation dun signal sinusodal
Effet du filtre sur lamplitude de la sinusode et le niveau des harmoniques
Pour une sinusode de frquence de 2Hz: FC = 2Hz, le filtre apporte une attnuation de -3db soit 0.7 x
lamplitude maximale VM =0.7*2.5=1.8v.
FC=20Hz est une dcade de la frquence du signal lamplitude dusignal ne subit pas dattnuation due au filtre par contre lesharmoniques sont moins attnues de 20dB par rapport FC = 2Hz.
C.F exprimentation_2- Mise en vidence du contenu spectrale,du filtrage et de la valeur moyenne.
- Frquence dchantillonnage = 2kHz- FC = 20Hz et 2Hz- E=5v
F ARALA F4GSC JL L 2014
M L I (PWM)
-
7/23/2019 ArduinoTutorial_V2
51/93
6/8/2014 51
M L I (PWM)
Modulation tout ou rien Gnrer un appel gnral en morse CQ de F5KEQ
I
D
S
G
BS170
D
S
G
BS170
220ohmsBuzzer
8
9
100kohms
100kohms
13
220ohms
5V
GND
A
R
d
u
i
n
o
U
N
O
R
3
Modul
Audio
F ARALA F4GSC JL L 2014
M L I (PWM)
-
7/23/2019 ArduinoTutorial_V2
52/93
6/8/2014 52
M L I (PWM)
Description et fonctionnement Exemple 4: Gnrer un appel gnral en morse en audio: CQ de F5KEQ
// 0 : 1 , 1: , 2:
// 3 : .
// M :
// C Q F 5K Q
B M=1,0,1,0,2,1,1,0,1,3,1,0,0,
2,0,3,0,0,1,0,2,0,0,0,0,0,2,1,0,1,2,0,2,1,1,0,1,3;
// N
N = 38;
// V
= 110;
// F = 490 A = 9;
// C
M = 8;
// L
L = 13;
()
M(L,);
(A,127);
()
;
;
(1)
// D
(M)
0: (L,HIGH) ; (M,HIGH); ();
(L,L) ; (M,L); () ; ;
1:
(L,HIGH); (M,HIGH); (2*);
(L,L) ; (M,L) ; () ; ;
2:
(M,L); (L,L); (2*) ; ;
3:
(M,L); (L,L);(7*) ; ;
;
++; (>N)=0;
F ARALA F4GSC JL L 2014
-
7/23/2019 ArduinoTutorial_V2
53/93
L L S S A
6/8/2014F ARALA F4GSC JL L 2014 53
L L S S A
-
7/23/2019 ArduinoTutorial_V2
54/93
Introduction Les liaison sries qui permet la communication (change de donnes, contrle
commande,) des quipements informatique et des circuits intgrs. Les donnes sont transmises sur un fil ou plusieurs fils suivants la nature de la
transmission (UART, I2C,SPI,).
La communication srie est gre par un metteur/rcepteur intgr au niveau delquipement ou du circuits intgr (Atmega328p).
L L S S A
6/8/2014F ARALA F4GSC JL L 2014 54
L L S S A
-
7/23/2019 ArduinoTutorial_V2
55/93
L L S S A
Introduction La liaison peut tre ASYNCHRONE si lHORLOGE nest pas transmise avec les donnes. La liaison est SYNCHRONE si lHorloge est physiquement transmises en mme temps
que le flux de donnes. Les liaisons sries se caractrisent par leur protocole et leurs spcifications
lectriques.
6/8/2014F ARALA F4GSC JL L 2014 55
L L S S A
-
7/23/2019 ArduinoTutorial_V2
56/93
L L S S A
La liaison srie ASYNCHRONE Structure
Un metteur / rcepteur transmet en srie (1 fil) les 8-bits de la donne.
6/8/2014F ARALA F4GSC JL L 2014 56
L L S S A
-
7/23/2019 ArduinoTutorial_V2
57/93
6/8/2014F ARALA F4GSC JL L 2014 57
Donnes: 5,6,7,8 bits
1 Bit start 1 Bit stop
Bit de parit
L L S S A
-
7/23/2019 ArduinoTutorial_V2
58/93
6/8/2014F ARALA F4GSC JL L 2014 58
L L S S A
-
7/23/2019 ArduinoTutorial_V2
59/93
La liaison srie ASYNCHRONE Le standard RS232
Le standard ne supporte Par contre le standard ne dfinit pas : Le codage des caractres (ASCII, Code Baudot ou EBCDIC par exemple).
La faon dont les caractres sont rpartis en trames. Les protocoles de dtection d'erreur ou les algorithmes de compression dedonnes.
Les dbits de transmission : seule une limite suprieure de 20 000 bauds estindique.
La fourniture de courant lectrique des priphriques.
Baud Nombre de symbole transmis par seconde
2400 bit/s, en 4-QAM (2 bits transmis par symbole) 3600 bit/s, en 8-QAM (3 bits transmis par symbole)
4800 bit/s, en 16-QAM (4 bits transmis par symbole)
6/8/2014F ARALA F4GSC JL L 2014 59
Symbole
L L S S A
-
7/23/2019 ArduinoTutorial_V2
60/93
La liaison srie ASYNCHRONE Le standard RS232
Les interfaces lectriques +/-12 v
6/8/2014F ARALA F4GSC JL L 2014 60
+5v
0v
+12v
-12v
0v
Cble de liaisonCt Equipement et carte
L L S S A
-
7/23/2019 ArduinoTutorial_V2
61/93
La liaison srie ASYNCHRONE Le standard RS232
Comment programmer
6/8/2014F ARALA F4GSC JL L 2014 61
//=======================================================//-- Envoie un caractre via la liaison srie//=======================================================void setup(){//--- Cration dun objet liaison srie Asynchrone
Serial.begin(9600);
}
void loop(){//======================================================//--- Dbut dune transmission//=======================================================
while (!Serial);Serial.println('U');delay(50);
}
//=======================================================//-- Reoit un caractre via la liaison srie//=======================================================
byte incomingByte;
void setup()
{//--- Cration dun objet liaison srie AsynchroneSerial.begin(9600);
}
void loop(){//======================================================//--- Attend l'arrive d'un caractre//=======================================================
if (Serial.available() > 0) {//--- le caractre est reu
incomingByte = Serial.read();//--- Envoit vers le terminal srie
Serial.print("Caractre reu ") ; Serial.println(incomingByte, DEC);}
}
L L S S A
-
7/23/2019 ArduinoTutorial_V2
62/93
La liaison srie ASYNCHRONE Le standard RS232
Table ASCII ( American Standard Code for Information Interchange).
6/8/2014F ARALA F4GSC JL L 2014 62
L L S S A
-
7/23/2019 ArduinoTutorial_V2
63/93
La liaison srie ASYNCHRONE Le standard RS232
Table ASCII ( American Standard Code for Information Interchange).
6/8/2014F ARALA F4GSC JL L 2014 63
L L S S A
-
7/23/2019 ArduinoTutorial_V2
64/93
La liaison srie ASYNCHRONE Exemple : Pilotage Tx
6/8/2014F ARALA F4GSC JL L 2014 64
L L S S A
-
7/23/2019 ArduinoTutorial_V2
65/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus
Bus de liaison srie synchrone de communication entre un ou plusieurs circuits intgrs (ADC,IO, DAC, horloge temps relle, mmoire...). Chacun des CI est repr par une adresse Adrn.
Lhorloge est transmise en mme temps que les donnes (registre dcalage). Ligne SDA : Serial Data line Ligne SCL : Serial Clock line
6/8/2014F ARALA F4GSC JL L 2014 65
Condition de dbutde transfert
Condition de Finde transfert
Adr1 Adr2 Adr3
Adresse/Donnes/Signaux de contrle
L L S S A
-
7/23/2019 ArduinoTutorial_V2
66/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus
Vitesse de transmission
6/8/2014F ARALA F4GSC JL L 2014 66
M
(B/)
M. C
(F)
S 100 1 400 2700
F 400 300 400 820
F + 1 120 550 270
H 3.4
U 5
L L S S A
-
7/23/2019 ArduinoTutorial_V2
67/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus
I2C et Aarduino
6/8/2014F ARALA F4GSC JL L 2014 67
L L S S A
-
7/23/2019 ArduinoTutorial_V2
68/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus
Structure dune trame I2C. Dpend du type dopration ralise (cette formation nenvisage que les cas
les plus standards).
Lcriture dun octet dans un priphrique ( ex: PCF8574A)
6/8/2014F ARALA F4GSC JL L 2014 68
ArduinoSDA
PCF8574
PCF8574A
SCL
Sous-adresse choisiepar lutilisateur
Ex: 0x70 (112 dec)
Ecriture
L L S S A
-
7/23/2019 ArduinoTutorial_V2
69/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus Structure dune trame I2C
Cas dune criture simple
6/8/2014F ARALA F4GSC JL L 2014 69
- Dmarrage de lopration dcriture
- Adresse du priphrique crire
- Type dopration RW = 0 criture, (RW =1 lecture)
- Donne crire
- Acquittement du priphrique, SDA=0
- Acquittement du priphrique, SDA=0
- Fin de lopration dcriture
L L S S A
-
7/23/2019 ArduinoTutorial_V2
70/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus Structure dune trame I2C.
Ecriture en rafale ( nombre dcriture illimit)
6/8/2014F ARALA F4GSC JL L 2014 70
L L S S A
-
7/23/2019 ArduinoTutorial_V2
71/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus Structure dune trame I2C.
Lecture ( nombre dcriture illimit)
6/8/2014F ARALA F4GSC JL L 2014 71
L L S S A
-
7/23/2019 ArduinoTutorial_V2
72/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus Structure dune trame I2C.
Ecriture dans une mmoire (EPROM, RAM)
6/8/2014F ARALA F4GSC JL L 2014 72
L L S S A
-
7/23/2019 ArduinoTutorial_V2
73/93
6/8/2014F ARALA F4GSC JL L 2014 73
La liaision srie synchrone I2C : Inter Integrated Circuit bus Structure dune trame I2C.
Lecture dans une mmoire (EPROM, RAM)
L L S S A
-
7/23/2019 ArduinoTutorial_V2
74/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus Structure dune trame I2C.
Adressage de plus mmoire PCF85103C
6/8/2014F ARALA F4GSC JL L 2014 74
L L S S A
-
7/23/2019 ArduinoTutorial_V2
75/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus Programmation dun composant I2C
6/8/2014F ARALA F4GSC JL L 2014 75
//======================================================//--- envoie de 64 caractres//======================================================#include
byte val = 0;
void setup(){//--- Cration dun objet I2CWire.begin();
}
void loop(){
//======================================================//--- Dbut dune transmission par lenvoie de ladresse du priphrique
//=======================================================Wire.beginTransmission(44);
//=======================================================//-- envoie de la valeur//=======================================================
Wire.write(val);
//=======================================================
//--- Fin de transmission//=======================================================
Wire.endTransmission();
val++;if(val == 64){val = 0;
}delay(500);
}
//========================================================//-- Transmission vers la liaison srie des caractres reus par la liaison I2C.//========================================================#include
void setup(){//--- Cration dun objet I2CWire.begin();
//--- Cration dun objet liaison srieSerial.begin(9600);
}
void loop(){//=======================================================//--- Demande de lecture de 6 octets du priphrique dadresse 0x02//========================================================
Wire.requestFrom(2, 6);//========================================================//--- Attente de la rception dun caractre//========================================================
while(Wire.available()){//======================================================//--- Lecture dun caractre reu depuis la liaison I2C et envoi vers//--- la liaison srie//======================================================
char c = Wire.read();Serial.print(c);
}delay(500);
}
L L S S A
-
7/23/2019 ArduinoTutorial_V2
76/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus Structure dune trame I2C.
Afficheur LCD 4 x 20 caractres
6/8/2014F ARALA F4GSC JL L 2014 76
PCF8574
L L S S A
-
7/23/2019 ArduinoTutorial_V2
77/93
La liaision srie synchrone I2C : Inter Integrated Circuit bus Structure dune trame I2C.
Afficheur LCD
6/8/2014F ARALA F4GSC JL L 2014 77
#include
//============================================================// LCD librairie// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads// Configure les connections entre l'afficheur LCD et l'interface I2C// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol// Adresse I2C = 0x27//============================================================
#include
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup(){//--- Cration d'un objet liaison srieSerial.begin(9600);
//--- Cration d'un objet LCD comportant 4 lignes de 20 caractreslcd.begin(20,4);
//--- Positionne le curseur sur la premire ligne gauche
lcd.setCursor(0,0);//--- Affiche "Formation ARALA"lcd.print("Formation ARALA");
//--- Positionne le curseur sur la deuxime ligne gauchelcd.setCursor(0,1);
//--- Affiche "Mai 2014"lcd.print
}
void loop(){{//--- Attent l'arrive d'un caractreif (Serial.available()) {
//--- Tempo pour pour tre sur la transmission srie est terminedelay(100);
//--- RAZ de l'affichagelcd.clear();
//--- Lecture de tous les caractres reus et affichage sur le lCD
while (Serial.available() > 0) {//--- Affichage sur le LCDlcd.write(Serial.read());
}}
}}
-
7/23/2019 ArduinoTutorial_V2
78/93
6/8/2014F ARALA F4GSC JL L 2014 78
L I
L I
-
7/23/2019 ArduinoTutorial_V2
79/93
6/8/2014F ARALA F4GSC JL L 2014 79
L I
-
7/23/2019 ArduinoTutorial_V2
80/93
Exemple de programme nono-tche Changement la frquence du transceiver. Le microcontrleur rpte linfini la tche ci-dessous constitue de plusieurs
actions.
6/8/2014F ARALA F4GSC JL L 2014 80
Attente que lOM tourne le bouton du vernier
Lecture du pas dincrmentation
Modification de la frquence de loscillateur
Calcul de la frquence de loscillateur
Affichage de la nouvelle frquence
Attente du top indiquant quune seconde est coule
Affichage de lheure
Attente par scrutation logicielle dunedemande daction du type :
while !(bouton);
Tant que le bouton nest pas activ alorsattendre.
Attente par scrutation logicielle dunedemande daction du type :
While !(seconde);
Tant que la seconde nest pas coule alorsattendre
Le microcontrleur gre plusieurs actions mais squentiellement lune aprs lautre.
Tche Changement de Freq.
L I
-
7/23/2019 ArduinoTutorial_V2
81/93
Exemple de programme nono-tche Changement la frquence du transceiver.
6/8/2014F ARALA F4GSC JL L 2014 81
Attente que lOM tournele bouton du vernier
Lecture du pasdincrmentation
Calcul de la frquencede loscillateur
Modification de la
frquence de loscillateur
Affichage de lanouvelle frquence
Attente du top indiquantquune seconde est coule
Affichage delheure
temps
Ordonnancement des tches
t1 t2 t3 t4 t5 t6 t70
Temps total pour effectuer lensemble de la tche
Laction dattente force le processeur surveiller si lvnement est arriv:- Il ne peut rien faire dautre.
Tche Changement de Freq.
L I
-
7/23/2019 ArduinoTutorial_V2
82/93
Exemple de programme multitche Supposons que le rcepteur dtecte le dclenchement dun relais (R7) et quil soitncessaire de mesurer le niveau du signal reu pour lafficher.
Supposons que la tche Tache changement de freq prend 1 seconde.
Il faut donc attendre 1 seconde avant daller mesurer la force du signal reu etlafficher.
6/8/2014F ARALA F4GSC JL L 2014 82
Tche changement de freq
Tche mesure du Smtre
Tche changement de freq
Tche mesure du Smtre
0 1s 0.5s 2s 0.5s
temps
L I
-
7/23/2019 ArduinoTutorial_V2
83/93
Exemple de programme multitche Supposons que la tche mesure du Smtre soit la tche prioritaire et quelle doittre excute sans dlai.
Dun point de vue chronogramme cela ressemble ceci:
La tche Tche de changement de freq est une TACHE DE FOND qui est excute linfinitant que le microcontrleur na rien dautre faire.
La tche Tche de mesure du Smtre est une TACHE ou ACTION TEMPORAIRE considrecomme tant plus prioritaire que la tche de fond. Elle est dclenche par un vnement matriel(ici le squelch ).
6/8/2014F ARALA F4GSC JL L 2014 83
Tche changement de freq
Tche mesure du Smtre
0 1s 0.5s temps
La tche de fond est suspendue momentanment
Laction temporaire est excute en priorit
La tche de fond reprend son excution.
vnement matriel indiquant la rception dune station Squelch
L I
-
7/23/2019 ArduinoTutorial_V2
84/93
Exemple de programme multitche
Bien quil ny ait quune seule Unit de calcul, il y a bien deux tches diffrentes qui sontexcutes et gres par le matriel multitche.
La synchronisation est matrielle et non pas logicielle (technique de la scrutation
logicielle polling qui consomme du temps CPU).
Le mode dordonnancement des tches par interruption est une technique desynchronisation matrielle utilisant les ressources priphriques du microcontrleur ousources dinterruption.
Une ressource priphrique demande la CPU dinterrompre temporairement la tchede fond pour lui permettre dexcuter son traitement.
6/8/2014F ARALA F4GSC JL L 2014 84
T
T
T
R
Demande dinterruption
Tche de fond interrompue
Sources dinterruption:- Base de temps- Liaison srie- Entres/sorties-
L I
-
7/23/2019 ArduinoTutorial_V2
85/93
Exemple de programme multitche Exemples:
UART, liaison srie asynchrone Une interruption temporaire de la tche de fond est demande par lUART et indique quun
caractre a t reu ou que le caractre courant a t transmis.
Base de temps Une interruption temporaire de la tche de fond est demande par la base de temps pour
indiquer que le temps de rfrence est coul ( ex: 1 seconde).
Comparateur analogique Une interruption temporaire est demande par le comparateur analogique pour indiquer
que le signal dentre dpasser la tension de comparaison.
6/8/2014F ARALA F4GSC JL L 2014 85
PC UARTTx RxDemande dinterruption
A328
B A328Demande dinterruption
C
A A328
Demande dinterruption
Signal comparer
Tension de rfrence
L I
-
7/23/2019 ArduinoTutorial_V2
86/93
Les sources dinterruption de l ATmega328 24 sources dinterruption :
Interruptions externes: Interruptions lies aux entres INT0 (PD2) et INT1 (PD3).
Interruptions internes Base de temps:
Interruptions lies aux Timers 0, 1 et 2 (plusieurs causesconfigurables).
Fonctions analogiques: Interruption lie au comparateur analogique. Interruption de fin de conversion ADC.
Communication srie:
Interruptions du port srie USART. Interruption du bus TWI (I2C) et SPI.
6/8/2014F ARALA F4GSC JL L 2014 86
l l
L I
-
7/23/2019 ArduinoTutorial_V2
87/93
Comment utiliser les interruptions externes aveclArduino Uno?
Du point de vue logiciel
Autoriser une ou les sources dinterruption interrompre la tche de fond.
Indiquer le mode de dclenchement de la demande dinterruption, exemple activation sur frontou niveau.
Dcrire lalgorithme de traitement li la source dinterruption
int Squelch = 0; // Interruption externe 0 cble sur la pin 2 et a comme numro 0.void setup()
{..
//-- Laction temporaire StationRecue est excute pour chaque dtection de squelch (front montant (//-- RISING.) sur la pin 2.
attachInterrupt(SQUELCH, StationRecue, RSISING);
}
6/8/2014F ARALA F4GSC JL L 2014 87
Initialise et dfiniela source dinterruptionutilise.
Mode de dclenchement front ou niveau
Nom de laction temporaire
Numro de la Source dinterruption
L I
C ili l i i 0 1 ( i 2 d 3)?
-
7/23/2019 ArduinoTutorial_V2
88/93
Comment utiliser les interruptions externes 0 et 1 (pin 2 and 3)?
Du point de vue logiciel
La fonction attachInterrupt(param1, param2, param3) ncessite trois paramtres :
param1 : Quelle interruption est utilise.- Attention, cest le numro de linterruption et pas le numro de la pin:- Interruption externe 0 0 , Interruption externe 1 1;
param2 : Le nom de la fonction /algorithme de traitement.- Il ny a pas de paramtre passer ou retourner par cette fonction.
param3 : Quel est le type de dclenchement de linterruption.
Il y a quatre types de dclenchements possible :
LOW : Lentre est au niveau bas
RISING : Lentre passe dun niveau bas un niveau haut FALLING : Lentre passe dun niveau haut un niveau bas CHANGE : Lentre a chang de niveau. Elle est pass dun niveau bas vers un niveau haut ouinversement.
6/8/2014F ARALA F4GSC JL L 2014 88
L I
C t tili l i t ti t 0 t 1 ( i 2 d 3)?
-
7/23/2019 ArduinoTutorial_V2
89/93
Comment utiliser les interruptions externes 0 et 1 (pin 2 and 3)? Exemple: Mesurer le temps douverture du squelch dun rcepteur en utilisant linterruption
externe 0 (pin 2). Dclenchement de la mesure de la dure sur le front montant et arrt sur le front
descendant.
6/8/2014F ARALA F4GSC JL L 2014 89
Temp=1s?
sqOn==1?
Sec=sec+1
Afficher dure
Oui
Sec=0
Oui
Afficher dure
Non
Nonetat==1?
Afficher SQUELCH OFF
sqOn=0 sqOn=1
Afficher SQUELCH ON
Dclenchement
OuiNon
Dclenchement
Squelch
L I
C t tilis l s i t ti s t s ( i 2 d 3)?
-
7/23/2019 ArduinoTutorial_V2
90/93
Comment utiliser les interruptions externes (pin 2 and 3)? Exemple:
6/8/2014F ARALA F4GSC JL L 2014 90
# "LC."
LC (8,9,4,5,6,7);
I = 0; = L;
;
;
()
.(16,2);
.();
.C(0,0);.("I ");I(I,,IING);
()
=!;
()
.C(0,0);.(" ");
I(I,,IING);
.C(0,0);.("ELCH N ");
=1;
I(I,,FALLING);
.C(0,0);.("ELCH FF ");
=0;
()
(1000);
()
(==60) =0;
=++;
.C(0,1);.("= ");
.C(6,1);.(" ");
.C(6,1);.(,DEC);
=0;
.C(0,1);.("= ");
.C(6,1);.(,DEC);
L I
Comment utiliser les interruptions externes (pin 2 and 3)?E l
-
7/23/2019 ArduinoTutorial_V2
91/93
Exemple: Mesurer le temps douverture du squelch dun rcepteur en utilisant linterruption
externe 0 (pin 2). Dclenchement de la mesure de la dure sur le front montant et arrt sur le front
descendant.
Deuxime solution en associant une tche temporaire pour le front descendant etune autre pour le front montant.
Temp=1s?
sqOn==1?
Sec=sec+1
Afficher dure
Oui
Sec=0
Oui
Afficher dure
Non
Non
Afficher SQUELCH OFF
sqOn=0 sqOn=1
Afficher SQUELCH ON
DclenchementDclenchement
Squelch Squelch
L I
Comment utiliser les interruptions externes 0 et 1 (pin 2 and 3)?Exemple:
-
7/23/2019 ArduinoTutorial_V2
92/93
Exemple:
()
(1000);
()
.C(0,1);.("= ");
.C(6,1);.(" ");
.C(6,1);.(,DEC);
=++;
(>=60) =0;
=0;
.C(0,1);.("= ");
.C(6,1);.(,DEC);
()
.C(0,0);.("ELCH FF ");
=0;
I(I,,IING);
()
.C(0,0);.("ELCH N ");
=1;
I(I,,FALLING);
# "LC."
LC (8,9,4,5,6,7);
I = 0;
// N ' :
// 0> 2 , 1> 3
; // I .
; //
()
.(9600);.(16,2);
.();
.C(0,0);.("I ");
I(I,,IING);
L I
Comment utiliser les interruptions externes 0 et 1 (pin 2 and 3)?
-
7/23/2019 ArduinoTutorial_V2
93/93
Du point de vue logiciel
Autres fonctions
noInterrupts() : Les demandes dinterruption ne sont pas autorises et ne seront pasprises en compte.
interrupts() : Toutes les demandes dinterruption sont autorises condition que lesinterruptions utilises soient autorises individuellement.
detachInterrupt(numro_interruption): La demande dnterruption numro_interruptionnest plus prise en compte.
6/8/2014F ARALA F4GSC JL L 2014 93