Go Down

Topic: Projet " boite a heures" (Read 1 time) previous topic - next topic

BrUnO14200

Salut

Pour les LCD en I2C, j'utilise LiquidCrystal_I2C comme librairie ..
Ya une ligne pour la déclaration, une dans le setup et le reste est trés accessible ;) !

Projet aquaponique  :https://forum.arduino.cc/index.php?topic=677286.msg4584918#new

sharkou

petite question ?
j'ai se code :
Code: [Select]
  if (h100>=900 && h100<=2000)
    digitalWrite(7,HIGH);
  else
    digitalWrite(7,LOW);
     if (h100>=800 && h100<=900)
    digitalWrite(6,HIGH);
  else
    digitalWrite(6,LOW);
     if (h100>=2000 && h100<=800)
    digitalWrite(5,HIGH);
  else
    digitalWrite(5,LOW);
}

et après 20h00 toutes les LED son éteintes.
par contre si je fais 
Code: [Select]
  if (h100>=2000 && h100<=800)
    digitalWrite(7,HIGH);
  else
    digitalWrite(7,LOW);
     if (h100>=800 && h100<=900)
    digitalWrite(6,HIGH);
  else
    digitalWrite(6,LOW);
     if (h100>=900 && h100<=2000)
    digitalWrite(5,HIGH);
  else
    digitalWrite(5,LOW);
}

cela fonctionne bien.
la j'arrive pas a comprendre.

lesept

Comment un nombre peut-il être à la fois supérieur à 2000 et inférieur à 800 ?
Code: [Select]
if (h100>=2000 && h100<=800)
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

sharkou

Alors la j'arrive pas a comprendre la logique.
Code: [Select]
if (h100>=2000 && h100<=800)
 pour moi cela veux dire : si il est plus que 20h00 mais moins de 8h00 du matin la LED s'allume.

Pour cette partie du code :
Code: [Select]
if (h100>=900 && h100<=2000)
cela fonctionne bien , il est plus de 9h00 , mais moins de 20h00 la led reste bien allumé jusqu'a 20h00 , dans ma logique ( qui apparament est fausse ) l'autre led devrai s'allumer vue qu'il sera plus de 20h00 mais moins de 8h00.

En écrivant se message je commence a comprendre ou cela bloque, c'est vrai que avec un essai avec 
Code: [Select]
if (h100>=900 && h100<=950)
Cela parait logique , mais comment faire pour la led de 20h00 a 8h00 ? il doit avoir une astuce pour le 800 mais je peux pas mettre 8000 ni 0800 ni 1800 ?


kamill

Bonjour,

Il faut gérer le passage de 23h59 à 00h00
Dans ton cas il suffit de remplacer le et par un ou
Code: [Select]
if (h100>=2000 || h100<=800)

Comme ça ce sera allumé si supérieur à 20h, donc entre 20h et 24h ou inférieur à 8h donc de 0h à 8h

sharkou

Bonjour,

Un grand merci , je me rend compte que si j'ai pas les bases du langage je risque d'avoir de grosse difficulté a avancer.
Par contre depuis le changement d'heure j'ai ceci dans le moniteur 
Code: [Select]
18:42:35.201 -> 2020/10/26 19:41:21
18:42:36.233 -> 2020/10/26 19:41:22
18:42:37.219 -> 2020/10/26 19:41:23
18:42:38.248 -> 2020/10/26 19:41:24


Je comprend pas trop pourquoi ? en principe avec cette ligne 
Code: [Select]
RTC.adjust(DateTime(__DATE__, __TIME__));

Je devrai récupérer l'heure du pc lors du téléversement alors pourquoi j'ai c'est deux heures qui s'affiche?
De plus les leds suivent la logique de l'heure erroné.

kamill

#51
Oct 26, 2020, 06:55 pm Last Edit: Oct 26, 2020, 06:56 pm by kamill
Je pense que RTC.adjust(DateTime(__DATE__, __TIME__)); n'est pas appelé.
Vérifies la condition d'appel.

sharkou

Si j'ai bien compris , ma condition d'appel est :
Code: [Select]
if (RTC.lostPower()) {
    Serial.println("RTC is NOT running!");

 C'est bien le "if" qui fait la condition ?

kamill

Donc RTC.adjust() n'est appelé que si la rtc a perdu l'heure

Il faut que tu mettes RTC.adjust(DateTime(__DATE__, __TIME__)); en dehors du if puis tu téléverses le programme.
Ensuite tu le met en commentaire et tu retéléverses le programme.

sharkou

Bonsoir a tous.

Encore une fois merci pour votre aide.
Je pense que mes problèmesssss avec la RTC son régler.
J'ai voulu attaquer le LCD hier et encore un soucis 
Voici mon code : 
Code: [Select]
//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop()
{
}

juste pour faire un test bien sur, mon adresses I2C est correct mais sur mon LCD j'ai que des carré blancs , j'ai essayer de régler le contraste mais cela ne change rien.

BrUnO14200

Mets le lcd.print() dans le loop() avec un delay(100);  pour voir.  

Fais un test avec "Helloworld" : exemple de la librairie ;) 
Projet aquaponique  :https://forum.arduino.cc/index.php?topic=677286.msg4584918#new

sharkou

Je viens de faire ceci :
Code: [Select]
//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd
 
  // Print a message to the LCD.
  lcd.backlight();
 
}

void loop()
{lcd.print("Hello, world!");
delay (100);
}

 sans succès j'ai toujours que des carré blanc.

JMe87

#57
Oct 28, 2020, 11:34 am Last Edit: Oct 28, 2020, 11:35 am by JMe87
Bonjour,
as-tu essayes en positionnant le curseur avant d'ecrire comme dans les examples de la librairie que tu utilises :


Code: [Select]
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(2,1);
  lcd.print("Ywrobot Arduino!");
   lcd.setCursor(0,2);
  lcd.print("Arduino LCM IIC 2004");
   lcd.setCursor(2,3);
  lcd.print("Power By Ec-yuan!");
}


void loop()
{
}

sharkou

Je viens d'essayer sans plus de succès.

lesept

Peux-tu poster une photo recto - verso de ton module LCD, avec la référence si tu l'as ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Go Up