Plante connectée avec capteur d’humidité, écran digital et LED d’avertissement

Il y a quelques temps j’avais commandé un kit de démarrage Arduino qui contient un Arduino UNO et une quinzaine de capteurs et périphériques (température, humidité, RFID, bluetooth, LEDs, résistances, etc…) enfin bon, le kit complet pour démarrer et commencer quelques projets sympa. J’ai donc décidé d’utiliser ce qui me restait pour faire…

Le projet

Ce projet concerne donc la mise en place d’un capteur d’humidité, relié à une LED et un écran 4 digits / 7 segments. Cet ensemble permet donc d’avoir une « plante connectée » qui affiche le taux d’humidité de la terre sur l’écran et qui allume la LED rouge, synonyme d’avertissement si la terre est trop sèche : il faut arroser!

A propos de l’écran

La difficulté la plus importante que j’ai rencontré a été pour le branchement et la programmation de l’écran. Après avoir essayé plusieurs librairies sans succès, j’ai laissé tomber et je me suis tourné vers un bout de code chinois que j’ai trouvé au fin fond des résultats Google : http://www.cnblogs.com/kaixuanpisces/p/4542176.html. C’est un peu brouillon mais pour moi c’est le seul qui a fonctionné.

Connection de l’écran 4 digits / 7 segments : SH5461AS

screen_4digits_7segments_connection_SH5461AS

Premier et dernier projet que j’ai fait avec cet écran, il utilise 12 (DOUZE!) pins et c’est une vraie galère pour le faire fonctionner. Sinon, je n’utilise aucune librairie externe puisque toute la gestion de l’écran (allumage/extinction d’un segment, réinitialisation complet, etc…) est codée ci-dessous.

Le code

[javascript]
int y[8] = {1,2,3,4,5,6,7,8};
int d[4] = {12,11,10,9};

// Digital screen map
int digital[10][8] = {
{6,y[0],y[1],y[2],y[3],y[4],y[5]}, // 0
{2,y[1],y[2]}, // 1
{5,y[0],y[1],y[3],y[4],y[6]}, // 2
{5,y[0],y[1],y[2],y[3],y[6]}, // 3
{4,y[1],y[2],y[5],y[6]}, // 4
{5,y[0],y[2],y[3],y[5],y[6]}, // 5
{6,y[0],y[2],y[3],y[4],y[5],y[6]}, // 6
{3,y[0],y[1],y[2]}, // 7
{7,y[0],y[1],y[2],y[3],y[4],y[5],y[6]}, // 8
{6,y[0],y[1],y[2],y[3],y[5],y[6]} // 9
};

long n = 1;
int x = 100;
double del = 200000;

void setup()
{
// Serial init on 9600 baud
Serial.begin(9600);

pinMode(A0, INPUT); // Moisture sensor
pinMode(13, OUTPUT); // Led

// Initialize segments
for (int i=0;i<8;i++) {
pinMode(y[i],OUTPUT);
}

// Initialize digits
for(int i=0;i<4;i++) {
pinMode(d[i],OUTPUT);
}
}

void loop()
{
// Retrieve moisture sensor value
int SensorValue = analogRead(A0);
String sValue = String(SensorValue);

// Split sensor value to write specific number on digital screen
int first = sValue.substring(0, 1).toInt();
int secon = sValue.substring(1, 2).toInt();
int third = sValue.substring(2, 3).toInt();

// State: DRY
if (SensorValue < 1000 && SensorValue >= 600) {
digitalWrite(13, HIGH);
}

// State: HUMID
if (SensorValue < 600 && SensorValue >= 370) {
digitalWrite(13, LOW);
}

// State: WATER
if (SensorValue < 370) {
digitalWrite(13, LOW);
}

// Write digital screen numbers
clearLEDs();
pickDigit(2);
showDigital(first);
delayMicroseconds(del);

clearLEDs();
pickDigit(3);
showDigital(secon);
delayMicroseconds(del);

clearLEDs();
pickDigit(4);
showDigital(third);
delayMicroseconds(del);
}

/*
* This function clears all LEDs
*/
void clearLEDs(){
for(int i=0;i<8;i++) {
digitalWrite(y[i],LOW);
}
}

/*
* Select a digit (1 to 4)
*/
void pickDigit(int x){
for(int i=0;i<4;i++) { digitalWrite(d[i],HIGH); } if(x>4) {
x=4;
}
digitalWrite(d[x-1],LOW);
}

/*
* Switch ON specific segment to display the exected number
*/
void showDigital(int x){
for(int i=1;i<=digital[x][0];i++) {
digitalWrite(digital[x][i], HIGH);
}
}
[/javascript]

Pour ceux qui souhaitent contribuer ou télécharger la dernière version du code (celui-ci ne sera pas mis à jour), voilà le repository Github : https://github.com/joeybronner/moisturedigitalplant

77 Comments Plante connectée avec capteur d’humidité, écran digital et LED d’avertissement

  1. sbobet

    24271 660964Good day! This post could not be written any greater! Reading this post reminds me of my previous room mate! He always kept chatting about this. I will forward this write-up to him. Fairly certain he will have a great read. Thanks for sharing! 660646

    Reply
  2. Danmark körkort

    686968 670084This write-up is very appealing to thinking individuals like me. It is not only thought-provoking, it draws you in from the beginning. This really is well-written content. The views here are also appealing to me. Thank you. 306200

    Reply
  3. Pingback: fda hydroxychloroquine shortage

  4. Guns In Stock

    499822 551182Hi, Neat post. Theres a dilemma with your internet site in internet explorer, would test this IE nonetheless may be the market leader and a big portion of individuals will miss your amazing writing because of this difficulty. 207449

    Reply

Leave a Reply

Your email address will not be published.