Pages: [1]   Go Down
Author Topic: rampe led diy 192w de djbouns  (Read 573 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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
« Last Edit: July 08, 2014, 05:37:11 pm by djbouns » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir ,

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

Ales
Online Online
Faraday Member
**
Karma: 39
Posts: 3727
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 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
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Ales
Online Online
Faraday Member
**
Karma: 39
Posts: 3727
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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);
}
« Last Edit: July 10, 2014, 07:45:54 am by B@tto » Logged


Offline Offline
Faraday Member
**
Karma: 34
Posts: 5133
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Full Member
***
Karma: 0
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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
Logged

Offline Offline
Faraday Member
**
Karma: 34
Posts: 5133
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


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  smiley-cool
Logged

Pages: [1]   Go Up
Jump to: