Go Down

Topic: projet couveuse ventilée (Read 24344 times) previous topic - next topic

Artouste


bonjour,
alors pour revenir au dht21, il faut lui retirer 1C pour qu'il soit juste.

sinon pour les couveuses semi pro, la sonde est une dallas, qui elle équipe les stations météo semi pro et pro, précise et surtout réactive, quelqu'un en parle sur le forum dans la partie anglaise, il faut utiliser le wire.h pour la faire fonctionner.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1198065647

les DS1621 sont équivalent aux dDS18S20 la seule différence est la connexion en 2fils pour la 1621 et en 1-wire pour la 18s20.
la precision est de 0.5 C° 9 bits de résolution presentée = echelon au 1/2 °C
c'est du parfaitement courant comme precision de capteur

infobarquee

bonjour,
un ti up pour l'avancement de la chose, surtout que ca commence a urger, les oeufs arrivent tous les jours comme si c'était paques.

donc, installation de 2 relais pour piloter une lampe de 60w pour les tests et prochaine étape mise en place de 2 ventilos de pc montés sur des cornets afin de bien canaliser le flux d'air.
en passant, madame m'a un peu engueulé, j'ai fait sauter les plombs de la maison :) , erreur de débutant de ma part en branchant le 200v et la terre au lieu de la masse  :smiley-red:

modification du script en remettant une carte ethernet car avec la wishield je trouve pas la solution, afin de rentrer les valeurs mini et maxi sur mon server pour envoyer par socket à l'arduino.
par contre je n'arrive pas encore a stocker les valeurs en mémoire en cas de coupure de courant, il faut remettre les valeurs dans "l'admin"
AUCUNE AIDE PAR MP

Artouste



par contre je n'arrive pas encore a stocker les valeurs en mémoire en cas de coupure de courant, il faut remettre les valeurs dans "l'admin"

Bonjour Msieur coin-coin !  :smiley-mr-green:
pourquoi tu ne stocke pas en eeprom sur l'arduino tes dernieres valeurs de consigne envoyées ?
en cas de perte de liaison pour raison x ou y , au retour de la liaison tu viens relire ces valeurs et tu les réinjecte dasn ton "admin" ?

infobarquee

c'est bien ce que j'essaye de faire Artouste,
je viens de jeter un oeil sur eeprom.write et read, mais je ne pige pas trop le principe pour mettre 2 valeurs
je voudrais donc garder en eeprom ceci :
tempmini = 37
tempmaxi = 38.5
par exemple.

j'essaye ceci :
Code: [Select]

tempmini =  atof(packetBuffer);
tempmaxi =  atof(packetBuffer1);
eeprom.write(temp(0) ,  tempmini);
eeprom.write(temp(1) ,  tempmaxi);

puis pour les ressortir, mais j'ai une erreur
Code: [Select]

tempmini = eeprom.write(temp(0) );
tempmaxi =  eeprom.write(temp(1));




AUCUNE AIDE PAR MP

Artouste


c'est bien ce que j'essaye de faire Artouste,
je viens de jeter un oeil sur eeprom.write et read, mais je ne pige pas trop le principe pour mettre 2 valeurs
je voudrais donc garder en eeprom ceci :
tempmini = 37
tempmaxi = 38.5
par exemple.

j'essaye ceci :
Code: [Select]

tempmini =  atof(packetBuffer);
tempmaxi =  atof(packetBuffer1);
eeprom.write(temp(0) ,  tempmini);
eeprom.write(temp(1) ,  tempmaxi);

puis pour les ressortir, mais j'ai une erreur
Code: [Select]

tempmini = eeprom.write(temp(0) );
tempmaxi =  eeprom.write(temp(1));






a priori
tu ne peux ecrire et lire en eeprom que du byte (8 bits)
si tu veux du .5 ça ne tient sur un byte : le type d'origine n'est pas bon il faut gérer l'occupation en eeprom et  les types de data

infobarquee

merci Artouste pour l'info,
j'ai contourné le problème en multipliant par 100 les valeurs mini et maxi puis opération inverse pour les récupérer avec les décimales.
par contre je n'ai pas l'impression que les valeurs restent en mémoire.
si quelqu'un pouvait me confirmer que ca fonctionne ou doit foncitonner, j'ai pris exemple sur le cookbook

Code: [Select]
#include <EEPROM.h>
#include <SPI.h>       // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <Client.h>
#include <Udp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008
#include "DHT.h"
#define DHTPIN 7
int ventilo = 9; // led
int resistance = 8; // led



// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
  192,168,2,200 };
unsigned char gateway[] = {
  192,168,2,2 };
unsigned char mask[] = {
  255,255,255,0};
Server server(80);

unsigned int localPort = 80;      // local port to listen on
float tempmini;
float  tempmaxi;

//constants EEPROM
const byte EEPROM_ID = 0x99; // used to identify if valid data in EEPROM
const int ID_ADDR = 0; // the EEPROM address used to store the ID
const int tempminimem = 1; // the EEPROM address used to store temperature mini
const int tempmaximem = 2; // the EEPROM address used to store temperature maxi
byte id;
byte id1;

// the next two variables are set when a packet is received
byte remoteIp[4];        // holds received packet's originating IP
unsigned int remotePort; // holds received packet's originating port

// buffers for receiving and sending data
char  packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer1[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char  ReplyBuffer[] = "acknowledged";       // a string to send back
char  ReplyBuffer1[] = "acknowledged";       // a string to send back

#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);


void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac, ip, gateway, mask);
  Udp.begin(localPort);
  dht.begin();
  Serial.begin(9600);
  pinMode(ventilo, OUTPUT);
  pinMode(resistance, OUTPUT);
  server.begin();

  byte id = EEPROM.read(ID_ADDR); // read the first byte from the EEPROM     
  if( id == EEPROM_ID){     

    byte id1 = EEPROM.read(tempminimem); // read the 2 byte from the EEPROM   
    byte id2 = EEPROM.read(tempmaximem); // read the 3 byte from the EEPROM
    tempmini = id1/100;
    tempmaxi = id2/100;
  }
}

void loop() {
  Serial.print("id1 : ");
  Serial.println(id1); 

  // if there's data available, read a packet
  int packetSize = Udp.available(); // note that this includes the UDP header
  if(packetSize)
  {


    packetSize = packetSize - 8;      // subtract the 8 byte header
    Serial.print("Received packet of size ");
    Serial.println(packetSize);


    memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
    memset(packetBuffer1, 0, UDP_TX_PACKET_MAX_SIZE);

    // read the packet into packetBufffer and get the senders IP addr and port number
    Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
    Udp.readPacket(packetBuffer1,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents1:");
    Serial.println(packetBuffer1);   

     tempmini =  atof(packetBuffer); //atof lre float
    tempmaxi =  atof(packetBuffer1); //atof lre float
    int tempminimem1 = tempmini*100; //passage pour retirer decimale
    int tempmaximem1 = tempmaxi*100; //passage pour retirer decimale

    Serial.println("Writing default data to EEPROM");
    Serial.print("tempminimem1 : ");
    Serial.println(tempminimem1);
    Serial.print("tempmaximem1 : ");
    Serial.println(tempmaximem1);       
    EEPROM.write(ID_ADDR,EEPROM_ID); // write the ID to indicate valid data
    EEPROM.write(tempminimem,tempminimem1); // write the temp mini * 100
    EEPROM.write(tempmaximem,tempmaximem1); // save the temp maxi *100

    Serial.print("tempmini : ");
    Serial.println(tempmini);
    Serial.print("tempmaxi : ");
    Serial.println(tempmaxi);     


    analogWrite(13, atoi(packetBuffer)); //utiliser la valeur reçu pour allumer la led
    analogWrite(5, atoi(packetBuffer1)); //utiliser la valeur reçu pour allumer la led


  }
  delay(2);
  float h = dht.readHumidity();
  float t = dht.readTemperature();   

  t=t-1;
  if (t < tempmini){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,1);
  }
  else if(t > tempmaxi){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,0);
  }
  else{
    digitalWrite(ventilo,0);
    digitalWrite(resistance,0);   
  }
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  }
  else {

    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    Serial.print("Tempmini: ");
    Serial.print(tempmini);
    Serial.println(" *C");
    Serial.print("Tempmaxi: ");
    Serial.print(tempmaxi);
    Serial.println(" *C");   
  }


}


AUCUNE AIDE PAR MP

infobarquee

en attendant de trouver une solution pour garder en eeprom les variables, je viens de rajouter un lcd sur le proto.
grosse prise de tête avec le lcd gdm1602a pour les branchements, mais maintenant j'ai le répéteur de temp et hum sur le lcd, faut commencer a pousser les murs pour trouver des broches de libre sans pour autant créer de conflit.
je mets le code quand même pour ceux qui seraient intéressés.

Code: [Select]
#include <SPI.h>       // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <Client.h>
#include <LiquidCrystal.h>
#include <Udp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008
#include "DHT.h"
#define DHTPIN A0
int ventilo = 8; // led
int resistance = 9; // led

LiquidCrystal lcd1(7, 6, 5, 4, 3, 2);

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,2,200 };
unsigned char gateway[] = { 192,168,2,2 };
unsigned char mask[] = {255,255,255,0};
Server server(80);

unsigned int localPort = 80;      // local port to listen on
float tempmini;
float  tempmaxi;


// the next two variables are set when a packet is received
byte remoteIp[4];        // holds received packet's originating IP
unsigned int remotePort; // holds received packet's originating port

// buffers for receiving and sending data
char  packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer1[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char  ReplyBuffer[] = "acknowledged";       // a string to send back
char  ReplyBuffer1[] = "acknowledged";       // a string to send back

#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);


void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac, ip, gateway, mask);
  Udp.begin(localPort);
   dht.begin();
  Serial.begin(9600);
   pinMode(ventilo, OUTPUT);
  pinMode(resistance, OUTPUT);
     server.begin();
       lcd1.begin(16, 2);
}

void loop() {

  // if there's data available, read a packet
  int packetSize = Udp.available(); // note that this includes the UDP header
  if(packetSize)
  {

     
    packetSize = packetSize - 8;      // subtract the 8 byte header
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
   

    memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
    memset(packetBuffer1, 0, UDP_TX_PACKET_MAX_SIZE);

    // read the packet into packetBufffer and get the senders IP addr and port number
    Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
     Udp.readPacket(packetBuffer1,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents1:");
    Serial.println(packetBuffer1);   
   
      //tempmini =  float (atoi(packetBuffer));
      //tempmaxi =  float (atoi(packetBuffer1));
       tempmini =  atof(packetBuffer);
        tempmaxi =  atof(packetBuffer1);
     
     Serial.print("tempmini : ");
     Serial.println(tempmini);
          Serial.print("tempmaxi : ");
     Serial.println(tempmaxi);     


    analogWrite(11, atoi(packetBuffer)); //utiliser la valeur reçu pour allumer la led
        analogWrite(12, atoi(packetBuffer1)); //utiliser la valeur reçu pour allumer la led
       
  }
  delay(2);
    float h = dht.readHumidity();
  float t = dht.readTemperature();   

  t=t-1;
  if (t < tempmini){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,1);
  }
  else if(t > tempmaxi){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,0);
  }
  else{
    digitalWrite(ventilo,0);
    digitalWrite(resistance,0);   
  }
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  }
  else {

    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    Serial.print("Tempmini: ");
    Serial.print(tempmini);
    Serial.println(" *C");
    Serial.print("Tempmaxi: ");
    Serial.print(tempmaxi);
    Serial.println(" *C");
  lcd1.setCursor(0, 0);
    lcd1.print("hum: ");
    lcd1.print(h);
    lcd1.print("%\t");
    lcd1.setCursor(0, 1);
    lcd1.print("Temp: ");
    lcd1.print(t);
    lcd1.print("C");   
  }
}
AUCUNE AIDE PAR MP

jfs

Avec une couveuse comme ça, à l'éclosion tu auras des éléphants  XD
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

Artouste


en attendant de trouver une solution pour garder en eeprom les variables,

selon le type de variable que tu veux conserver en eeprom
il faut la décomposer en tableau de byte
l'ecrire
et faire la reconstitution inverse à la lecture.

les petits genies du coding doivent bien avoir ça dans leurs tiroirs  :smiley-mr-green:

infobarquee

j'ai mis ma tentative au post #35 Artouste ;)

mais si je coupe l'alim, ca ne reste pas en memoire apparemment.
remarque maintenant avec le lcd, je peux peut être vérifier si ca reste ou pas.
AUCUNE AIDE PAR MP

zoroastre

Yep!

EEPROM + Float :

Code: [Select]
#include "EEPROM.h"

float value = 19.88;
int adress = 0;

// Utilities for writing and reading from the EEPROM
float readFloat(int address) {
  union floatStore {
    byte floatByte[4];
    float floatVal;
  } floatOut;
 
  for (int i = 0; i < 4; i++)
    floatOut.floatByte[i] = EEPROM.read(address + i);
  return floatOut.floatVal;
}

void writeFloat(float value, int address) {
  union floatStore {
    byte floatByte[4];
    float floatVal;
  } floatIn;
 
  floatIn.floatVal = value;
  for (int i = 0; i < 4; i++)
    EEPROM.write(address + i, floatIn.floatByte[i]);
}

void setup() {
  Serial.begin(9600);
 
  writeFloat(value, adress);
 
  float n = readFloat(adress);
  Serial.println(n);
 
}

void loop() { }


Pour insérer une seconde valeur, ne pas oublier de décaler l'adresse de 4 bytes.

@+

Zoroastre.
Gné! ;)

infobarquee

merci zoroastre,
après plusieurs tatonnements ca fonctionne, car ma variable n'est pas prédéfinie au départ, mais au moment ou je rentre les données via ma page web sur mon server.
maintenant, je vais essayer de piger comment décaler de 4 bits comme tu l'as suggéré.
AUCUNE AIDE PAR MP

zoroastre

#42
Mar 06, 2012, 08:30 am Last Edit: Mar 06, 2012, 11:11 am by zoroastre Reason: 1
Yep!

Oui tu peux appeler les fonctions n'importe où dans le programme. A considérer que les floats sont plus gourmands que les bytes ou int.

Si tes données peuvent être modifiées par l'exterieur, j'essairais de structurer légerement le programme pour inclure les données reçues dans un tableau.

Code: [Select]
float TABLEAU[2] = { a, b };

Ainsi chaque donnée à son emplacement propre dans le tableau et une position dans celui-ci.

Il suffirait ensuite de créer un flag : if (donnée modifié) { on sauvegarde; }

La position du tableau est déterminante car multipliée par 4 te donne l'adressage de l'EEPROM.

Code: [Select]
for (int data = 0; data < TABLEAULONG; data++) { writeFloat(TABLEAU[data], data*4); }

data*4 = 0 => pour 0
data*4 = 4 => pour 1
data*4 = 8 => pour 2
etc...

Tu as bien ton décalage.

Ce n'est qu'un suggestion parmis tant d'autre. J'ai un peu cette structure. Mon programme python me permet de modifier des paramètres à la volée, j'ai pourtant pris soin de positionner chaque élement de la trame dans un tableau, pour la continuité du programme et pour faciliter la sauvegarde.

C'est la solution la plus simple. Tu peux aussi définir un tableau à deux dimensions avec des adressages pré-définies :

Exemple :

Code: [Select]
float TABLEAU [4][2] = {
 { TEMPMAX, 0},
 {HUMIDMAX, 12},
 {TEMPMIN, 4},
 {HUMIDMIN, 8}
};


Code: [Select]
for (int i = 0; i < TABLEAULONG; i++) { writeFloat(TABLEAU[i][0], TABLEAU[i][1]); }

A noter que ces solutions, t'oblige à écrire la totalité de l'EEPROM systématiquement. Il y a certainement moyen d'avoir quelquechose de plus dynamique.

@+

Zoroastre.
Gné! ;)

infobarquee

je suis carrément paumé là :( , ca va se finir par un nouveau projet, l'arduino volant  :smiley-mr-green:

ca me garde que la dernières variable, l'autre étant à -0.01
je mets le code, en résumant, je modifie via une page web les valeurs mini maxi ou l'une ou l'autre.
les sockets sont bien envoyés, mais au reboot, pouf

Code: [Select]
#include <EEPROM.h>
#include <SPI.h>       // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <Client.h>
#include <LiquidCrystal.h>
#include <Udp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008
#include "DHT.h"
#define DHTPIN A0
int ventilo = 8; // led
int resistance = 9; // led

LiquidCrystal lcd1(7, 6, 5, 4, 3, 2);

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,2,200 };
unsigned char gateway[] = { 192,168,2,2 };
unsigned char mask[] = {255,255,255,0};
Server server(80);

unsigned int localPort = 80;      // local port to listen on
float tempmini;
float  tempmaxi;


// the next two variables are set when a packet is received
byte remoteIp[4];        // holds received packet's originating IP
unsigned int remotePort; // holds received packet's originating port

// buffers for receiving and sending data
char  packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer1[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char  ReplyBuffer[] = "acknowledged";       // a string to send back
char  ReplyBuffer1[] = "acknowledged";       // a string to send back

#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);


int address = 0;
byte value;
float tempminimem;
float tempmaximem;


// Utilities for writing and reading from the EEPROM
float readFloat(int address) {
  union floatStore {
    byte floatByte[4];
    float floatVal;
  } floatOut;
 
  for (int i = 0; i < 4; i++)
    floatOut.floatByte[i] = EEPROM.read(address + i);
  return floatOut.floatVal;
}

void writeFloat(float value, int address) {
  union floatStore {
    byte floatByte[4];
    float floatVal;
  } floatIn;
 
  floatIn.floatVal = value;
  for (int i = 0; i < 4; i++)
    EEPROM.write(address + i, floatIn.floatByte[i]);
     
}



void setup() {
  // start the Ethernet and UDP:
  Ethernet.begin(mac, ip, gateway, mask);
  Udp.begin(localPort);
   dht.begin();
  Serial.begin(9600);
   pinMode(ventilo, OUTPUT);
  pinMode(resistance, OUTPUT);
     server.begin();
       lcd1.begin(16, 2);
       

 
  tempminimem = readFloat(address);
  Serial.print("tempminimem :");
  Serial.println(tempminimem);
   tempmini=tempminimem;
  tempmaximem = readFloat(address+1);
  Serial.print("tempmaximem :");
  Serial.println(tempmaximem);
   tempmaxi=tempmaximem;       
}

void loop() {

  // if there's data available, read a packet
  int packetSize = Udp.available(); // note that this includes the UDP header
  if(packetSize)
  {

     
    packetSize = packetSize - 8;      // subtract the 8 byte header
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
   

    memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
    memset(packetBuffer1, 0, UDP_TX_PACKET_MAX_SIZE);

    // read the packet into packetBufffer and get the senders IP addr and port number
    Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents:");
    Serial.println(packetBuffer);
     Udp.readPacket(packetBuffer1,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    Serial.println("Contents1:");
    Serial.println(packetBuffer1);   
   
      //tempmini =  float (atoi(packetBuffer));
      //tempmaxi =  float (atoi(packetBuffer1));
       tempmini =  atof(packetBuffer);
        tempmaxi =  atof(packetBuffer1);
       
     writeFloat(tempmini,address);
     writeFloat(tempmaxi,address+1);     
     
     Serial.print("tempmini : ");
     Serial.println(tempmini);
          Serial.print("tempmaxi : ");
     Serial.println(tempmaxi);     


    analogWrite(11, atoi(packetBuffer)); //utiliser la valeur reçu pour allumer la led
        analogWrite(12, atoi(packetBuffer1)); //utiliser la valeur reçu pour allumer la led
       
  }
  delay(2);
    float h = dht.readHumidity();
  float t = dht.readTemperature();   

  t=t-1;
  if (t < tempmini){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,1);
  }
  else if(t > tempmaxi){
    digitalWrite(ventilo,1);
    digitalWrite(resistance,0);
  }
  else{
    digitalWrite(ventilo,0);
    digitalWrite(resistance,0);   
  }
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  }
  else {
   
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    Serial.print("Tempmini: ");
    Serial.print(tempmini);
    Serial.println(" *C");
    Serial.print("Tempmaxi: ");
    Serial.print(tempmaxi);
    Serial.println(" *C");
  lcd1.setCursor(0, 0);
    lcd1.print("H:");lcd1.print(h); lcd1.print("%");
    lcd1.print("Mi:");lcd1.print(tempmini);;   
    lcd1.setCursor(0, 1);
    lcd1.print("T:");lcd1.print(t);lcd1.print("C");
    lcd1.print("Ma:");lcd1.print(tempmaxi);     
  }


}

AUCUNE AIDE PAR MP

B@tto

Je prend le train en route : si tu veux de la précision en température (<= 0.1°C), ya pas 36 solutions, sonde pt100. En plus il en existe un peu sous tous les formats, il y en a surement une plus adaptée pour des oeufs qu'un composant.

Si tu as des questions sur le sujets, je régule des températures et de l'humidité quasiment à longueur de journée xD
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Go Up