Quelques Notions pour commencer avec l’Arduino

Salut tous le monde,

Vous venez de recevoir votre premier Arduino !
Probablement un Arduino Uno, pour se lancer dans l'univers Arduino.

Je ne vous cacherais pas que ce document  (du moins ces plusieurs tutos en un), est issue d'un de mes anciens sites, que je n'ai pas eu le courage de maintenir, et j'ai donc voulu que son contenu ne soit pas perdu ^^

Quand vous maîtriserez bien ce superbe appareil, vous verrez qu'il existe une multitude d'Arduino, allant de la taille d'une pièce de monnaie à celle de votre écran ^^.

 

Première chose a faire, pour commencer  avec votre nouveau jouet :
Télécharger le soft et les drivers sur le site officiel

Vous risquez d'avoir quelques problèmes au niveau des drivers, cependant les forums sont bourrés de solution.
En général vous trouverez en moins de 5mn.

Bref une fois les utilitaires ad hoc installés, il ne vous reste plus qu'à brancher l'arduino et démarrer le logiciel !

Le logiciel devrait ouvrir un éditeur ressemblant à ceci.

Vous pourrez dès lors commencer à bosser !

Si vous connaissez le C ou le C++ ça ne devrait pas vous poser trop de problème.
Dans tous les cas, Arduino dispose de librairies assez simples à prendre en main !

Bon pour faire simple et sans rentrer dans la technique, vous allez brancher des modules sur votre arduino, led, emetteur infrarouge, bouton, ecran, ...
Chacun de ces "périphériques" necessite une alimentation, donc un fil + et un fil -

Exemple :

Cela dit avec ces 2 fils, vous ne pouvez pas faire grand chose à part alimenter un appareil (vous n'avez pas de controle dessus). Certains modules nécessiteront  plus de 2 fils, mais nous y viendrons plus tard, restons simples pour le moment.

L'Arduino va vous permettre via des "pins" d'envoyer des signaux électrique (je ne rentre pas dans la technique, j'explique sur cette page juste comment ça fonctionne en gros).

Donc sur votre arduino vous disposez de 13 pins "Digital" (en vert) et 6 "analogique" (en bleu).

Tous les endroits ou est inscrit "GND" dite vous que c'est le fil -
Vous avez donc différentes solutions pour le fil + selon la puissance attendue par votre module (5v, 3v, 9v, ..)

Une led pourra bosser avec du 5v, un recepteur bluetooth se portera mieux avec du 3v, ... En général quand vous achetez un module, les préco sont disponible sur la toile ;)

grace à l'arduino, nous allons pouvoir envoyer des signaux

genre :
Arduino -> envois 0 -> led s'eteint
Arduino -> envois 1 -> led s'allume

Voilà, jusque là, on a  à peu près" survolé les bases.

Prise en Main : 

Après les bases ont va passer un peu à la programmation :

 

Votre programme Arduino comportera systématiquement 2 fonctions :

 

void setup(){

}

void loop(){

}

 

la fonction setup, consistera à déclarer vos pins ^^
Genre on veut utiliser une led, donc on se pose la question, est-ce que la led va nous envoyer des informations ou est-ce que nous allons lui envoyer des informations.

Je m'explique, une led ne nous enverra pas d'information, en revanche nous allons lui envoyer des informations pour lui dire de s'allumer ou de s'éteindre.


Un bouton lui, aura donc un fonctionnement inverse, nous n'aurons pas d'interaction dessus, mais lui  nous enverra des infos "on vient de m'appuyer dessus"

 

Bref envoi d'infos = OUTPUT, réceptions des infos = INPUT

donc là, si on veut déclarer une led, que l'on va brancher sur le pins 13

pinMode(13, OUTPUT);

La fonction Loop() sera notre programme principal, l'arduino se contentera de répéter en boucle les instructions qui seront dedans.

La fonction delay(milliseconde) vous sera  très utile, pour éviter que votre programme ne s'emballe trop vite, et que vos créations ressemblent à un robot atteint de la maladie de parkinson !

 

 

Les leds :

Bon je vais plus vous laisser regarder une vidéo de youtube, étant donné que c'est la base des bases, et qu'il y a au moins 1 millions de tuto sur le sujet.

Je vous rassure, c'est le seul tuto ou je vous fais ce coup là ;)

 

 

 

 

L'IR (Infrarouge)

OK, Si vous êtes là c'est que vous arrivez parfaitement à allumer une led, et c'est cool.
Jusque là rien de très compliqué...

Maintenant on va commencer à utiliser des librairies.

Pour l'infrarouge, la lib en question est :

#include < IRremote.h >

A ajouter dans votre code bien sur.

Vous aurez besoin aussi de ce petit recepteur IR :
IR-pinout.jpg

Ci dessus les branchements à faire sur votre arduino :
OUT = le pins de votre choix
GND = bon on va pas redire ce qui à été déjà dit, GND = - donc vous devez juste le brancher là sur un banchement "GND" de votre arduino
VCC = 5 V (le +)

Un petit code simple à analyser :

#include < IRremote.h >

IRrecv irrecv(11);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}


Donc en premier on voit l'inclusion de la lib que l'on souhaite utiliser.

#include 

En deuxième on voit la declaration de notre Recepteur IR sur le pins 11

IRrecv irrecv(11);

Notre programme va donc utiliser notre recepteur IR et stocker les signaux reçus dans cette variable :

decode_results results;

On initalise :

Serial.begin(9600);
irrecv.enableIRIn();

Serial.begin(9600) est une sortie.
L'arduino n'ayant nativement pas d'ecran, il est utile pour nous d'avoir une sortie pour ecrire (allez jeter un oeil sur la partie debug)

irrecv.enableIRIn(); Active notre recepteur IR

Après je ne vous traduis pas, le programme se contente en boucle de receptionner (si il y a) des signaux IR, je vous invite à tester avec n'importe quelle télécommande infrarouge (lecteur cd, tv, ...)

Les Servos Moteurs :

La partie IR est sympa, surtout si vous voulez communiquez avec vos Furby ;) et avec un peu  d'imagination vous trouverez des tas de trucs rigolo a faire.

Nous allons maintenant attaquer la partie "Servo Moteur", grosso poilo merdo, vous allez apprendre à "contrôler une helice" en lui envoyant simplement le degré souhaité :

à la verticale -> 90°

à l'horizontale -> 180°

....
ça c'est cool genre, si vous voulez faire des robots, des ptits trucs dans le style

Bon moi je bosse avec des mini servo :

Et on peut faire des trucs dément ;)

 

3 fils assez simples pour les branchements à notre Arduino :

Marrons => GND

Rouge => 5V

Jaune => Pins de votre choix

Passons maintenant à la partie programmation :

La librairie avec laquelle nous allons bosser :

#include  < Servo.h >

 

La déclaration d'un Servo :

Servo monservo; 

 

L'initialisation d'un servo sur une pins (ici on utilise la 9):

monservo.attach(9); 

 

Et l'utilisation d'un servo (ici on lui dit, met toi à 90° ):
monservo.write(90);

 

Voili voilou, donc le petit programme pour faire vos essais :

// Test utilisation servomoteur SG90 //

#include  < Servo.h >
  
Servo monservo;  // crée l’objet pour contrôler le servomoteur 
  
void setup() 

  monservo.attach(9);  // utilise la broche 9 pour le contrôle du servomoteur 
  monservo.write(0); // positionne le servomoteur à 0° 

  
  
void loop() 
{  

monservo.write(0); 
  delay(1000); 
  monservo.write(70); 
  delay(1000); 
  monservo.write(150); 
  delay(1000); 
}

 

 

Le Bluetooth :

Nous revoilà pour un petit survol rapide de l'utilisation du module bluetooth, ici je prend le module bluetooth le moins cher actuellement sur le marché ~ 5$

Pour les branchements, si vous faite bien gaffe tout est noté sur l'image :

VCC => 5v / 3v (perso j'utilise du 3v)
GND => GND
TXT => dans vos 13 pins ca doit être le numero 0
RXD => dans les 13 pins c'est le numero 1

Votre arduino devrait ressembler à peu près à ça :

ModuleBluetooth

Bon l'intérêt assez funcki de la chose, c'est que pour le coup il n'y à pas besoin de librairie particulière.

Il se contente de lire sur la sortie 9600 :)

pour bosser rien ne vaut un bon cas concret :

Nous allons brancher notre module bluetooth.
Brancher une led sur le pin 13.
Installer sur notre téléphone le soft android Amarino, qui permet d'envoyer des données au module.

Notre programme va donc lire sur la sortie 9600 (notre module Bluetooth écrira directement dessus)
Si notre programme lit '1' il allume la led, si il lit '0' il l'éteint.

Le programme :

void setup(){ pinMode(13, OUTPUT);
Serial.begin(9600);
}

void loop(){
while(Serial.available()==0);
char c =Serial.read();
if(c =='1'){
digitalWrite(13, HIGH);
}
else if(c =='0'){
digitalWrite(13, LOW);
}
delay(500);
}

 

Les boutons

Un petit tours vite fait sur l'utilisation des boutons, (bien que je trouve ça moyen et démodé, je préfère bosser le controle avec l'ir ou le bluetooth ;) mais c'est personnel)

Les branchement à réaliser pour un bouton sont comme ceci :

Donc on alimente avec du 5v et du GND, et on branche une pins qui récupérera l'action.

Je vous explique notre bouton est alimenté, seulement nous souhaitons savoir si l'utilisateur presse ou pas le bouton, lorsque l'utilisateur presse le bouton, le courant arrive sur le fil de notre pins ^^ et donc en écoutant sur ce pins nous savons que l'utilisateur presse bien le bouton  :

Voilà, donc là dans le premier shema on voit la disposition d'un bouton, ainsi qu'une led.
Notre programme se chargera donc d'allumer la led quand on appuira sur le bouton ^^

Cette fois ci encore, pas de librairie particulière ;)

Ici on déclare les pins de notre bouton et de notre lumière :
const int buttonPin = 2;    
const int ledPin =  13; 

ici une constante qui sauvegardera si oui ou non on presse le bouton
int buttonState = 0;   

Bon là on déclare donc notre led comme une sortie (on lui envois des infos)
et notre bouton comme une entrée (on attends de lui des infos)

void setup() {
  pinMode(ledPin, OUTPUT);      
  pinMode(buttonPin, INPUT);     
}

Notre programme principale, bon je pense qu'il est clair pour tous le monde pas besoin de détailler :
void loop(){

  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {     
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    digitalWrite(ledPin, LOW); 
  }
}

Le programme dans son intégralité :

const int buttonPin = 2;    
const int ledPin =  13; 

int buttonState = 0;

void setup() {
  pinMode(ledPin, OUTPUT);      
  pinMode(buttonPin, INPUT);     
}

 

 

void loop(){

  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {     
    digitalWrite(ledPin, HIGH);  
  } 
  else {
    digitalWrite(ledPin, LOW); 
  }
}

 

Le Debug :

Bon dans tous les précédents tuto, normalement, vous avez vu plein de fois le mot "Serial" qu'est-ce donc

que ce vilain mot !

Et bien tout simplement notre moyen, je parle en mon nom tout seul de débuguer, et c'est utilisé aussi par

certain module tel que le module bluetooth.

dans notre fonction setup on l'initialise :

void setup(){

    serial.begin(9600);

}

Donc là on à décidé de bosser sur la sortie 9600 ;)
Maintenant pour le debug c'est simple :

dans votre programme ou vos fonctions,

il vous suffit de faire un  :

serial.println("Et voilà vous venez d'afficher du texte");

Maintenant ou et comment puis-je vois cette information.

Tout d'abord, votre arduino doit être branché en USB

Ensuite :

Et là normalement vous devriez avoir une petite fenetre qui s'ouvre et hop, vos messages défilent :

LErreur stk500_getsync() :

Bon dans tous les précédents tuto, normalement, vous avez vu plein de fois le mot "Serial" qu'est-ce donc

que ce vilain mot !

Et bien tout simplement notre moyen, je parle en mon nom tout seul de débuguer, et c'est utilisé aussi par

certain module tel que le module bluetooth.

dans notre fonction setup on l'initialise :

void setup(){

    serial.begin(9600);

}

Donc là on à décidé de bosser sur la sortie 9600 ;)
Maintenant pour le debug c'est simple :

dans votre programme ou vos fonctions,

il vous suffit de faire un  :

serial.println("Et voilà vous venez d'afficher du texte");

Maintenant ou et comment puis-je vois cette information.

Tout d'abord, votre arduino doit être branché en USB

Ensuite :

Et là normalement vous devriez avoir une petite fenetre qui s'ouvre et hop, vos messages défilent :

 

 

 

Laisser une réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et le GooglePolitique de confidentialité etConditions d'utilisation appliquer.