Go Down

Topic: rampe led diy 192w de djbouns (Read 628 times) previous topic - next topic

djbouns

Jul 09, 2014, 12:34 am Last Edit: Jul 09, 2014, 12:37 am by djbouns Reason: 1
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 : http://www.recifal-france.fr/200l-de-djbouns-t15825.html?hilit=djbouns
ma rampe : http://www.recifal-france.fr/rampe-led-diy-192w-de-djbouns-t18238.html?hilit=djbouns
Mes pompes doseuse : http://www.recifal-france.fr/boitier-balling-maison-de-80-t13110.html?hilit=boitier%20balling


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.
Code: [Select]
#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

djbouns

Bonsoir ,

Personne pour m'aider ou me dire ou trouver un code qui contient se dont j'ai besoin ?

B@tto

Salut,

y'a rien de compliqué : il te suffit de créer une variable qui ira de 0 à 2, s'incrémentant à l'appui sur "Valider". Après suivant la valeur de cette variable, l'appui sur "+" ou "-" incrémente ou décrémente la l'intensité de la couleur considérée
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

djbouns

oui y a rien de compliquer ... quand on connait ... je ne suis pas programmateur et je découvre au fur et a mesure ...
peut tu me transmettre un code utilisant tes dire que je le comprenne stp parsque tes explication ... j'ai pas compris.

Merci

B@tto

#4
Jul 10, 2014, 11:40 am Last Edit: Jul 10, 2014, 02:45 pm by B@tto Reason: 1
Code: [Select]

if(digitalRead(BValider)==LOW || digitalRead(BPlus)==LOW || digitalRead(BMoins)==LOW) {

if (digitalRead(BValider)==LOW) MaVariable^=1; //si Maviable était égale à 1 alors elle passe à zéro et inversement

if (digitalRead(BPlus)==LOW) PWM=1;
if (digitalRead(BMoins)==LOW) PWM=-1;

if(MaVariable) analogWrite(Blanc,constrain(PWMBlanc+PWM,0,250));
else  analogWrite(Bleu,constrain(PWMBleu+PWM,0,255));

while(digitalRead(BValider)==LOW || digitalRead(BPlus)==LOW || digitalRead(BMoins)==LOW);
delay(50);
}
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Artouste


...
ma rampe : http://www.recifal-france.fr/rampe-led-diy-192w-de-djbouns-t18238.html?hilit=djbouns
...


bonjour
petit aparté
j'ai lu ton topic sur "recifal"
tu a commandé en direct tes dissipateurs chez Seem en Normandie ?   :smiley-mr-green:

djbouns



...
ma rampe : http://www.recifal-france.fr/rampe-led-diy-192w-de-djbouns-t18238.html?hilit=djbouns
...


bonjour
petit aparté
j'ai lu ton topic sur "recifal"
tu a commandé en direct tes dissipateurs chez Seem en Normandie ?   :smiley-mr-green:


Non car pas de reponse de leur part
mais j'ai trouver mieux ... TME electronics super rapide et pas chere

djbouns


Code: [Select]

if(digitalRead(BValider)==LOW || digitalRead(BPlus)==LOW || digitalRead(BMoins)==LOW) {

if (digitalRead(BValider)==LOW) MaVariable^=1; //si Maviable était égale à 1 alors elle passe à zéro et inversement

if (digitalRead(BPlus)==LOW) PWM=1;
if (digitalRead(BMoins)==LOW) PWM=-1;

if(MaVariable) analogWrite(Blanc,constrain(PWMBlanc+PWM,0,250));
else  analogWrite(Bleu,constrain(PWMBleu+PWM,0,255));

while(digitalRead(BValider)==LOW || digitalRead(BPlus)==LOW || digitalRead(BMoins)==LOW);
delay(50);
}



Merci

Artouste



Non car pas de reponse de leur part
...

:smiley-mr-green:   :smiley-mr-green:
J'engueulerais la direction , la prochaine fois que je les rencontrerais  :smiley-mr-green:
pour l'anecdote , j'ai connu (en culottes courtes) la creation de cette société qui s'etait adossée par proximité à "l'usine Schlumberger locale" , usine où j'ai tenu en main mon premier "Weller" et tripoté (avec succes)  le  premier oscillo.
mais bon à 13/14 ans j'avais déjà mes entrées "privilegiées" là bas  8)

Go Up