SmartCampus2014/TutoArduino

From air
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Les tutoriels présents sur cette page ont été effectués sur une Arduino Leonardo et/ou sur une Arduino Galileo.

Pour voir les données affichées à l'aide d'un Serial.println, il faut ouvrir la console (Outils > Moniteur série).


Tutoriels de base

Capteur de température

  • Connecter le capteur à la carte Arduino -> 3 pins : + (5V), Digital Out (Pin 7), - (GND)
  • Créer un nouveau Sketch et copier le code suivant :
 
/* Capteur de température
Modifié par Laurène Guelorget le 28 Fev 2014 */

//Déclaration et initialisation des variables
float mesure=0; //Variable pour le stockage mesure retournée par le capteur
float temperature=0; //Variable pour le stockage de la température
int pinTemp = 7; //Pin analogique sur lequel la température est mesurée

// setup()
void setup() {
  Serial.begin(9600); // Initialisation du port série
}
 
// loop()
void loop() {
  mesure = analogRead(pinTemp);  //Lecture de la valeur fournie par le capteur de température
  temperature = mesure * 0.0625;    //Conversion en température (en degré Celsius)
           
  Serial.print("Temperature :");
  Serial.print(temperature); 
  Serial.println();
  delay(2000); //toutes les 2 sec
}

Capteur de pression

Montage pour le capteur de pression
  • Connecter le capteur à la carte Arduino comme sur le schéma
  • Créer un nouveau Sketch et copier le code suivant :
 
/* capteur de pression
Modifié par Laurène Guelorget le 26 Fev 2014 */

//Déclaration et initialisation des variables
int sensorPin = A0;    // Pin d'entrée du capteur

void setup() {
  Serial.begin(9600); // Initialisation du port série
}

void loop() {
  int sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  
  // boucle toutes les 0,5 sec
  delay(500);
}

Capteur d'humidité

  • Connecter le capteur à la carte Arduino -> 4 pins : A0, D0, - (GND), + (5V)
  • Créer un nouveau Sketch et copier le code suivant :
 
/* Capteur d'humidité dans le sol
Modifié par Laurène Guelorget le 28 Fev 2014 */

//Déclaration et initialisation des variables
int sensorPin = A0;    // Pin analog du capteur
int sensorValue = 0;  // valeur du capteur
int tmp;

void setup() {
   Serial.begin(9600); // Initialisation du port série
}

void loop() {
  sensorValue = analogRead(sensorPin);
  tmp = 1023 - sensorValue;
  sensorValue = tmp;
  Serial.print("Humidite = "); 
  Serial.println(sensorValue);
  Serial.println();
  delay(1000); 
}

Chenillard 5 LEDs

Montage pour le chenillard
  • Matériel : 5 LEDs
  • Connecter le matériel à la carte Arduino comme sur le schéma
  • Créer un nouveau Sketch et copier le code suivant :
 
/* Leds : chenillard avec 5 leds (pin 7 à 11)
Modifié par Laurène Guelorget le 26 Fev 2014 */

//Déclaration et initialisation des variables
boolean t = true;
int i = 9;

void setup()
{
  pinMode(11,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(7,OUTPUT);
}

void loop()
{
  digitalWrite(i,HIGH);
  delay(100);
  digitalWrite(i,LOW);
  if(t == true) { 
    i = i - 1;
  }
  else { 
    i = i + 1;
  }
  if(i < 7) {
    i = 8;
    t = false;
  }
  if(i > 11) {
    i = 10;
    t = true;
  }
}

Applications

Thermomètre (capteur de température + afficheur 7 segments)

Montage pour le thermomètre
  • But : afficher la température relevée toutes les 5 secondes avec un capteur de température.
  • Matériel : un capteur de température et un afficheur 7 segments
  • Connecter le matériel à la carte Arduino comme sur le schéma
  • Télécharger la librairie LedControl pour l'afficheur 7 segments
  • Créer un nouveau Sketch et ajouter la librairie LedControl (Croquis > Importer Bibliothèque > Add librairy)
  • Copier le code suivant :
 
/* capteur de température avec affichage 7 segments
Modifié par Laurène Guelorget le 26 Fev 2014
DataIn : pin 12 | CLK : pin 11 | LOAD/CL : pin 10 */

#include <LedControl.h>

//Déclaration et initialisation des variables
float mesure=0; //Variable pour le stockage mesure retournée par le capteur
float tension=0; //Variable pour le stockage de la tension 
float temperature=0; //Variable pour le stockage de la température
int pinTemp = 7; //Pin Data du capteur de température
LedControl lc=LedControl(12,11,10,1); //DataIn : pin 12, CLK : pin 11, LOAD/CL : pin 10
int i = 0; int tbis = 0; boolean minus = false;
char t[] = "0000"; 

void setup() {
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);
  Serial.begin(9600); // Initialisation du port série 
}

void loop() { 
  mesure = analogRead(pinTemp); //Lecture de la valeur fournie par le capteur de température
  temperature = mesure * 0.0625; //Conversion en température (en degré Celsius)

  Serial.print("Temperature :");
  Serial.print (temperature);
  Serial.println();
  if(temperature<0) {
    minus = true;
  }
  tbis = temperature * 100;
  sprintf(t,"%d",tbis);

  if(minus == true) {
    lc.setChar(0,6,'-',false); 
  }

  lc.setChar(0,5,t[0],false); 
  lc.setChar(0,4,t[1],true); 
  lc.setChar(0,3,t[2],false); 
  lc.setChar(0,2,t[3],false); 
  lc.setChar(0,1,' ',false); 
  lc.setChar(0,0,'C',false);
  delay(5000);
}

Compteur (bouton-poussoir + afficheur 7 segments)

Montage pour le compteur
  • But : afficher un compteur qui s'incrémente à chaque appui sur le bouton-poussoir.
  • Matériel : un bouton-poussoir, une résistance (100O) et un afficheur 7 segments
  • Connecter le matériel à la carte Arduino comme sur le schéma
  • Télécharger la librairie LedControl pour l'afficheur 7 segments
  • Créer un nouveau Sketch et ajouter la librairie LedControl (Croquis > Importer Bibliothèque > Add librairy)
  • Copier le code suivant :
 
/* compteur avec bouton poussoir et affichage 7 segments
Modifié par Laurène Guelorget le 26 Fev 2014
DataIn : pin 12 | CLK : pin 11 | LOAD/CL : pin 10 */

#include <LedControl.h>

//Déclaration et initialisation des variables
LedControl lc=LedControl(12,11,10,1); //DataIn : pin 12, CLK : pin 11, LOAD/CL : pin 10
const int buttonPin = 2; // Pin du bouton-poussoir
int buttonState = 0; // variable pour lire l'état du BP
int i = 0; int j = 0;
char t[] = "00000000"; 

void setup()
{
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);
  pinMode(ledPin,OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop()
{
  buttonState = digitalRead(buttonPin);           
  if (buttonState == HIGH) {
    if (j < 1) {
       j = 1;
       i++;
       Serial.print(i);
       Serial.println();
       
	   //pour l'instant, valeurs jusqu'à 999
       if (i < 10) {
         lc.setDigit(0,0,i,false);
       } else if (i < 100) {
         sprintf(t,"%d",i);
         lc.setChar(0,1,t[0],false); 
         lc.setChar(0,0,t[1],false); 
       } else if (i < 1000) {
         sprintf(t,"%d",i);
         lc.setChar(0,2,t[0],false); 
         lc.setChar(0,1,t[1],false);
         lc.setChar(0,0,t[2],false);
       }
    }
  } else {
     j = 0;
  }
}

Nombre de places disponibles dans un parking (capteurs de pression + afficheur 7 segments)

Montage pour le parking
  • But : afficher le nombre de places disponibles dans un parking selon l'appui ou non sur des capteurs de pression.
  • Matériel : 3 capteurs de pression, 3 résistances (100O) et un afficheur 7 segments
  • Connecter le matériel à la carte Arduino comme sur le schéma
  • Télécharger la librairie LedControl pour l'afficheur 7 segments
  • Créer un nouveau Sketch et ajouter la librairie LedControl (Croquis > Importer Bibliothèque > Add librairy)
  • Copier le code suivant :
 
/* Parking : capteur de pression et afficheur 7 segments
Modifié par Laurène Guelorget le 27 Fev 2014
DataIn : pin 12 | CLK : pin 11 | LOAD/CL : pin 10 */

#include <LedControl.h>

//Déclaration et initialisation des variables
#define C1 A0 // Pin analog du capteur 1
#define C2 A1 // Pin analog du capteur 2
#define C3 A2 // Pin analog du capteur 3

LedControl lc=LedControl(12,11,10,1); //DataIn : pin 12, CLK : pin 11, LOAD/CL : pin 10
int i = 3; // nombre de places dans le parking
char t[] = "0000"; 
int j1 = 0; int j2 = 0; int j3 = 0;

void setup() {
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);
  Serial.begin(9600); // Initialisation du port série 
}

void loop() {
  int sensorValue1 = analogRead(C1);
  int sensorValue2 = analogRead(C2);
  int sensorValue3 = analogRead(C3);
  
  if (sensorValue1 > 3) { // petite marge au cas où le capteur n'indique pas 0
    if (j1 < 1) {
      j1 = 1;
      i--;
      Serial.println("i1");
      Serial.println(i);
      Serial.println();
    }
  }
  else {
    if (j1 > 0) {
      j1 = 0;
      i++;
    }
  }
  
  if (sensorValue2 > 3) {
    if (j2 < 1) {
      j2 = 1;
      i--;
      Serial.println("i2");
      Serial.println(i);
      Serial.println();
    }
  }
  else {
    if (j2 > 0) {
      j2 = 0;
      i++;
    }
  }
  
  if (sensorValue3 > 3) {
    if (j3 < 1) {
      j3 = 1;
      i--;
      Serial.println("i3");
      Serial.println(i);
      Serial.println();
    }
  }
  else {
    if (j3 > 0) {
      j3 = 0;
      i++;
    }
  }
  
  Serial.println(sensorValue1);
  Serial.println();
  Serial.println(sensorValue2);
  Serial.println();
  Serial.println(sensorValue3);
  Serial.println();  
  
  Serial.println(i);
  Serial.println();
  Serial.println();
  
  lc.setDigit(0,0,i,false);
  
  // boucle toutes les 0,5 sec
  delay(500);
}

Alerte de température (capteur de température + Speaker + LED)

Montage pour une alerte de température
  • But : créer une alerte sonore (Speaker) et visuelle (LED) lorsque la température dépasse un seuil (ici, 25°C).
  • Matériel : un capteur de température, un Speaker et une LED
  • Connecter le matériel à la carte Arduino comme sur le schéma
  • Télécharger le fichier pitches.h
  • Créer un nouveau Sketch et mettre le fichier pitches.h dans le même dossier
  • Copier le code suivant :
 
/* Alarme led+speaker quand température au dessus d'un seuil
Modifié par Laurène Guelorget le 26 Fev 2014 */

#include "pitches.h"

//Déclaration et initialisation des variables
int melody[] = {NOTE_C4,NOTE_G3,NOTE_C4,NOTE_G3,NOTE_C4,NOTE_G3};
int noteDurations[] = {4,4,4,4,4,4}; 

float mesure=0; //Variable pour le stockage mesure retournée par le capteur
float temperature=0; //Variable pour le stockage de la température
int pinTemp = 7; //Pin analogique sur lequel la température est mesurée
int pinSpeaker = 8; //Pin du speaker
const int ledPin =  13; //Pin de la led

// setup()
void setup() {
  pinMode(ledPin, OUTPUT);  
  Serial.begin(9600); // Initialisation du port série
}
 
// loop()
void loop() {
  mesure = analogRead(pinTemp);  //Lecture de la valeur fournie par le capteur de température
  temperature = mesure * 0.0625;    //Conversion en température (en degré Celsius)
           
  Serial.print("Temperature :");
  Serial.print (temperature); 
  Serial.println();
  delay(2000);
  if(temperature>25) {
    for (int thisNote = 0; thisNote < 6; thisNote++) {
      int noteDuration = 1000/noteDurations[thisNote];
      tone(pinSpeaker, melody[thisNote],noteDuration);
      int pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);
      if(thisNote%2 == 0) { digitalWrite(ledPin, HIGH); }
      else { digitalWrite(ledPin, LOW); }
      noTone(pinSpeaker);
    }   
  }    
}