
5. Le typage des variables:
En javascript, il suffisait de déclarer une variable « var bidule ; » avant de l’utiliser sans préciser son type qui
peut être : nombre entier, nombre décimal, chaine de caractère,…
Cela peut paraître plus simple mais gaspille de l’espace mémoire (pour pouvoir caser n’importe quoi dans un
tiroir il faut forcément prévoir au départ un grand tiroir !) et n’est pas sans poser de problème.
Par exemple : var bidule = 3 ; var machin = 5 ; Quel est le contenu de : var somme = bidule+machin ;
En langage Arduino, il faut indiquer le type de variable que l’on souhaite créer lorsqu’on la crée.
int variable1 est codée sur 16 bits et peut donc contenir un nombre entier compris entre –32768 et +32768.
float variable2 est codée sur 32 bits et peut contenir un nombre décimal (presque) quelconque.
boolean variable3 est une donnée logique qui ne peut prendre que 2 valeurs : « true » ou « false » ou encore
« high » et « low » ou même 1 ou 0.
Codée sur seulement 8 bits, elle convient pour les entrées ou sorties numériques (ou digitales).
char variable4 = 'A' ; peut contenir n’importe quel caractère alphanumérique (lettre, chiffre)
les tableaux (array) peuvent contenir n’importe quel type de variable défini précédemment.
Le nom de la variable est terminé par des crochets[] mais le type « array » n’est pas indiqué… il est
remplacé par le type de variable qu’il contient.
Exemples: int variable5[ ] = {2,0,1,3} ; ou char variable6[ ] = « bonjour » ;
On peut accéder à n’importe quel élément d’un tableau, sachant que les indices commencent par 0 à gauche.
Ainsi : variable5[2] = = 1 et variable6[3] = = 'j'
Les chaines de caractère (string) sont en fait considérées comme des tableaux contenant des caractères.
Les notations suivantes sont donc équivalentes :
char variable6[ ] = « bonjour » ; ou char variable6[ ] = { 'b' , 'o' , 'n' , 'j' , 'o' , 'u' , 'r' , '\0' } ;
Remarque: une chaine de caractère doit toujours être terminée par un caractère nul '\0' qui est pris en compte
dans le calcul de la longueur de la chaine. Si on oublie de le mettre, il est rajouté automatiquement !
char* variable7[ ] = { « message1 », « message2 », « message3 »} ; définit un tableau de chaines.
On obtient ainsi par exemple : variable7[0] = = message1
6. Entrées analogiques et sorties PWM:
5.1. Les entrées analogiques:
La carte Arduino Uno dispose de 6 entrées analogiques notées A0, A1,…A5 mais d’un seul convertisseur
analogique/numérique sur 10 bits. La durée d’une conversion est de l’ordre de 100µs.
La donnée numérique qu’il fournit après conversion est donc comprise entre 0 et …….
Il n’est pas nécessaire d’initialiser ces entrées analogiques qui n’ont que cette seule fonction.
int valeur4 = map(analogRead(4),0,1023,0,255) ; permet de lire la valeur numérique de la tension
analogique présente sur l’entrée A4 et de la transformer en une valeur comprise entre 0 et 255.
5.2. Les sorties analogiques (ou plutôt PWM):
La carte Arduino Uno dispose de 6 sorties (3,5,6,9,10 et 11) qui peuvent être utilisées en mode PWM, c'est-
à-dire en modulation de largeur d’impulsion.
Ce sont des signaux logiques binaires de fréquence constante (500Hz)
mais de rapport cyclique variable.
Lorsqu’un moteur ou une lampe est alimenté par ce type de tension,
tout se passe comme si il était alimenté par une tension continue
ajustable entre 0V (rapport cyclique= 0) et 5V (rapport cyclique=255).
Ces sorties doivent être initialisées comme des sorties digitales.
analogWrite ( 5 , 200 ) ; permet d’envoyer un rapport cyclique 200 sur la sortie digitale 5.