Contrôleur de T°, Humidité avec pilotage manuel ou automatique

Les libraires sont les bonnes - il faut les installer correctement sans doute - cf tous les liens au début de mon post. Il faut aussi vous assurer d’avoir une version à jour de l’IDE

Désolé mais j'ai chargé depuis les liens du post et cela ne fonctionne pas.
Es t-il possible d'avoir tes librairies en .ZIP afin que je puisse les installer.
j'ai IDE 1.8.3
Merci

Vous les installez comment ?

Ça veut dire quoi « ça ne marche pas? »

La version en cours de l’IDE est 1.8.5

je télécharge les .zip et ensuite dans l'IDE je fais:
Inclure une bibliothèque ---> Ajouter la bibliothèque .ZIP...

Es ce qu'il faut absolument mettre à jour l'IDE en V: 1.8.5 ?
Merci

j'ai chargé l'IDE 1.8.5
les bibliothèques depuis les liens situés dans le début du tuto

et à la compilation j'ai les messages:
E:\ARDUINO\CROQUIS\LCD_RTC_TEMP_HUM_VENT\LCD_RTC_TEMP_HUM_VENT.ino: In function 'void setup()':

LCD_RTC_TEMP_HUM_VENT:696: error: no matching function for call to 'LiquidCrystal_I2C::begin()'

lcd.begin();

^

E:\ARDUINO\CROQUIS\LCD_RTC_TEMP_HUM_VENT\LCD_RTC_TEMP_HUM_VENT.ino:696:13: note: candidate is:

In file included from E:\ARDUINO\CROQUIS\LCD_RTC_TEMP_HUM_VENT\LCD_RTC_TEMP_HUM_VENT.ino:143:0:

C:\Users\airpopcie\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.h:58:8: note: void LiquidCrystal_I2C::begin(uint8_t, uint8_t, uint8_t)

void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS );

^

C:\Users\airpopcie\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.h:58:8: note: candidate expects 3 arguments, 0 provided

Plusieurs bibliothèque trouvées pour "LiquidCrystal_I2C.h"
Utilisé : C:\Users\airpopcie\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2
Non utilisé : C:\Users\airpopcie\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.1
Non utilisé : C:\Users\airpopcie\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master
Utilisation de la bibliothèque EEPROM version 2.0 dans le dossier: C:\Users\airpopcie\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20\libraries\EEPROM
Utilisation de la bibliothèque LiquidCrystal_I2C-1.1.2 version 1.1.2 dans le dossier: C:\Users\airpopcie\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2
Utilisation de la bibliothèque Wire version 1.0 dans le dossier: C:\Users\airpopcie\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.20\libraries\Wire
Utilisation de la bibliothèque RTClib version 1.2.0 dans le dossier: C:\Users\airpopcie\Documents\Arduino\libraries\RTClib
Utilisation de la bibliothèque OneWire version 2.3.3 dans le dossier: C:\Users\airpopcie\Documents\Arduino\libraries\OneWire
Utilisation de la bibliothèque DallasTemperature version 3.7.6 dans le dossier: C:\Users\airpopcie\Documents\Arduino\libraries\DallasTemperature
Utilisation de la bibliothèque SparkFun_Si7021_Breakout_Example prise dans le dossier : C:\Users\airpopcie\Documents\Arduino\libraries\SparkFun_Si7021_Breakout_Example (legacy)
Utilisation de la bibliothèque OneButton-master version 1.2.0 dans le dossier: C:\Users\airpopcie\Documents\Arduino\libraries\OneButton-master
exit status 1
no matching function for call to 'LiquidCrystal_I2C::begin()'
j'avoue ne pas savoir alles plus loin.
Merci de l'aide

Utilisé : C:\Users\airpopcie\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2
Non utilisé : C:\Users\airpopcie\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.1
Non utilisé : C:\Users\airpopcie\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master

-> il se peut que le compilateur ne prenne pas la bonne librairie LiquidCrystal_I2C, impossible à dire comme cela.

virez les toutes (mettez les dans un dossier temporaire sur le bureau) et réinstallez depuis Github

tapez clone on desktop, decompressez à la main le zip vous obetnez un dossier Arduino-LiquidCrystal-I2C-library-master, changez son nom en LiquidCrystal_I2C et mettez le dans

C:\Users\airpopcie\Documents\Arduino\libraries

quittez l'IDE et relancez le

Bonjour JML

tout d'abord, bravo et merci pour la qualité de ce partage bien fait et très documenté.

partant du principe qu'en étudiant le code et la façon de coder des autres passionnés, on apprends énormément de choses, je regarde de très près ton code et je bute sur une façon de faire que je ne connais pas.
pourrais tu éclairer ma lanterne : dans la fonction qui suit,
tu déclares qu'elle reçoit un boolean forceDisplay, d'accord, mais tu l'initialises !!! à false
puis, dans la if qui suit, tu testes si le boolean forceDisplay est "true" ???
ce if ne sera jamais vérifier ??? non ?
void displayConsigne(boolean forceDisplay = false)
{
int16_t c;

if (forceDisplay) {
lcd.setCursor(xVConsigne, yVConsigne);
lcd.write(lesParametres.ventConsigne);
lcdTemperature(lesParametres.tempConsigne, xTConsigne, yTConsigne);
lcdHumidite(lesParametres.humConsigne, xHConsigne, yHCons

je vais répondre à sa place (sans me planter j'espère) vu que j'utilise aussi ce type de notation : en fait cela permet de donner une valeur par défaut à la variable.

De la sorte il est possible d'appeler la fonction displayConsigne(); sans donner de paramètre, la variable vaudra donc false, valeur par défaut donnée dans la définition.
Ou alors en faisant : displayConsigne(true); et dans ce cas la variable prendra la valeur passée en paramètre (true). Et donc le if sera exécuté.

Ça permet d'avoir des fonctions utilisable simplement dans la plupart des cas, et avec des paramètres spécifiés explicitement dans certains cas particuliers.

Bravo bonne réponse !!

ok

merci à vous deux

hello JLM, encore une question sur une ligne de code que j'ai du mal à comprendre:

si j'ai (a?x:y) il faut comprendre si a, alors x sinon y.

maintenant avec ceci:
void ventilateur(commandeAppareil c)
{
if ((ventilateurOn ? MARCHE : ARRET) != c) { // si on change d'état
ventilateurOn = (c == MARCHE);

puis je dire si (VentilateurOn est =1 alors Marche sinon Arrêt)
on suppose que VentilateurOn est à 0 donc VentilateurOn=ARRET
donc le if devient : VentilateurOn = arret est il différent de C.
si on suppose qu'on a appelé la fonction avec le paramètre MARCHE
alors la condition du if est vérifiée et on entre dans l'accolade
et VentilateurOn =(c==Marche) devient VentilateurOn =1;
je pense que c'est bien comme ça qu'il faut interpréter ce code, mais cela me semble très compliqué par rapport à :
void ventilateur(commandeAppareil c)
{
if VentilateurOn==C) {faire ceci}
else{faire cela}

quel est l’intérêt de cette façon de coder ?

merci d'éclairer ma lanterne

Dans l’absolu c’est quasi pareil mais...

Je suis un adepte de la cohérence des types parce que j’ai horreur quand on mélange les torchons et les serviettes.

VentilateurOn est un booléen et c n’est pas un booléen, c’est un commandeAppareil

En conséquence les comparer va dépendre d’une promotion (standard au niveau du compilo) mais l’expression ternaire est la pour comparer c avec MARCHE ou ARRET sans avoir à dépendre d’une convention que 0 serait l’un et 1 l’autre.

Pourquoi est-ce utile (outre la satisfaction intellectuelle) ?

  • Par exemple si vos relais étaient actifs à HIGH au lieu de LOW, je n’ai qu’à changer la définition de MARCHE et ARRET et le code reste cohérent.
  • ça me permet d'introduire D’autres états, plus loin dans le code vous verrez qu’il y a un état « inconnu ». Je reste en contrôle de l’evolution De mon code
  • Si un jour vous utilisez des langages fortement typés genre SWIFT ou autres alors votre code ne fonctionnerait pas.. l’informatique allant dans cette direction autant prendre de bonnes habitudes tout de suite

OK, merci JML

Bonsoir JML, désolé de vous déranger avec mes aventures j'aurais juste une question. J'ai des modules à boutons de récup et je me demandais si je ne pouvais pas gardé celui avec 5 boutons afin de facilité la fixation sur la boite de dérivation ?

Seulement je vois qu'il y a 6 fils, donc les 5 pour les 5 boutons et lequelle pourrait aller au GND, je soupçonne celui au centre le 3eme a partir de gauche mais pas sûr ?

Désolé JML, merci d'avance.

bonsoir
pour des questions comme celle-ci qui n'ont rien à voir avec le sujet du post, il vaudrait mieux créer un nouveau sujet, ce serait bien plus clair.
quoi qu'il en soit, le schéma de ta platine semble être celui-ci : Screenshot_20171215_195703.png
pas forcément simple à réutiliser. mais il est sans doute possible de couper une piste et ressouder un fil entre deux poussoirs pour utiliser comme commun le premier fil de la nappe, avec le schéma c'est assez évident de voir ce qu'il faut modifier, je vous en laisse juge

hello, je t'avais préparé ça, mais notre ami bricofoy est passé avant moi

col18.jpg

Bonjour à tous ,
je me présente, William , débutant en arduino et passionné de réptiles .
je désirais réaliser ce montage , mais voici plusieurs jours que j'essaie de compiler le code sans y arriver.
une multitude de messages d'erreurs apparaissent .
j'ai essayé avec différentes version d'IDE , supprimé les bibliothèques et chargé celles des liens ,en vain.

voici la trés longue liste d'erreurs ...

si vous pouviez me mettre sur la bonne voie .

merci à tous .

William

Arduino : 1.8.4 (Windows 10), Carte : "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::write(unsigned char, unsigned char)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::write_bytes(unsigned char const*, unsigned int, bool)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::reset()'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::write_bit(unsigned char)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::read_bit()'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::read()'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::read_bytes(unsigned char*, unsigned int)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::select(unsigned char const*)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::skip()'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::depower()'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::reset_search()'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::OneWire(unsigned char)'

Plusieurs bibliothèque trouvées pour "OneWire.h"
Utilisé : C:\Users\william\Documents\Arduino\libraries\OneWire-master
libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

Non utilisé : C:\Users\william\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master
libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::OneWire(unsigned char)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::target_search(unsigned char)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::search(unsigned char*, bool)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::crc8(unsigned char const*, unsigned char)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::crc16(unsigned char const*, unsigned int, unsigned int)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\Arduino-Temperature-Control-Library-master\OneWire.cpp.o (symbol from plugin): In function `OneWire::write(unsigned char, unsigned char)':

(.text+0x0): multiple definition of `OneWire::check_crc16(unsigned char const*, unsigned int, unsigned char const*, unsigned int)'

libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Erreur de compilation pour la carte Arduino/Genuino Mega or Mega 2560

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

Virez la libraire OneWire que vous avez installé

Plusieurs bibliothèque trouvées pour "OneWire.h"
[color=red]Utilisé : C:\Users\william\Documents\Arduino\libraries\OneWire-master[/color]
libraries\OneWire-master\OneWire.cpp.o (symbol from plugin):(.text+0x0): first defined here

Il faut utiliser celle standard

Tout simplement ,
et en plus ça ne met plus de message d'erreur . :wink:
Merci beaucoup.

:wink: