Sam 30 Déc 2017 12:02
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC; // Declaration du module RTC
/*
Ports utilisés :
Analog Pin 4 = SDA pour ds3231
Analog Pin 5 = SCL pour ds3231
Digital Pin 9 = PWM Blanc
Digital Pin 11 = PWM Full spectrum
Digital pin 3 = relais pour le ventilo
Pour info :
PWM1 = intensité des blancs
PWM2 = intensité des full spectrum
relais = état du relais du ventilo des drivers
*/
int pwm1=9;
int pwm2=11;
int time;
int val_up=0;
int val_down=0;
int relais=3;
void setup()
{
Wire.begin();
RTC.begin();
Serial.begin(9600); //initialise la communication pour le DS1307
analogWrite(pwm1,0); //initialise à 0 les leds blanches
analogWrite(pwm2,0); //initialise à 0 les leds full spectrum
pinMode(relais, OUTPUT); //initialise le port du relais en sortie
digitalWrite(relais, LOW); //le relais est éteint à l'initialisation
}
void loop()
{
DateTime now = RTC.now(); // On récupère le temps actuel
val_up = (map (now.minute(), 0, 59, 0, 255)); /*permet d’attribuer une valeur d’intensité des leds croissante sur 59 minutes, comprise entre 0 et
255 (valeur maximale du signal PWM)*/
val_down = (map (now.minute(), 0, 59, 255, 0)); /*permet d’attribuer une valeur d’intensité des leds décroissante sur 59 minutes, comprise entre
255 et 0 (valeur minimale du signal PWM */
/*
Pour vérifier l'heure enlever les balises
Serial.print(now.hour(), DEC);
Serial.println();
Serial.print(now.minute(), DEC);
Serial.println();
delay(3000);
si necessaire mise à l'heure du module RTC avec l'exemple
DS 1307RTC
Set tim
*/
//****************LEDS FULL SPECTRUM***************************************************
/*
pin 11
plage horaire de 9h à 22h
*/
if (now.hour() == 9) //entre 9 h et 9h59
{
analogWrite (pwm2, val_up); //allumage progressif
}
else if (now.hour() == 21) //entre 21 h et 21h59
{
analogWrite (pwm2, val_down); // extinction progressive
}
else if ((now.hour() > 9) && (now.hour() < 21))//entre 10h et 20h
{
analogWrite(pwm2, 255); // allumage max
}
else
{
analogWrite(pwm2, 0);//le reste du temps les leds blanches sont éteintes
}
//****************LEDS BLANCHES*************************************************
/*pin 9
plage horaire de 11h à 21h
*/
if (now.hour() == 11) //entre 11:00:00 et 11:59:59
{
analogWrite (pwm1, val_up*0.8); //allumage progressif
}
else if (now.hour() == 20) //entre 20:00:00 et 20:59:59
{
analogWrite (pwm1, val_down*0.8); // extinction progressive
}
else if ((now.hour() > 11 ) && (now.hour() < 20))//entre 13:00:00 et 19:59:59 allumage max
{
analogWrite(pwm1, 255);
}
else
{
analogWrite(pwm1, 0);//le reste du temps les leds blanches sont éteintes
}
//****************Ventilateur ********************************************
if (pwm1 > 0) //Si les leds blanches sont allumées
{
digitalWrite(relais, HIGH);//relais ventilo ON
}
else
{
digitalWrite(relais, LOW);//relais ventilo OFF
}
if (pwm2 > 0)//Si les leds full spectrum sont allumées
{
digitalWrite(relais, HIGH);//relais ventilo ON
}
else {
digitalWrite(relais, LOW);//relais ventilo OFF
}
}
Mer 3 Jan 2018 21:57
/*
Copié sans vergogne sur le site Arduino, cuisine et compagnie
Mesure du taux d'humidité une fois par jour pour ne pas electrolyser les sondes
*/
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc; // Declaration du module RTC
/*
Ports utilisés :
Analog Pin A0 = sortie analogique capteur d'humidité
Digital Pin3 = alimentation capteur d'humidité
Digital Pin 4 = sortie Led rouge
Digital Pin 5 = sortie Led jaune
Digital Pin 6 = sortie Led verte
Digital Pin Pin 7 = sortie relais
*/
// ****atribution des ports***
int pinA =A0; // Pin Analogique du capteur
int Sensor = 3; // Pin d'alimentation du capteur
int ledR = 4; // Pin LED Rouge
int ledJ = 5; // Pin LED Jaune
int ledV = 6; // Pin LED Verte
int relaispompe=7; // Pin relais pompe
//**************************************************
void setup()
{
Wire.begin();
rtc.begin();
Serial.begin(9600); //initialise la communication pour le DS1307
pinMode(pinA,INPUT);
pinMode(Sensor,OUTPUT);
pinMode(ledR,OUTPUT); //initialise les leds
pinMode(ledJ,OUTPUT); //initialise les leds
pinMode(ledV,OUTPUT); //initialise les leds
pinMode(relaispompe,OUTPUT); //initialise le relais
}
//**************************************************
void loop()
{
//DateTime now = rtc.now(); // On récupère le temps actuel
//if ((now.hour() > 9) && (now.minute() < 01)) // a 9h01
{
digitalWrite(Sensor,HIGH);
delay(500);
float h=analogRead(pinA);
float taux = (1023.0-h)/7.0;
Serial.print(h);
Serial.print(" taux d'humidite = ");
Serial.println(taux);
led(taux);
digitalWrite(Sensor,LOW);
}
}
//****************************************************
void led(float taux)
{
digitalWrite(ledV,LOW);
digitalWrite(ledJ,LOW);
digitalWrite(ledR,LOW);
// digitalWrite(relaispompe,LOW);
if (taux > 70)
digitalWrite(ledV,HIGH);
else {
if (taux > 50)
digitalWrite(ledJ,HIGH);
else digitalWrite(ledR,HIGH);
}
}
Mar 9 Jan 2018 15:41
[code]
#include <Wire.h>
#include <BH1750.h>
BH1750 lightMeter;
int BH1750_address = 0x23; //adresse du BH1750
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,20,4); // adresse de l'ecran et definition 20 caracteres 4 colonnes
#define BH1750_POWER_DOWN 0x00
#define BH1750_POWER_ON 0x01
//*****************************************************
void setup(){
Serial.begin(9600);
Wire.begin();
lightMeter.begin();
Serial.println(F(" Test du BH1750"));
}
//***************************************************
void loop() {
lcd.init() ;
lcd.backlight();
uint16_t lux = lightMeter.readLightLevel();
Serial.print("Lux: ");
Serial.print(lux);
Serial.println(" lx");
delay(1000);
lcd.print("Lux: ");
lcd.print(lux);
delay(1000);
}
[/code]
Mar 9 Jan 2018 17:12
Mar 9 Jan 2018 17:50
Mer 24 Jan 2018 18:20
Mer 24 Jan 2018 18:36
Mer 24 Jan 2018 19:07
Ven 26 Jan 2018 22:06
Ven 26 Jan 2018 22:34
Mar 30 Jan 2018 23:01
Nanarf a écrit:J'ai une question pour les spécialistes, pour piloter un SSR DD il faut 12 mA, je compte en utiliser 4, les sorties de l'Arduino Mega vont supporter ou faut-il mieux passer par un shield moteur ?
Mer 31 Jan 2018 07:33
Dim 11 Fév 2018 17:52
Dim 11 Fév 2018 19:00
Ven 16 Fév 2018 21:38