références

Sur cette page vous ne trouverez pas un tutoriel pour apprendre à programmer car de supers tutoriaux existent déjà. Ce n'est pas non plus une copie du manuel de référence qui est très bien fait et très clair.
Cette page serait plutôt un manuel par la pratique, un memo des situations, des problèmes rencontrés. L'idée est de trouver rapidement l'info que l'on cherche quitte à se tourner vers le manuel officiel pour approfondir.

Pour trouver tous les manuels de référence du langage le mieux est encore de partir de la source. arduino Référence

structure d'un programme

voici la structure de base d'un programme:

structure.pde
//commencer le code par des commentaires "le nom, la date, l'auteur, des infos sur le brochage des composants.
//les commentaires sont obligatoires sinon votre code s'autodétruira au bout de quelques mois ;-)
 
//inclusions des librairies externes. 
//ex:#include <LCD4Bit.h>   
 
//déclaration des variables, et des constantes. 
//ex:const int ledPin =  13;
 
void setup() { 
 
  //c'est la partie initialisation
  //on mettra ici les définitions des broches (ex:pinMode(13, OUTPUT);
  //les taux et paramètres pour le port série, l'initialisation d'écrans ldc, etc...
}
 
void loop() { 
  //la boucle principale
  //c'est ici que l'on met le corps du programme
 
 
}

commentaires

Commenter un programme est essentiel. Cela permet de partager son travail avec d'autres, de se rappeler ce qu'on a voulu dire/faire dans un code écrit 6 mois avant. En électronique il y a forcément une dépendance entre le code et la partie électronique. Parfois une ligne de commentaire suffit pour tout éclaircir (ex le brochage d'un ecran lcd).

Pour commenter une ligne ou un bloc ça ce passe comme en “C”.

commentaire
//voici la manière de commenter une ligne
/*
voici la manière
de commenter
tout un bloc */

variables

Bien utiliser les types de variables permet d'économiser de la mémoire car la mémoire du microcontroleur n'est pas infinie :-(

valeurs numériques

boolean

les variables boolean ne prennent que deux valeur (O ou 1) (false,true). (chaque variable boolean occupe 1 bit de mémoire)

 boolean running = false;
byte (ou uint8_t)

une variable byte stocke un entier unsigned sur 8-bit (valeur de 0 à 255). (chaque variable byte occupe 1 octet de mémoire)

 byte x = 10;

on peut utiliser uint8_t à la place de byte.

int

une variable int stocke un entier sur 2 octets (valeur de -32768 à 32767). (chaque variable byte occupe 2 octets de mémoire)

 int x = -10000;
unsigned int (ou uint16_t)

une variable unsigned int stocke un entier unsigned sur 2 octets (valeur de 0 à 65535). (chaque variable byte occupe 2 octets de mémoire)

 unsigned int x = 50000;

on peut utiliser uint16_t à la place de byte.

word

idem à unsigned int

long

une variable long stocke un entier sur 4 octets (-2147483648 to 2 147483647). (chaque variable byte occupe 4 octets de mémoire)

 long x = -1000000;
unsigned long

une variable unsigned long stocke un entier unsigned sur 4 octets (0 to 4294967295). (chaque variable byte occupe 4 octets de mémoire)

 unsigned long x = 1000000;
float

une variable float stocke une valeur décimale sur 4 octets (-3.4028235E+38 à 3.4028235E+38). (chaque variable byte occupe 4 octets de mémoire) les float ne peuvent excéder 6-7 décimales après la virgules. les variables décimales peuvent ne pas être complètement exactes. il peut en résulter d'étranges résultats, par ex: 6.0/3.0 peut ne pas être égal à 2.0. pour ces cas de figure le mieux est de comparer la différence entre le résultat et la valeur attendue. si la différence est infime on pourra déduire que le résultat est juste

petite précision inutile : en anglais (et pour tous les langages de programmation je crois) les décimales sont représentés par un “.” et non une “,”. ex 14,5 donnera 14.5

 float x = 4.5;
double

idem à float pour le moment “is currently exactly the same as the float”

caractères et chaînes de caractères

Les caractères sont codés sur un octet en utilisant les valeur ASCII.tableau des caractères ASCII

char

Déclare une variable de un octet de mémoire qui contient une valeur correspondant à un caractère. Les caractères unitaires sont écrits entre guillemets uniques, comme ceci 'A'

char myChar = 'A'; // déclare une variable char initialisée avec la valeur A
char myChar = 65;      // expression équivalente car la valeur ASCII de A est 65
chaîne de caractères

Les chaînes de caractères sont représentées sous forme de tableaux de variables de type char et se termine par un zéro. Les chaînes sont déclarées à l'intérieur de guillemet double (“) contrairement au caractères uniques (').

char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";

char myString[] = "Ceci est la première ligne"
" Ceci est la seconde ligne"
" etcetera"; //une methode pour entrer un chaîne sur plusieurs lignes
string

il existe aussi un objet string (à partir de la version 0019) qui permet de faire pas mal d'opération intéressantes avec des chaînes de caractères plus simplement qu'avec un tableau de caractère: on peut facilement concaténer des chaînes entre elles, rechercher ou remplacer une partie de la chaîne, et pleins d'autres trucs utiles…
en attendant de mettre des explications et des exemples voilà un lien vers la partie “string” de la doc strings

tableaux

voici les méthodes pour déclarer un tableau

int myInts[6];   //on déclare un tableau pouvant contenir 6 entrées
int myPins[] = {2, 4, 8, 3, 6};   //on déclare un tableau sans définir la taille
int mySensVals[6] = {2, 4, -8, 3, 2}; //on déclare un tableau pouvant contenir 6 entrées et l'on affecte les valeurs sur la même ligne
char message[6] = "hello"; // on déclare un tableau de 6 caractère (5 caractères + 1 caractère de fin de chaîne)

petite précision inutile: l'index du premier élément d'un tableau est “0” et non “1”. en clair dans l'exemple ci-dessus la valeur de mypins[0] est égal à 2, mypins[1] est égal à 4

pour attribuer une valeur à une entrée du tableau:

myPins[3] = 7;

pour accéder à une valeur sur un tableau:

x=myPins[3];

créer un tableau à 2 dimensions: on est souvent obligé d'imbriquer un tableau dans un tableau. voici un exemple avec un tableau à 2 dimensions.

const byte ROWS = 6; //four rows

const byte COLS = 6; //three columns

char keys[ROWS][COLS] = {
  {1,2,3,4,5,6},
  {7,8,9,10,11,12},
  {13,14,15,16,17,18},
  {19,20,21,22,23,24},
  {25,26,27,28,29,30},
  {31,32,33,34,35,36}
};

constantes

On peut définir des constantes dans le code. le nom de la constante sera remplacé par sa valeur au moment de la compilation. Contrairement à une variable les constantes ne peuvent pas être redéfinies. L'usage veut que les constantes soit écrites en MAJUSCULES, mais ce n'est pas obligatoire.

constante non typée

pour definir un constante non typé

#define PI 3.1415927;
constante typée
const float PI = 3.14159; 
constante prédéfini

arduino contient quelques constantes prédéfinies

  • HIGH et LOW. très utile pour donner l'état d'une sortie
  • true et false. parfait pour les variables de type boolean. c'est bizarre mais c'est en minuscule.
  • INPUT et OUTPUT. pour définir les broches en entrée sortie.cf pinMod()

prog/bases.txt · Dernière modification: 2016/05/17 04:22 par admin_memo