Le but de ce projet est de réaliser une interface qui permet d'afficher les valeurs des capteurs (capteurs grove) présent dans le FABLAB. Nous avons à notre disposition dans le FABLAB différent capteur tel que des capteurs de température, d'humidité…
Pour le montage à réaliser pour l'écran LCD, il vous faudra :
Le montage à réaliser et le suivant :
Ci-dessous, c'est le code pour afficher les valeurs de température et d'humidité sur l'écran LCD.
#include "Arduino.h" #include <LiquidCrystal.h> #include <DHT.h> #define DHTPIN A1 #define DHTTYPE DHT22 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); DHT dht(DHTPIN, DHTTYPE); void setup() { lcd.begin(16,2); Serial.begin(9600); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Capt Temp Humid"); lcd.setCursor(0, 1); lcd.print("H="); lcd.print(h); // Affichage de la valeur de la de l'humidité en % lcd.print("%"); lcd.print("T="); lcd.print(t); // Affichage de la valeur de la température en °C lcd.print("C"); delay(5000); }
Cliquez pour avoir la librairie dth.zip.
Ci-dessous, c'est le code pour afficher si il y a présence ou non d'un objet. Il y a le potentiomètre sur le module (à régler pour détecter plus ou moins une distance).
#include "Arduino.h" #include <LiquidCrystal.h> #define IR_DIST_DIGIT_PIN 6 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16,2); Serial.begin(9600); pinMode(IR_DIST_DIGIT_PIN,INPUT); } void loop() { lcd.clear(); lcd.setCursor(0, 0); if(digitalRead(IR_DIST_DIGIT_PIN)==LOW) { lcd.print("Somebody is here."); } else { lcd.print("Nobody."); } delay(500); }
Ci-dessous, c'est le code pour afficher la qualité de l'air.
#include "Arduino.h" #include <LiquidCrystal.h> #define AIR_QUAL_PIN A0 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int lect_air_qual_1 = 0; int lect_air_qual_2 = 0; int lect_air_qual_3 = 0; int moy_air = 0; void setup() { lcd.begin(16,2); Serial.begin(9600); pinMode(AIR_QUAL_PIN, INPUT); } void qualite_air() { lect_air_qual_1 = analogRead(AIR_QUAL_PIN); delay(500); lect_air_qual_2 = analogRead(AIR_QUAL_PIN); delay(500); lect_air_qual_3 = analogRead(AIR_QUAL_PIN); moy_air = (lect_air_qual_1 + lect_air_qual_2 + lect_air_qual_3)/3; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Qualite Air="); lcd.print(moy_air); lcd.setCursor(0,1); if (moy_air <= 45) { lcd.print("Outdoor air"); } else if(moy_air <= 72 && moy_air >= 46) { lcd.print("Indoor Imurity"); } else if(moy_air >= 73 && moy_air <= 110) { lcd.print("Bad qualite"); } else if(moy_air >= 111 && moy_air <= 140) { lcd.print("Very bad qualite"); } else if(moy_air >= 141) { lcd.print("Move fresh air"); } delay(5000); } void loop() { qualite_air(); }
Ci-dessous, c'est le code pour afficher la luminosité dans la pièce.
#include "Arduino.h" #include <LiquidCrystal.h> #define PHOTOPIN A3 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16,2); Serial.begin(9600); pinMode(PHOTOPIN, INPUT); } void photo_sensor(void) { float photo = 0.0; photo = (analogRead(PHOTOPIN) * 100.0) / 1023.0; Serial.println("Light : "); Serial.println(photo); Serial.print("\n"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Light : "); lcd.setCursor(8, 0); lcd.print(photo); lcd.print("%"); delay(1000); } void loop() { photo_sensor(); }
Ci-dessous, c'est le code pour afficher l'indice d'UV.
#include "Arduino.h" #include <LiquidCrystal.h> #define UVPIN A2 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16,2); Serial.begin(9600); pinMode(UVPIN, INPUT); } void UV_sensor(void) { float sensorValue; float sum=0; float indexUV = 0; for(int i=0; i<1024; i++) { sensorValue=analogRead(UVPIN); sum=sensorValue+sum; delay(1); } float meanVal = sum/1024; indexUV = -((meanVal*1000)/(4.3*-83))/21; Serial.print("UV index : "); Serial.print(indexUV); Serial.print("\n"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("UV index : "); lcd.setCursor(11, 0); lcd.print(indexUV); delay(20); } void loop() { UV_sensor(); }
Ci-dessous, c'est le code pour afficher la quantité de gaz (monoxyde de carbone). Il faut étalonner le capteur avec le potentiomètre présent sur le capteur pour avoir les bonnes valeur de monoxyde de carbone présent.
#include "Arduino.h" #include <LiquidCrystal.h> #define GASPIN A0 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16,2); Serial.begin(9600); pinMode(GASPIN, INPUT); } void gas_sensor (void) { float gas_value = 0.0; gas_value = (analogRead(GASPIN) * 100.0) / 1023.0; Serial.println("Gas CO :"); Serial.println(gas_value); Serial.print("\n"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Gas CO :"); lcd.setCursor(9, 0); lcd.print(gas_value); lcd.print("%"); delay(1000); } void loop() { gas_sensor(); }
Ci-dessous, c'est le code pour afficher les mouvements effectué.
#include <Wire.h> #include <paj7620.h> #include "Arduino.h" #include <LiquidCrystal.h> #define GES_REACTION_TIME 500 // You can adjust the reaction time according to the actual circumstance. #define GES_ENTRY_TIME 800 // When you want to recognize the Forward/Backward gestures, your gestures' reaction time must less than GES_ENTRY_TIME(0.8s). #define GES_QUIT_TIME 1000 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16,2); Serial.begin(9600); Serial.println("\nPAJ7620U2 TEST DEMO: Recognize 9 gestures."); error = paj7620Init(); // initialize Paj7620 registers if (error) { Serial.print("INIT ERROR,CODE:"); Serial.println(error); } else { Serial.println("INIT OK"); } } void gesture_sensor(void) { uint8_t data = 0, data1 = 0, error; error = paj7620ReadReg(0x43, 1, &data); if (!error) { switch (data) { case GES_RIGHT_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); Serial.println("Gesture : "); lcd.print("Gesture : "); if(data == GES_FORWARD_FLAG) { Serial.println("Forward"); lcd.print("Forward"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("Backward"); lcd.print("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Right"); lcd.print("Right"); } break; case GES_LEFT_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("Forward"); lcd.print("Forward"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("Backward"); lcd.print("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Left"); lcd.print("Left"); } break; case GES_UP_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("Forward"); lcd.print("Forward"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("Backward"); lcd.print("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Up"); lcd.print("Up"); } break; case GES_DOWN_FLAG: delay(GES_ENTRY_TIME); paj7620ReadReg(0x43, 1, &data); if(data == GES_FORWARD_FLAG) { Serial.println("Forward"); lcd.print("Forward"); delay(GES_QUIT_TIME); } else if(data == GES_BACKWARD_FLAG) { Serial.println("Backward"); lcd.print("Backward"); delay(GES_QUIT_TIME); } else { Serial.println("Down"); lcd.print("Down"); } break; case GES_FORWARD_FLAG: Serial.println("Forward"); lcd.print("Forward"); delay(GES_QUIT_TIME); break; case GES_BACKWARD_FLAG: Serial.println("Backward"); lcd.print("Backward"); delay(GES_QUIT_TIME); break; case GES_CLOCKWISE_FLAG: Serial.println("Clockwise"); lcd.print("Clockwise"); break; case GES_COUNT_CLOCKWISE_FLAG: Serial.println("anti-clockwise"); lcd.print("anti-clockwise"); break; default: paj7620ReadReg(0x44, 1, &data1); if (data1 == GES_WAVE_FLAG) { lcd.print("Wave"); } break; } } Serial.println("\n"); delay(100); } void loop() { gesture_sensor(); }