SmartCampus2014/TutoArduino
Jump to navigation
Jump to search
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
- 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
- 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)
- 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)
- 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)
- 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)
- 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);
}
}
}