SmartCampus2014/TutoArduino: Difference between revisions

From air
Jump to navigation Jump to search
Line 134: Line 134:


= Applications =
= Applications =
== Thermomètre (capteur de température + afficheur 7 segments) ==
[[File:montageThermo.png | 200px| right | thumb | 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 [[Media:LedControl.zip | 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 :
<big><source lang="c">
/* 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);
}
</source></big>

== Compteur (bouton-poussoir + afficheur 7 segments) ==
== Compteur (bouton-poussoir + afficheur 7 segments) ==
[[File:montageCompteur.png | 200px| right | thumb | Montage pour le compteur]]
[[File:montageCompteur.png | 200px| right | thumb | Montage pour le compteur]]

Revision as of 14:53, 7 March 2014

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

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 (100Ω) 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 (100Ω) 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);
    }   
  }    
}