bonsoir,
Apres plusieurs essai de rampe depuis environ 1 ans et demi... la découverte de l'arduino ... et son utilisation pour gérer mon aquarium récifal ( pompe doseuse, osmolation, éclairage, température, ventilation)
je me lance dans une rampe un peu plus sérieuse !
Sa conception est presque fini et je me mais a présent sur le nouveau code pour gérer celle ci.
voici le forum ou vous pouvez suivre l'évolution de mon bac et de la rampe et du boitier pompe dosseuse :
mon bac : 200l de Djbouns : présentation de vos bacs,picos et nanos
ma rampe : rampe led diy 192w de djbouns : le coin des bricoleurs
Mes pompes doseuse : boitier balling maison - de 80€ : le coin des bricoleurs
la difficulté que je rencontre pour se code est "seulement" l'utilisation de bouton poussoir (en pull up) pour modifier l'intessite de l'eclairage.
je comprend la gestion du code pour l'allumage progressif et afficher les info sur un ecran.
Ce que je "veut"
l'écran affiche l'heure sur la premier ligne et l'intensiter de la rampe bleu et blanc en pourcentage sur la deuxième.
Les boutons (un "+" un "-" un "valide") servent a choisir entre bleu et blanc et a augmenter ou diminuer l'intensiter maximal de la rampe. (la rampe étant sur dimentionner, je pence quelle seras a 60% bleu et 40% blanc). donc a modifier "bleumax" et "blancmax"
je vous colle le debut du code que je veut utiliser sachant que c'est le minimum.
#include "Wire.h"
#include "DS1307.h"
#include "LiquidCrystal.h"
LiquidCrystal lcd(7, 2, 3, 4, 5, 6);
int bleu1=8;
int bleu2=9;
int bleu3=10;
int blanc1=11;
int blanc2=12;
int valeurPWM1=0;
int valeurPWM2=0;
int minut;
int heure;
int seconde;
int time;
int bleumax;
int blancmax;
void setup() {
pinMode(bleu1, OUTPUT);
pinMode(bleu2, OUTPUT);
pinMode(bleu3, OUTPUT);
pinMode(blanc1, OUTPUT);
pinMode(blanc2, OUTPUT);
lcd.begin(16,2);
Serial.begin(9600);
bleumax = 100;
blancmax = 100;
}
void loop(){
//Récupération de l'heure du DS1307**********************************************************************************************
heure = RTC.get(DS1307_HR,true);
minut = RTC.get(DS1307_MIN,true);
seconde = RTC.get(DS1307_SEC,true);
time = (heure * 100) + minut;
//*****Controle des sorties eclairage *********
if ((time >= 930) && (time < 1020)){
valeurPWM1 = map(time, 930, 1019, 0, bleumax);
analogWrite (bleu1, valeurPWM1);
analogWrite (bleu2, valeurPWM1);
analogWrite (bleu3, valeurPWM1);
}
else if ((time >= 2230) && (time < 2300)){
valeurPWM1 = map(time, 2230, 2259, bleumax, 0);
analogWrite (bleu1, valeurPWM1);
analogWrite (bleu2, valeurPWM1);
analogWrite (bleu3, valeurPWM1);
}
else if ((time >= 1020 ) && (time < 2230)) {
analogWrite(bleu1, bleumax);
analogWrite(bleu2, bleumax);
analogWrite(bleu2, bleumax);
}
else {
analogWrite(bleu1, 0);
analogWrite(bleu2, 0);
analogWrite(bleu3, 0);
}
if ((time >= 930) && (time < 1020)){
valeurPWM2 = map(time, 930, 1019, 0, blancmax);
analogWrite (blanc1, valeurPWM2);
analogWrite (blanc2, valeurPWM2);
}
else if ((time >= 2230) && (time < 2300)){
valeurPWM2 = map(time, 2230, 2259, blancmax, 0);
analogWrite (blanc1, valeurPWM2);
analogWrite (blanc2, valeurPWM2);
}
else if ((time >= 1020 ) && (time < 2230)) {
analogWrite(blanc1, bleumax);
analogWrite(blanc2, bleumax);
}
else {
analogWrite(blanc1, 0);
analogWrite(blanc2, 0);
}
valeurPWM1=( valeurPWM1*100)/255;
valeurPWM2=( valeurPWM2*100)/255;
lcd.setCursor(0,0);
lcd.print(" ");
if (heure < 10)
{
lcd.print("0");
}
lcd.print(heure);
lcd.print("H");
if (minut < 10)
{
lcd.print("0");
}
lcd.print(minut);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" bleu ");
lcd.print(valeurPWM1);
lcd.print("% ");
delay (5000);
lcd.setCursor(0,1);
lcd.print(" blanc ");
lcd.print(valeurPWM2);
lcd.print("% ");
delay (5000);
}
Merci d'avance