Pages: 1 2 [3] 4   Go Down
Author Topic: gestion aquarium recifal allumage progressif  (Read 8186 times)
0 Members and 1 Guest are viewing this topic.
Haute Normandie
Offline Offline
Full Member
***
Karma: 1
Posts: 139
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Après relecture de ton code tu devrais pouvoir t'en sortir avec les delay() et cela devrai même marcher puisque les plus gros que tu utilises sont delay(2000); soit deux secondes et au total de tout tes delay il y en a pour moins d'une minute donc ton heure ne devrait pas rester bloquée, et n'ayant pas de module RTC et d'ecran LCD difficile pour moi de tester ce qui ne vas pas.

Est ce que ton programme ne reste pas bloqué dans une condition pour une plage horaire, il faut que tu fasses des test en mettant des Serial.print("blabla"); pour voir ou cela coince.

Je ne connais pas la librairie LCD mais quand tu écris quelquechose sur l'ecran, si tu ne mets pas de delay cela s'efface tout de suite? il n'y a pas un buffer qui fait en sorte que quand tu envois du texte il reste affiché dans quel cas tu n'as pas besoin des delay();
Logged

Rien ne sert de chercher à tout savoir, mieux vaut savoir où tout chercher

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

Bonsoir,

Si je ne met pas de délais l’écran scintille et c'est illisible.
Avec les délais, le Temps que tout le loop soit fait l'heure n'avance pas et les fonctions associer a l'heure ne se déclenche quand la boucle recommence ...

Comment font les personne qui font défiler plusieurs message pour ne pas bloquer leur programme ?

Tu m'as déjà beaucoup aider et je t'en remercie, pour ne pas t’embêter plus longtemps je vais poster cette question sur le forum.

Merci encore
Logged

Haute Normandie
Offline Offline
Full Member
***
Karma: 1
Posts: 139
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suis désolé mais n'ayant pas le matériel pour tester le programme il m'est difficile de t'aider pour cela j'espère que tu auras ta solution enfin tu as déjà ton allumage progressif
Logged

Rien ne sert de chercher à tout savoir, mieux vaut savoir où tout chercher

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

bonjour,

voila tout marche correctement smiley
merci a tout se qui mon aider depuis le début.

voici mon code pour tout les germanophile

Code:
#include "LiquidCrystal.h"
#include "WProgram.h"
#include "Wire.h"
#include "DS1307.h"

/*
 sorti /entre Arduino
 Analog Pin 0 = Température Sensor
 Analog Pin 4 = SDA pour ds1307
 Analog Pin 5 = SCL pour ds1307
 Digital Pin 2 = LCD
 Digital Pin 3 = LCD
 Digital Pin 4 = LCD
 Digital Pin 5 = LCD
 Digital Pin 6 = power led
 Digital Pin 7 = ventilateur
 Digital pin 9 = rouge
 Digital pin 10 = blanc
 Digital Pin 11 = LCD
 Digital Pin 12 = LCD
 Digital Pin 8 = bleu uv
 */

//Configuration des Pin de cablage**********************

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = 0;
int power_led = 6;
int bleu_uv = 8;
int rouge = 10;
int blanc = 9;
int ventilateur = 7;
int time;
float temp;
int timerPWM = 0;
int valeurPWM=0;
float PWMStep = 0;

//Configuration des heures allumage/extinction ( format HHMM )**********************

int bleu_uv_on_time = 2030; 
int bleu_uv_off_time = 2359;
int ventilateur_on_temp = 26.75; 
int ventilateur_off_temp = 26.00;

int minut;
int heure;
int temps_perso;

//Configuration de l'heure ( pour modifier l'heure de votre Arduino, enlevez les /* et */ puis une foi le programe envoyé, remettez les )**********************

void setup() {
   /*
  RTC.stop();
  RTC.set(DS1307_SEC,30);           //réglage secondes
  RTC.set(DS1307_MIN,52);              //réglage minutes
  RTC.set(DS1307_HR,11);               //réglage heures
  RTC.set(DS1307_DOW,6);               //réglage jour de la semaine
  RTC.set(DS1307_DATE,15);             //réglage date
  RTC.set(DS1307_MTH,9);               //réglage mois
  RTC.set(DS1307_YR,12);                 //réglage année
  RTC.start();
  */
 
 //Configuration des entrées/sorties**********************
 
  pinMode(ventilateur, OUTPUT);  // digital pin ventilateur 1
  pinMode(bleu_uv, OUTPUT);  // digital pin pour bleu uv
  pinMode(blanc, OUTPUT);  // digital pin pour blanc
  pinMode(rouge, OUTPUT);  // digital pin pour rouge
  pinMode(power_led, OUTPUT);  // digital pin pour power led

lcd.begin(16,2);
Serial.begin(9600); 

}

void loop(){
 
   //Récupération de la température du LM35 ***************************************************************************************

 int reading = analogRead(sensorPin); 
  float voltage = reading * 5.52 / 1024;
  int temp = voltage * 100 ;
 
  //Récupération de l'heure du DS1307**********************************************************************************************

  heure = RTC.get(DS1307_HR,true); 
  minut = RTC.get(DS1307_MIN,false);
  temps_perso = (heure * 100) + minut;
 
 
  lcd.clear();
   lcd.setCursor(0,0);
   lcd.print ("  AQUA GESTION  ");
       lcd.setCursor(6,1);
  if (heure < 10)
  {
    lcd.print("0");
  }
  lcd.print(heure);
  lcd.print("H");
  if (minut < 10)
  {
    lcd.print("0");
  }
  lcd.print(minut);
  lcd.print(" ");   
   delay(5000);
    lcd.setCursor(0,1);
  lcd.print("       ");
  lcd.print(temp);
  lcd.print((char)223);
  lcd.print("      ");
  delay(5000);

   lcd.setCursor(0,0);
   lcd.print ("    GESTION     ");
  lcd.setCursor(0,1);
   lcd.print ("      lune      ");
   delay(1500);
   lcd.setCursor(0,1);
   lcd.print ("     soleil      ");
   delay(1500);
     lcd.setCursor(0,1);
     lcd.print ("  temperature   ");
   delay(1500);
    lcd.setCursor(0,1);
     lcd.print ("  niveau d'eau  ");
   delay(1500);
   lcd.clear();
 
    //Affichage heure******************************************************************************************
  lcd.setCursor(0,0);
  if (heure < 10)
  {
    lcd.print("0");
  }
  lcd.print(heure);
  lcd.print("H");
  if (minut < 10)
  {
    lcd.print("0");
  }
  lcd.print(minut);
  lcd.print(" ");
  delay (100);


 
  //Affichage température*****************************************************************************

  lcd.setCursor(13,0);
  lcd.print(temp);
  lcd.print((char)223);

  //****************ventilateur
   if(temp > ventilateur_on_temp){
    digitalWrite(ventilateur, HIGH);
      } 
  if(temp < ventilateur_off_temp){   
    digitalWrite(ventilateur, LOW);
  }
 

 
    //*****Controle des sorties eclairage *********
 
   //**on-off******* bleu uv *************
  if(bleu_uv_on_time > temps_perso  || bleu_uv_off_time <= temps_perso){
    digitalWrite(bleu_uv, LOW);
   }
  else{
   
    digitalWrite(bleu_uv, HIGH);
   }
   
    //***on-off***** rouge ***
 
if (heure ==  8)  {
    PWMStep = 255 / 59;
    timerPWM = minut-60;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (rouge, valeurPWM);
  lcd.setCursor(0,1);
    lcd.print(" + + ROUGE + +  ");
    delay(5000);
  }
 
 else if ((heure == 20) && (minut >30)) {
    PWMStep = 255 / 29;
    timerPWM = 30-minut;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (rouge, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" - - ROUGE - -  ");
    delay(5000);
 
  } 
 
  else if ((heure >= 9 ) && (heure < 21)) {
    analogWrite(rouge, 255);
   lcd.setCursor(0,1);
    lcd.print("  ROUGE     on  ");
    delay(5000);
  }
else if ((heure <= 21) && (heure > 8 )){
    analogWrite(rouge, 0);
  }
   
 //***on-off***** blanc ***
 
 if ((heure ==  8) && (minut >30)) {
    PWMStep = 255 / 29;
    timerPWM = minut-30;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (blanc, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" + + BLANC + +  ");
    delay(5000);
 
  }
 
 else if (heure == 20) {
    PWMStep = 255 / 60;
    timerPWM = 60-minut;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (blanc, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" - - BLANC - -  ");
    delay(5000);
  } 
 
  else if ((heure >= 9 ) && (heure < 21)) {
    analogWrite(blanc, 255);
    lcd.setCursor(0,1);
    lcd.print("  BLANC     on  ");
    delay(5000);
  }
else if ((heure <= 21) && (heure > 8 )){
    analogWrite(blanc, 0);
  }

//***on-off***** power led ***

  if ((heure ==  9) && (minut >3))  {
    PWMStep = 240 / 59;
    timerPWM = minut-60;
    valeurPWM = (int)(timerPWM * PWMStep)+ 15;
    analogWrite (power_led, valeurPWM);
   
lcd.setCursor(0,1);
    lcd.print(" + POWER led +  ");
    delay(5000);

  }
else if (heure == 20) { // entre 20:00 et 20:59:59
    PWMStep = 240 / 60;
    timerPWM = 60-minut;
    valeurPWM = (int)(timerPWM * PWMStep) + 15;
    analogWrite (power_led, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" - POWER led -  ");
    delay(5000);

  }
else if ((heure >= 10 ) && (heure < 21)) {
    analogWrite(power_led, 255);
lcd.setCursor(0,1);
    lcd.print(" POWER led   on ");
    delay(5000);

  }
else if ((heure <= 21) && (heure > 9 )){
    analogWrite(power_led, 0);
  }
       //****Affichage ventilateur ********

  lcd.setCursor(0,1);
  if(digitalRead(ventilateur) == HIGH)
  {
    lcd.println("ventilateur ON  ");
   delay(5000);
  }
  else
  {
    lcd.println("ventilateur OFF ");
    delay(5000);
  }
 }
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

slt ,Merci a toi pour le suivie de ton projet .
avec  je vais pouvoir essayer de faire mon propre programme mais comme toi je ne metrise pas vraiment la programmation mais a force ca avance ...@+
Logged

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

Bonjour,

toujours a la recherche d’amélioration a apporter a mon projet, j'ai commander un driver afin de faire varier mon ventilateur selon la temperature (car il fait bcp de bruit au max)
Quelqu’un peut me dire Command modifier mon code pour que le ventilateur s'allume a 25% a 26.5° et augmente progressivement pour être au max a 29.5°.
si cela est compliquer progressivement, faire des palier, 26.5° = 25%, 27° = 35%, 27.5° = 45%, 28° = 60°, 28.5°= 75%, 29°= 90%, au dessus = max.

Merci
Logged

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

Bonjour,

toujours a la recherche d’amélioration a apporter a mon projet, j'ai commander un driver afin de faire varier mon ventilateur selon la temperature (car il fait bcp de bruit au max)
Quelqu’un peut me dire Command modifier mon code pour que le ventilateur s'allume a 25% a 26.5° et augmente progressivement pour être au max a 29.5°.
si cela est compliquer progressivement, faire des palier, 26.5° = 25%, 27° = 35%, 27.5° = 45%, 28° = 60°, 28.5°= 75%, 29°= 90%, au dessus = max.

Merci
bonjour
il est où le code ?  smiley-mr-green

si la progression est (à peu pres) lineaire voir peut etre du coté du coté de la fonction map ?
http://arduino.cc/en/Reference/map
Logged

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

Bonsoir,

Ba ... le code il est juste au dessus ... je poursuis sur le même forum ... lol
si sa perturbe je peut en crée un nouveau mais pour ceux que sa intéresse cela permet d'avoir tout d'un coup.

bon... j'ai regarder la page que tu a fourni. j'ai compris le principe mais par contre comment faire le lien entre se code et ma température ???

merci
Logged

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

Bonsoir,

Ba ... le code il est juste au dessus ... je poursuis sur le même forum ... lol
si sa perturbe je peut en crée un nouveau mais pour ceux que sa intéresse cela permet d'avoir tout d'un coup.

bon... j'ai regarder la page que tu a fourni. j'ai compris le principe mais par contre comment faire le lien entre se code et ma température ???

merci


bonjour
si j'ai bien lu
reading= la valeur ana lue du LM35 = la T°
ton driver de ventilo, c'est quoi ? commandé comment ?
Logged

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

salut
voici le model de mon driver

http://www.eio.com/p-41276-sure-electronics-le-ll14113-high-power-10w-20w-15a-led-dc-driver.aspx

il seras commander par mon arduino lol
Logged

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

salut
voici le model de mon driver

http://www.eio.com/p-41276-sure-electronics-le-ll14113-high-power-10w-20w-15a-led-dc-driver.aspx

il seras commander par mon arduino lol
bonjour
c'est un driver pour LED en courant, ça fonctionnera peut etre avec ton ventilo, mais rien de moins sur !
tu l'a déjà utilisé dans cette application ?  , d'autres l'ont fait ? , ou tu es parti sur ce driver "comme ça" ?  smiley-mr-green
Logged

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

bonsoir
ces le meme driver que pour mes leds.
vue qu'il m'en reste un non utiliser je veux l'utiliser pour cela
Logged

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

bonsoir
pourquoi penser vous que sa ne marcheras pas ???
quelqu’un d'autre pour le code ???
Logged

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

bonsoir
pourquoi penser vous que sa ne marcheras pas ???
quelqu’un d'autre pour le code ???
bonjour
Je n'ai pas dit que cela ne marchera pas, j'ai dit qu'il n'est pas sur que cela fonctionne ou fonctionne de manière pérenne  smiley-mr-green
l'objet commandé (là le ventilo) n'etant pas l'objet initial (les leds) prevu pour etre commandé par ce driver.

alors retour sur le ventilo avant de passer aux tests  :   smiley-cool
ton ventilo est de quel type , quelle motorisation (ne pas confondre avec l'alimentation du moteur) : moteur brushless ? , simple moteur DC 2 poles , autres ? ,
Logged

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

Bonjour

il s'agit d'un ventilo 6cm 2 pole 12v dc 7w.
Je ne comprend pas trop pourquoi sa te questionne temps que sa.
mon driver dit "driver led" sert a faire varier mon 12v en fonction de ma sorti pwm 5v de mon arduino.
Que se soit des led ou un ventilo, le driver ne feras pas la différence et délivreras le courant demander non ?
Logged

Pages: 1 2 [3] 4   Go Up
Jump to: