Tutoriel Arduino

Bonjour j'ai commencer a écrire un tutoriel en français pour le arduino et j'aimerais savoir se que vous en penser. Plein de correction sont a venir et d'autre page vont aussi venir s'y ajouter. (J'ai aussi demander a un professeur que je connais de le lire et de men donner des nouvelle alors d'ici quelque temps plein d'amélioration vont venir s'y ajouter...)

Qu'est-ce qu'est un Arduino ?

Arduino est un outil pour les ordinateurs qui peut resentir et contrôler plus du monde physique que votre ordinateur de bureau. Il s'agit d'une plate-forme open-source physique sur la base d'une simple micro-bord, et un environnement de développement pour l'écriture de logiciel.

Arduino peut être utilisé pour développer des objets interactifs, prendre des entrer d'une variété de commutateurs ou de capteurs, et de contrôler une variété de lumières, de moteurs et d'autres sorties physiques. Les projets peuvent être autonomes, ou ils peuvent communiquer avec les logiciels fonctionnant sur votre ordinateur (par exemple Flash, Processing, MaxMSP.) Les projets peuvent être assemblés à la main ou achetés pré-assemblé, l'IDE open-source peut être téléchargé gratuitement.

Un environnement de développement intégré (IDE) est un logiciel qui fournit des installations pour les programmeurs, pour le développement logiciel. Une IDE est normalement composé d'un :
Éditeur de code source
Compiler et / ou de l'interprète

(Si vous n'avez toujours pas installer le compileur aller sur http://arduino.cc/en/Main/Software )

Un langage de programmation est un langage informatique, permettant à un être humain d'écrire un code source qui sera analysé par une machine, généralement un ordinateur. Le code source subit ensuite une transformation ou une évaluation dans une forme exploitable par la machine, ce qui permet d'obtenir un programme.

D'un point de vue mathématique, un langage de programmation est un langage formel. Ce langage formel est construit sur un alphabet : les symboles utilisés dans le langage. Dans cet alphabet on trouve plusieurs choses :
des mots-clés,
des caractères correspondant à des opérateurs (par exemple =,<,& ...),
des lettres et chiffres,
d'autres caractères (comme les accolades, les crochets, ;_ ...).

Structure d'un programme

La meilleur technique pour apprendre un langage de programmation est en écrivant un programme. Alors voici notre premier programme.



Le premier panneau montre le code source de notre premier programme. Le second montre le résultat du programme une fois compilé et exécuté.

Le précédent programme est un programme que les apprentis programmeurs écrivent pour
la première fois, et son résultat est l'envoie de la celebre phrase "Hello World!". Il est l'un des programmes les plus simples qui peuvent être écrit en C++, mais il contient déjà les éléments fondamentaux de tous les programme C++. Nous allons examiner ligne par ligne dans le code que nous venons d'écrire.
// mon premier programme en C++ :

Il s'agit d'une ligne de commentaire. Toutes les lignes commençant avec deux barre oblique (//) sont considérés comme des commentaires et n,ont pas d'effet sur le comportement du programme. Le programmeur peut les utiliser pour des explications ou des observations dans le code source lui-même. Dans ce cas, la ligne est une brève description de ce que est notre programme.

void setup() :

Cette ligne correspond au début de la définition de la fonction principale. La fonction principale est le point par lequel tous les programmes C++ débute leur exécution, indépendamment de son emplacement dans le code source. Il n'est pas question de savoir si il existe d'autres fonctions avec d'autres noms définis avant ou après, les instructions contenues dans la définition de cette fonction seront toujours les premiers à être exécuté en tout programme C++. Pour la même raison, il est essentiel que tous les programmes C++ ont cette fonction principale (notez que loop() est obligatoire avec les systeme Atmel comme le arduino mais optionnel avec certains autres appareils comme un ordinateur ou setup seras remplacer par main() ).

Le mot setup est suivi dans le code par une paire de parenthèses (()). C'est parce qu'il s'agit d'une déclaration de fonction. En C++, ce qui différencie une fonction de déclaration des autres types d'expressions sont ces parenthèses qui suivent son nom. En option, ces parenthèses peuvent contenir une liste de paramètres.

Juste après ces parenthèses, on peut trouver le corps de la fonction principale a l'intérieur d'une paire d'accolade ({}). Le contenu de ces accolade, c'est ce que fait la fonction quand elle est exécuté.
Serial.begin(9600); Cette ligne est une déclaration C++. Une déclaration est une expression simple ou composée qui peut produire un certain effet.

Notez que la déclaration se termine par un point-virgule (;). Ce caractère est utilisé pour marquer la fin de la déclaration et, en fait, il doit être inclus à la fin de toutes les déclarations d'expression dans tous les programmes C++ (l'une des erreurs de syntaxe les plus communes est en effet d'oublier d'inclure un point-virgule après une déclaration).

Commentaires

Les commentaires sont les parties du code source ignorées par le compilateur. Ils ne font tout simplement rien. Leur but est uniquement de permettre au programmeur d'insérer des notes ou des descriptions incluses dans le code source.

Le C++ prend en charge deux façons d'insérer des commentaires :

// line comment
/* block comment */

Le premier d'entre eux, connu sous le nom de ligne de commentaire, ignore tout se qui se trouve après la paire de deux barre oblique(//) jusque à la fin de cette même ligne. Le second, connu sous le nom de bloc de commentaire, tout est inclus entre les /* */ avec la possibilité d'inclure plus d'une ligne.

Si vous avez des commentaires dans le code source de vos programmes sans l'aide des combinaisons de caractères //, /* ou */, le compilateur va les prendre comme s'ils étaient des
expressions C++, vraisemblablement causer un ou plusieurs messages d'erreur lorsque vous le compiler.
Indentation

L'indentation est l'utilisation d'espaces pour rendre le code lisible. Bien qu'elle n'a pas d'incidence sur le fonctionnement du programme elle est obligatoire, Sous peine de rendre le code illisible !

(n'est pas un programme juste un exemple correct d'indentation)
/i25.tinypic.com/33p3bm9.png

Le style K & R, est ainsi appelée parce qu'il a été utilisée dans le livre "Kernighan et Ritchie's The C Programming Language", est couramment utilisée en C++. Il garde la première accolade ouvrante sur la même ligne que la déclaration de contrôle, indente les déclarations dans les accolades, et met l'accolade de fermeture sur le même niveau d'indentation que la déclaration de contrôle (sur sa propre ligne). Tout au long des exemple ce style sera utiliser

EXCELLENTE initiative :sunglasses:

"sur la base d'une simple micro-bord", kesako ?

Il y a beaucoup d'expressions déroutantes, soit avec du mélange d'anglais (le schéma est d'ailleurs en anglais), soit qui est difficile à comprendre.

En fait, il y a déjà un tutoriel en français de très bonne facture: http://www.craslab.org/arduino/LivretArduinoFr06.pdf

Il faut donc que tu définisses ce que tu souhaites apporter de différent, par exemple à quel public tu t'adresses (parler de la notation K&R par exemple va saturer l'utilisateur lambda qui n'en a rien à secouer puisqu'il fait CTRL+T pour indexer le code automatiquement).

c'est plus de la traduction (merci Google) de documents existants que du vrai travail de rédaction ....

mais l'intention est louable....

un petit up pour ce post

car je suis tombé là-dessus

certes c'est en Anglais, mais c'est très très bien fait

et en constante évolution

http://earthshinedesign.co.uk/ASKManual/

L'utilité du premier exercice est tout à fait contestable. Nous avons dû écrire plusieurs lignes de code, les compiler, puis exécuter le programme qui en résulte simplement une simple phrase, écrite sur l'écran comme résultat. Il aurait certainement été beaucoup plus rapide de taper la phrase sortie par nous-mêmes. Toutefois, la programmation ne se limite pas seulement à écrire du texte. Pour aller un peu plus loin et devenir capable d'écrire des programmes qui exécutent des tâches utiles qui vont vraiment faire un travail utile, nous avons besoin d'introduire le concept de variable.

Imaginons que vous conserver le numéro 5 dans votre mémoire, et puis je vous demande de mémoriser le numéro 2 en même temps. Vous avez deux valeurs différentes stockés dans votre mémoire. Maintenant, si je vous demande d'ajouter 1 pour le premier numéro, vous devriez conserver les numéros 6 (qui est 5 +1) et 2 dans votre mémoire. Des valeurs que nous pourrions par exemple soustraire et obtenir comme résultat 4.

L'ensemble du processus que vous venez de faire avec votre mental est une comparaison de ce que peut faire un Arduino avec deux variables. Le même processus peut être exprimé en C++ avec le jeu d'instructions suivantes :

a = 5;
b = 2;
a = a + 1;
result = a - b;

De toute évidence, il s'agit d'un exemple très simple, puisque nous avons seulement utilisé deux petites valeurs, mais que votre arduino peut en stocker des centaines de ces nombres en même temps et mener des opérations mathématiques avec eux.

Chaque variable a besoin d'un identificateur qui le distingue des autres, par exemple, dans le code précédent les variables identifiants sont a, b et résultat, mais nous pourrions les avoir appelé les noms que nous avons voulu inventer, dans la mesure où ils sont de valables identifiants.

Identifiant :

Un identifiant valide est une séquence d'une ou de plusieurs lettres, chiffres ou caractères de soulignement (). Ni les espaces, ni signes de ponctuation ou les symboles peuvent faire partie d'un identifiant. Seules les lettres, chiffres et caractères de soulignement simple est valide. En outre, les identificateurs de variables doivent toujours commencer par une lettre. Ils peuvent aussi commencer par un soulignement (), mais dans certains cas, certain peuvent être réservé aux mots-clés spécifiques ou compilateur externe. En aucun cas, ils peuvent commencer par un chiffre.

Une autre règle que vous avez à prendre en compte lors d'inventer vos propres identifiants est qu'ils ne peuvent pas correspondre à un mot clé du langage C++, ni de votre compilateur spécifiques, qui sont des mots-clés réservés. Les mots clés réservés sont Ex : bool, char, class, const, double, else, extern, false, float, for, if, int, long, return, short, signed, sizeof, true, void, volatile, while

Très important : Le langage C++ est "case sensitive". Cela signifie que l'identifiant écrit en lettres capitales n'est pas équivalente à une autre avec le même nom mais écrit en minuscules. Ainsi, par exemple, la variable Resultat n'est pas le même que resultat ou la variable RESULTATS. Ces trois variables sont des identifiants.

Les types de données fondamentaux :

Lors de la programmation, nous stockons les variables dans la mémoire de notre arduino, mais l'arduino se doit de savoir quel type de données que nous voulons conserver, car il ne va pas occuper la même quantité de mémoire pour stocker un nombre simple que de stocker une simple lettre ou un grand nombre, et ils ne seront pas interprétés de la même façon.

La mémoire des ordinateurs et du arduino est organisée en octets. Un octet est le montant minimum de la mémoire que nous pouvons gérer en C++. Un octet peut stocker une quantité relativement faible de données: un seul caractère ou d'un petit entier (généralement un entier compris entre 0 et 255). En outre, l'arduino peut manipuler plus de types de données complexes qui des regroupement de plusieurs octets, comme les numéros ou les non-entiers.

Ci-dessous, vous avez un résumé des types de données fondamentales en C++, ainsi que la gamme de valeurs qui peuvent être représentés avec chacun d'eux :

*Les valeurs de la taille et des valeur maximum et minimum dépend du système que le programme est compilé pour. Les valeurs indiquées ci-dessus sont ceux trouvés sur les systèmes Atmel. Mais pour d'autres systèmes, la spécification est que les int a la taille naturelle suggérée par l'architecture du système et les trois types entier char, int et long chacun doit être au moins aussi grande que la précédente, avec char étant toujours 1 octet en taille. La même chose s'applique à la virgule flottante de type float.

Déclaration de variables :

Pour utiliser une variable en C++, il faut d'abord la déclarer en précisant le type de données qui nous voulons qu'elle soit. La syntaxe pour déclarer une nouvelle variable est d'écrire le spécificateur de type de données voulu (comme int, bool, float ...), suivi par un identificateur de variable valide. Par exemple :

int a;
float mynumber;

Il s'agit de deux déclarations de variables valides. Le premier déclare une variable de type int avec l'identifiant a. Le second déclare une variable de type float avec l'identifiant MyNumber. Une fois déclarée, l'une des variables MyNumber et a peut être utilisé dans le reste de leur champ d'application dans le programme.

Si vous allez à déclarer plus d'une variable du même type, vous pouvez déclarer la totalité d'entre eux dans une seule déclaration par la séparation de leur identifiant par des virgules. Par exemple :

int a, b, c;

Cette déclare trois variables (a, b et c), tous de type int, et a exactement le même sens que :

int a;
int b;
int c;

Les entiers de type char, short, int et long peuvent être signées ou non, en fonction de la gamme de numéros nécessaires pour être représentés. Signé peuvent représenter deux types de valeurs positives et négatives, alors que les types non signés peuvent seulement représenter des valeurs positives (et zéro). Cela peut être spécifié en utilisant le spécificateur soit signed ou unsigned le spécificateur avant le nom du type. Par exemple:

unsigned int A;
signed int B;

Par défaut, si l'on ne précise pas signé ou non signé la plupart des compilateur prendront le type signé, donc au lieu de la deuxième déclaration ci-dessus on aurait pu écrire :

int B;

avec exactement le même sens (avec ou sans le mot-clé signed)

Pour voir a quoi ressemblent des déclarations de variables en action dans un programme, nous allons voir le code de l'exemple sur votre mémoire proposé au début de cette section :

// Utiliser des variables

void setup()
{
&amp;nbsp; Serial.begin(9600);
  delay(1000);
  
  // declarer les variables:
  int a, b;  
  int result;

  // calcul:
  a = 5;
  b = 2;
  a = a + 1;
  result = a - b;

  // envoie le résultat:
  Serial.println(result);
}

void loop(){
}

Ne vous inquiétez pas si quelque chose d'autre que la déclarations de variable semble un peu étrange pour vous. Vous allez voir le reste en détail dans les prochaines sections.

Une variable peut être soit de portée globale ou locale. Une variable globale est une variable déclarée dans le corps principal du code source, en dehors de toutes les fonctions, tandis qu'une variable locale est déclarée dans le corps d'une fonction ou d'un bloc.

Les variables globales peuvent être utiliser à partir de n'importe où dans le code, même à l'intérieur de fonctions.

La portée des variables locales est limitée au bloc ci-joint en accolades ({}), où elles sont déclarées. Par exemple, si elles sont déclarées au début du corps d'une fonction (comme dans la fonction setup()), leur champ d'application est le point entre sa déclaration et la fin de cette fonction. Dans l'exemple ci-dessus, les variables locales déclarer dans setup() ne pourait être accessible à partir de loop().

Initialisation de variables

Lors de la déclaration d'une variable, sa valeur est par défaut
indéterminée. Mais si vous voulez une variable pour stocker une valeur concrète au même moment où elle est déclarée. Pour ce faire, vous pouvez initialiser la variable. Il y a deux façons de le faire en C + +:

La première, connue sous le nom de c-like, se fait en ajoutant un signe égal suivie de la valeur à laquelle la variable sera initialisée:

type identifiant = valeur_initiale;

Par exemple, si nous voulons déclarer une variable int appelée a initialisé d'une valeur de 0 à l'instant où elle est déclarée, nous pouvons écrire :

int a = 0;

L'autre façon d'initialiser des variables, connu en tant que constructeur d'initialisation, est fait en joignant la valeur initiale entre parenthèses(()) :

type identifiant(valeur_initiale);

Par exemple :

int a(0);

Les deux manières d'initialiser des variables sont valides et équivalent en C++.

// Utiliser des variables

void setup()
{
  Serial.begin(9600);
  delay(1000);

  // declarer les variables:
  int a = 5;
  int b(2);  
  int result;

  // calcul:
  a = a + 3;
  result = a - b;

  // envoie le résultat:
  Serial.println(result);
}

void loop(){
}