Bonjour à tous,
Je suis en réalisation d'un boitier permettant de gérer une serre complète ( Système aquaponique dans la serre mais qui sera programmé plus tard ).
Jeune Noob dans le domaine de l'arduino j'aurais besoin de vos lumières.
Mon boitier se compose comme telle :
1 arduino Mega
1 LCD I2C 20x4
1 Horloge RT1302
1 DHT 11 ( Qui sera remplacer par un DHT22 quand il arrivera afin d'avoir également les T° négatives)
un Keypad 4x4
J'ai réussi à coder un petit bout de code, mais quand je veux mettre en route mon 1er mode ( appuie sur la touche 1 du keypad ) il faut que j'appuie une nouvelle fois sur la touche 1 pour lancer ma fonction qui ne se lance pas automatiquement. J'espere avoir été compris :o
Voici mon bout de code
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Key.h>
#include <Keypad.h>
#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args) write(args);
#else
#define printByte(args) print(args,BYTE);
#endif
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0};
RTC_DS1307 RTC;
LiquidCrystal_I2C lcd(0x27,20,4); //
int intracteur = 26;
int extracteur = 23;
int brasseur = 25;
int lampe_1 = 24;
int lampe_2 = 22;
const byte LIGNES = 4;
const byte COLONNES = 4;
// déclaration des des broches ---
const int L1=12;
const int L2=11;
const int L3=10;
const int L4=9;
const int C1=8;
const int C2=7;
const int C3=6;
const int C4=5;
//--- Définition des touches
char touches[LIGNES][COLONNES] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// tableaux de lignes et colonnes
byte BrochesLignes[LIGNES] = {L1, L2, L3, L4};
byte BrochesColonnes[COLONNES] = {C1, C2, C3, C4};
char touche; // variable de stockage valeur touche appuyée
byte colonne, ligne;
// --- Déclaration de l'afficheur
Keypad clavier = Keypad( makeKeymap(touches), BrochesLignes, BrochesColonnes, LIGNES, COLONNES );
bool runCro = false;
void setup() {
pinMode(extracteur,OUTPUT);
pinMode(17, OUTPUT);
digitalWrite(17, HIGH);
dht.begin();
Wire.begin();
RTC.begin();
delay(10);
RTC.adjust(DateTime(__DATE__, __TIME__));
delay(10);
colonne=0;
ligne=0;
lcd.init();
lcd.begin(20, 4);
delay(10);
// Test de l'afficheur
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("--------------------") ;
lcd.setCursor(0,1);
lcd.print("| Serre automatise |") ;
lcd.setCursor(0,2);
lcd.print("| V1 par Roms |") ;
lcd.setCursor(0,3);
lcd.print("--------------------") ;
delay(5000);
lcd.clear();
delay(10);
char touche = clavier.getKey();
}
void loop() {
int h = dht.readHumidity();
int t = dht.readTemperature();
DateTime now = RTC.now();
lcd.setCursor(15,0);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.setCursor(0,2);
lcd.print("Humidite :");
lcd.print(h);
lcd.print("%");
lcd.setCursor(0,3);
lcd.print("Temperature :");
lcd.print(t);
lcd.print(" C");
if(touche != NO_KEY)
{
if( touche == 'A')
{
runCro = true;
}
}
if(runCro == true)
{
lcd.setCursor(0,0);
lcd.print("Croissance :");
}
}
void cro()
{
int h = dht.readHumidity();
int t = dht.readTemperature();
if(t>23)
{
digitalWrite(extracteur, HIGH);
}
if(t<22)
{
digitalWrite(extracteur, LOW);
}
}
Merci d'avance de l'aide que vous pourrez m'apporter.