Difference between revisions of "SmartCampus2014/TutoArduino"
Jump to navigation
Jump to search
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | 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 = |
= Tutoriels de base = |
||
== Capteur de température == |
== 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 : |
||
+ | <big><source lang="c"> |
||
+ | |||
+ | /* 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 |
||
+ | } |
||
+ | </source></big> |
||
+ | |||
== Capteur de pression == |
== Capteur de pression == |
||
+ | [[File:montagePression.png | 200px| right | thumb | 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 : |
||
+ | <big><source lang="c"> |
||
+ | |||
+ | /* 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); |
||
+ | } |
||
+ | </source></big> |
||
+ | |||
== Capteur d'humidité == |
== 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 : |
||
+ | <big><source lang="c"> |
||
+ | |||
+ | /* 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); |
||
+ | } |
||
+ | </source></big> |
||
+ | |||
== Chenillard 5 LEDs == |
== Chenillard 5 LEDs == |
||
+ | [[File:montageChenillard.png | 200px| right | thumb | 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 : |
||
+ | <big><source lang="c"> |
||
+ | |||
+ | /* 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; |
||
+ | } |
||
+ | } |
||
+ | </source></big> |
||
= Applications = |
= Applications = |
||
== Thermomètre (capteur de température + afficheur 7 segments) == |
== Thermomètre (capteur de température + afficheur 7 segments) == |
||
− | [[File:montageThermo.png | 200px| |
+ | [[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 |
* Matériel : un capteur de température et un afficheur 7 segments |
||
* Connecter le matériel à la carte Arduino comme sur le schéma |
* Connecter le matériel à la carte Arduino comme sur le schéma |
||
Line 65: | Line 194: | ||
== Compteur (bouton-poussoir + afficheur 7 segments) == |
== Compteur (bouton-poussoir + afficheur 7 segments) == |
||
+ | [[File:montageCompteur.png | 200px| right | thumb | 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 [[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"> |
||
+ | |||
+ | /* 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; |
||
+ | } |
||
+ | } |
||
+ | </source></big> |
||
+ | |||
== Nombre de places disponibles dans un parking (capteurs de pression + afficheur 7 segments) == |
== Nombre de places disponibles dans un parking (capteurs de pression + afficheur 7 segments) == |
||
+ | [[File:montageParking.png | 450px| right| thumb | 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 [[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"> |
||
+ | |||
+ | /* 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); |
||
+ | } |
||
+ | </source></big> |
||
+ | |||
== Alerte de température (capteur de température + Speaker + LED) == |
== Alerte de température (capteur de température + Speaker + LED) == |
||
+ | [[File:montageAlarme1.png | 200px| right | thumb | 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 [[Media:pitches.zip | pitches.h]] |
||
+ | * Créer un nouveau Sketch et mettre le fichier pitches.h dans le même dossier |
||
+ | * Copier le code suivant : |
||
+ | <big><source lang="c"> |
||
+ | |||
+ | /* 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); |
||
+ | } |
||
+ | } |
||
+ | } |
||
+ | </source></big> |
Latest revision as of 16: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
- 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 (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)
- 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)
- 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);
}
}
}