Partage
  • Partager sur Facebook
  • Partager sur Twitter

[projet] Station météo

    3 juillet 2012 à 14:10:13

    Citation : Eskimon

    Donc la différence entre "marche pas" et "marche" se jouait bien sur le "double" contre "int" ?


    oui, mais il y a juste un problème, mon compteur me dit 296 jours et internet dit 174 ... ici
    • Partager sur Facebook
    • Partager sur Twitter
    2b||!2b   sqrt(4b²)
      3 juillet 2012 à 14:53:37

      Questions bête mais... elle est à l'heure ta RTC ? si tu affiches l'heure stocké dedans tu obtiens bien aujourd'hui et la bonne heure ?
      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

        10 juillet 2012 à 12:41:53

        Désoler, j'ai oublier de répondre ... :-°
        Ma RTC est à l'heure.
        petit récapitulatif des problèmes :
        - Communiquer avec une carte SD avec 6 broches digitales et 1 analogique (ou moins)
        - trouver une humidistance pas trop chère
        - résoudre le bug de noël (+ de jours que prévu)
        - résoudre le problème de l'écran (trop sombre)
        - je croit que c'est tout ;)

        Et j'ai remarquer une broche SDA et un autre SCL, est-ce qu'elles sont reliées directement au broches A4 et A5 ou si je les utilisent je peut me servir de A4 et A5 ?
        • Partager sur Facebook
        • Partager sur Twitter
        2b||!2b   sqrt(4b²)
          10 juillet 2012 à 13:54:05

          A4 et A5 sont SOIT pour l'I²C (pour utiliser ta RTC) SOIT en entrée analogique, mais pas les deux.
          • Partager sur Facebook
          • Partager sur Twitter

          Retrouvez moi sur mon blog et ma chaine Youtube !

            11 juillet 2012 à 23:53:33

            ok, merci.
            Donc A4 et A5 sont connectées à SDA et SCL ?
            Pour le reste, personne n'a d'idées ?
            • Partager sur Facebook
            • Partager sur Twitter
            2b||!2b   sqrt(4b²)
              12 juillet 2012 à 9:29:20

              ca veut dire quoi :

              Citation

              Communiquer avec une carte SD avec 6 broches digitales et 1 analogique (ou moins)


              Ca veut dire qu'il te reste ce nombre de broche précisement ? tu as déjà un shield pour contrôler la SD ou pas (si oui faudra regarder quelles broches il utilise normalement).

              Citation

              résoudre le problème de l'écran (trop sombre)


              Je t'ai déjà répondu en te parlant de la broche V0 sur ton écran... As tu essayé de modifier sa valeur (car "j'ai mis au max" n'ai pas une réponse convenable :D)

              Pour ce qui est de l'humidistance je connais pas donc pas d'idée à part "cherche sur des sites d'électronique classique ou dans une boutique près de chez toi" :)
              • Partager sur Facebook
              • Partager sur Twitter

              Retrouvez moi sur mon blog et ma chaine Youtube !

                12 juillet 2012 à 9:50:17

                Je n'ai aucun shield, il me reste 6 broches digitales et 1 analogique.

                Citation : Moi

                C'est le rétroéclairage, j'ai mis le contraste au max.



                Pour l'humidistance j'avais trouvé un site, mais sa m’embête de payer des frais de porc pour juste un truc.
                Et il y a 2 types (sur Selectronique) :
                -Humidistance capacitive de type H1 -> 20,90 €
                -Humidistance résistive de type H25K5 -> 4,50 €
                Quelle est la différence ?

                Merci.

                EDIT : sur dx ya ça, c'est bon ?
                • Partager sur Facebook
                • Partager sur Twitter
                2b||!2b   sqrt(4b²)
                Anonyme
                  12 juillet 2012 à 10:00:06

                  H1 : capteur capacitif
                  H25K5 : capteur résistif

                  Les plages sont différentes aussi.

                  Sinon avec une plaque de prototypage en bande, tu peux en faire une :)[lvl mac gyver]
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 juillet 2012 à 10:02:31

                    ça je le sais, se que je veut c'est la différence entre capacitif et résistif, et aussi pourquoi cette différence énorme de prix !

                    Merci quand même, thelme
                    • Partager sur Facebook
                    • Partager sur Twitter
                    2b||!2b   sqrt(4b²)
                    Anonyme
                      12 juillet 2012 à 10:09:32

                      La capacitive de dérive par en fonction de la température, elle est plus précise aussi.
                      La fabrication est pas la même.
                      La résistive correspond a peu prés à un montage avec une plaque de prototypage en bande.



                      Citation : diode

                      EDIT : sur dx ya ça, c'est bon ?


                      ça l'aire d'être la même sur evola, y a du blabla dessus :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 juillet 2012 à 10:17:16

                        Ok, merci.

                        Citation : thelme


                        ça l'aire d'être la même sur evola, y a du blabla dessus :)



                        à 2 composants et 2,85€ près, elle sont pareilles ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                        2b||!2b   sqrt(4b²)
                          13 juillet 2012 à 10:22:50

                          Premier message édité.
                          Pour la carte SD, j'ai trouver la Mémoire, de snootlab. Et j'aimerais savoir comment elle marche, de façon à la reproduire chez moi, donc si qqu sait qqc, ou qu'il a cette carte, ou si il est le créateur (j'ai le droit de rêver, non ? :p )merci de me donner des infos.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          2b||!2b   sqrt(4b²)
                            13 juillet 2012 à 10:38:02

                            Tu voudrais savoir quoi ? Quelle broche sont utilisées ? Quelles sont les composants et leurs rôles ?

                            Pour ce qui est de la connectique tu peux essayer de te référer aux schémas de carte type "Wireless SD card" fournit par Arduino sur le site officiel
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Retrouvez moi sur mon blog et ma chaine Youtube !

                              13 juillet 2012 à 11:28:50

                              En gros, faire du "reverse engineered".
                              Mais je croit que j'ai trouvé (merci les gros plans :p ) :
                              Composant Utilisé par :
                              A - Résistance 3,3K (orange/orange/rouge) (x3) SD
                              B - Résistances 1,8K (marron/gris/rouge) (x3) SD
                              C - Résistance 10K (marron/noir/orange) (x3) RTC
                              D - Résistance 68 Ohms (bleu/gris/noir) ARDUINO
                              E - Led bleue ARDUINO
                              F - Condensateur 10μF ?
                              G - Condensateur 100nF RTC
                              H - Quartz RTC
                              I - Poussoir de Reset ARDUINO
                              J - Support de pile RTC
                              K - Support CI 8 points RTC
                              L - Connecteurs empilables 6 et 8 points (x2) ARDUINO
                              M - Circuit imprimé équipé CMS ARDUINO
                              N - Pile RTC
                              O - Circuit intégré DS1307 RTC

                              Le schéma :
                              Image utilisateur
                              Si c'est comme ça c'est parfait !
                              • Partager sur Facebook
                              • Partager sur Twitter
                              2b||!2b   sqrt(4b²)
                                14 août 2012 à 22:03:37

                                Up !
                                ça faisait longtemps, voivi des nouvelles :
                                • Je cherche toujours :
                                  • Communiquer avec une carte SD avec 6 broches digitales et 1 analogique (ou moins)
                                  • trouver une humidistance pas trop chère
                                  • résoudre le bug de noël (+ de jours que prévu)
                                • Pour mon écran trop sombre, j'ai trouver : j'avais pas vu qu'il il a une connexion pour le backlight, résolut.
                                • Nouveaux problèmes :
                                  • Mon code pour afficher la température ne marche pas (il affiche 2)
                                V2 = map(analogRead(A0),0,1023,0,5000);
                                	      V2 /= 1000;
                                	      R1 = (500000-V2*100000)/V2;
                                	     temp=(int)(2*R1-109,2);
                                	     Serial.println(temp);
                                
                                Mon écran LCD ne marche plus ! (il affiche n'importe quoi)
                                Mon montage et mon code :
                                Image utilisateur(cliquez pour agrandir)
                                #include <LiquidCrystal.h>
                                #include <Wire.h>
                                #include "RTClib.h"
                                
                                #define VAL1 1023
                                #define VAL2 1014
                                #define VAL3 931
                                #define SENSIBILITE 5
                                
                                //A5;4 A0;1 A2 -- D2;3;4;5;6;7 D10;11;12;13
                                //RTC  CAPT BT        LCD           SD
                                RTC_Millis RTC;
                                LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
                                
                                boolean bout1 = false;
                                boolean bout2 = false;
                                boolean bout3 = false;
                                boolean Ancbout1 = false;
                                boolean Ancbout2 = false;
                                boolean Ancbout3 = false;
                                
                                int analogA2;
                                int temp;
                                double R1;
                                double V2;
                                int Mitemp = 100;
                                int Matemp = 0;
                                int hum;
                                int Mihum = 100;
                                int Mahum = 0;
                                double J = 17;
                                double Mo = 6;
                                double A = 2012;
                                double H = 14;
                                double Mi = 37;
                                double S = 41;
                                double TotS = 0;
                                double J2 = 25;
                                double Mo2 = 12;
                                double A22 = 2012;
                                double H2 = 0;
                                double Mi2 = 0;
                                double S2 = 0;
                                double TotS2 = 0;
                                
                                DateTime now;
                                
                                int phase = 0;
                                //0=heure
                                //1=temp
                                //2=hum
                                //3=noël
                                //4=maxminitemp
                                //5=maxminihum
                                byte Coeur[8] = {
                                  0b00000,
                                  0b01010,
                                  0b11111,
                                  0b11111,
                                  0b11111,
                                  0b01110,
                                  0b00100,
                                  0b00000
                                };
                                byte Coeur2[8] = {
                                  0B00000,
                                  0B00000,
                                  0B01010,
                                  0B01110,
                                  0B01110,
                                  0B00100,
                                  0B00000,
                                  0B00000
                                };
                                byte vague[8] = {
                                  0B00000,
                                  0B00000,
                                  0B00000,
                                  0B01100,
                                  0B10011,
                                  0B00000,
                                  0B00000,
                                  0B00000
                                };
                                byte AInv[8] = {
                                  0B11111,
                                  0B11111,
                                  0B10001,
                                  0B10101,
                                  0B10101,
                                  0B10001,
                                  0B10101,
                                  0B10101
                                };
                                byte Degre[8] = {
                                  0B01110,
                                  0B10001,
                                  0B10001,
                                  0B10001,
                                  0B01110,
                                  0B00000,
                                  0B00000,
                                  0B00000
                                };
                                
                                void setup () {
                                  // following line sets the RTC to the date & time this sketch was compiled
                                  RTC.begin(DateTime(__DATE__, __TIME__));
                                  
                                  Serial.begin(9600);
                                  
                                  TotS2 += S2;
                                  TotS2 += (Mi2*60);
                                  TotS2 += ((H2*60)*60);
                                  TotS2 += ((((J2*24)*60)*60)*Mo2);
                                  
                                  lcd.begin(20, 4);
                                  lcd.createChar(1, Coeur);
                                  lcd.createChar(2, Coeur2);
                                  lcd.createChar(3, vague);
                                  lcd.createChar(4, AInv);
                                  lcd.createChar(5, Degre);
                                  for(int i = 0; i!=5; i++)
                                  {
                                    lcd.setCursor(3,2);
                                    lcd.print("I "); 
                                    lcd.write(2);
                                    lcd.print(" Arduino !");
                                    delay(250);
                                    lcd.setCursor(3,2);
                                    lcd.print("I "); 
                                    lcd.write(1);
                                    lcd.print(" Arduino !");
                                    delay(250);
                                  }
                                  lcd.setCursor(0,0);
                                  lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(4);lcd.print("rduinMeteo");lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);
                                }
                                
                                void loop () 
                                {
                                  switch(phase)
                                  {
                                    case 0 :
                                      //333334rduiMeteo33333
                                      //******17/06/12******
                                      //******09H51:20******
                                      //<-Humi.******Temp.->
                                      now = RTC.now();
                                      lcd.setCursor(6,2);
                                      lcd.print(now.day(), DEC);lcd.print('/');lcd.print(now.month(), DEC);lcd.print('/');lcd.print(now.year(), DEC);
                                      lcd.setCursor(6,3);
                                      lcd.print(now.hour(), DEC);lcd.print(':');lcd.print(now.minute(), DEC);lcd.print(':');lcd.print(now.second(), DEC);
                                      lcd.setCursor(0,4);
                                      lcd.print("<-Humi.      Temp.->");
                                      Serial.print(now.hour(), DEC);Serial.print(':');Serial.print(now.minute(), DEC);Serial.print(':');Serial.println(now.second(), DEC);
                                      break;
                                      
                                    case 1 :
                                      //333334rduiMeteo33333
                                      //***Temperature*:****
                                      //********20°C********
                                      //<-Heure******Humi.8->
                                      V2 = map(analogRead(A0),0,1023,0,5000);
                                      Serial.print(V2);Serial.print("-");
                                      V2 /= 1000;
                                      Serial.print(V2);Serial.print("-");
                                      R1 = (500000-V2*100000)/V2;
                                      Serial.print(R1);Serial.print("-");
                                      temp=(int)(2*R1-109,2);
                                      Serial.println(temp);
                                      if(temp > Matemp)
                                        Matemp = temp;
                                      if(temp < Mitemp)
                                        Mitemp = temp;
                                      lcd.setCursor(3,2);
                                      lcd.print("Temperature :");
                                      lcd.setCursor(8,3);
                                      lcd.print(temp, DEC);lcd.write(5);lcd.print("C");
                                      lcd.setCursor(0,4);
                                      lcd.print("<-Heure      Humi.->");
                                      break;
                                      
                                    case 2 :
                                      //333334rduiMeteo33333
                                      //*****Humidite*:*****
                                      //********54%*********
                                      //<-Temp.******Heure->
                                      hum = map(analogRead(A1),0,1023,0,100);
                                      if(hum > Mahum)
                                        Mahum = hum;
                                      if(hum < Mihum)
                                        Mihum = hum;
                                      lcd.setCursor(5,2);
                                      lcd.print("Humidite :");
                                      lcd.setCursor(8,3);
                                      lcd.print(hum, DEC);lcd.print("%");
                                      lcd.setCursor(0,4);
                                      lcd.print("<-Temp.      Heure->");
                                      Serial.println(hum, DEC);
                                      break;
                                      
                                    case 3 :
                                      //333334rduiMeteo33333
                                      //110J*02H*50min*20sec
                                      //*****avant noel*****
                                      //<-Humi.******Temp.->
                                      now = RTC.now();
                                      J  = now.day();
                                      Mo = now.month();
                                      A  = now.year();
                                      H  = now.hour();
                                      Mi = now.minute();
                                      S  = now.second();
                                      TotS += S;
                                      TotS += (Mi*60);
                                      TotS += ((H*60)*60);
                                      TotS += ((((J*24)*60)*60)*Mo);
                                      TotS = TotS2 - TotS;
                                      Mi = TotS/60;
                                      H = Mi/60;
                                      J = H/24;
                                      S = (int)TotS%60;
                                      Mi = (int)Mi%60;
                                      H = (int)H%24;
                                      J = (int)J;
                                      
                                      lcd.setCursor(0,2);
                                      lcd.print(J);lcd.print("J ");lcd.print(H);lcd.print("H ");lcd.print(Mi);lcd.print("min ");lcd.print(S);lcd.print("sec");
                                      lcd.setCursor(5,3);
                                      lcd.print("Avant noel");
                                      lcd.setCursor(0,4);
                                      lcd.print("<-Humi.      Temp.->");
                                      break;
                                      
                                    case 4 :
                                      //333334rduiMeteo33333
                                      //Minimale : 10°C*****
                                      //Maximale : 40°C*****
                                      //<-Heure******Humi.->
                                      lcd.setCursor(0,2);
                                      lcd.print("Minimale : ");lcd.print(Mitemp, DEC);lcd.write(5);lcd.print("C");
                                      lcd.setCursor(0,3);
                                      lcd.print("Maximale : ");lcd.print(Matemp, DEC);lcd.write(5);lcd.print("C");
                                      lcd.setCursor(0,4);
                                      lcd.print("<-Heure      Humi.->");
                                      break;
                                      
                                    case 5 :
                                      //333334rduiMeteo33333
                                      //Minimale : 30%******
                                      //Maximale : 75%******
                                      //<-Temp.******Heure->
                                      lcd.setCursor(0,2);
                                      lcd.print("Minimale : ");lcd.print(Mihum, DEC);lcd.print("%");
                                      lcd.setCursor(0,3);
                                      lcd.print("Maximale : ");lcd.print(Mahum, DEC);lcd.print("%");
                                      lcd.setCursor(0,4);
                                      lcd.print("<-Temp.      Heure->");
                                      break;
                                      
                                    default:
                                    phase = 0;
                                  }
                                  analogA2 = analogRead(A2);
                                  bout1 = false;
                                  bout2 = false;
                                  bout3 = false;
                                  if(analogA2 > VAL1-SENSIBILITE && analogA2 < VAL1+SENSIBILITE)
                                  {
                                    Serial.println("bt1 ok");
                                    bout1 = true;
                                    bout2 = false;
                                    bout3 = false;
                                  }
                                  else if(analogA2 > VAL2-SENSIBILITE && analogA2 < VAL2+SENSIBILITE)
                                  {
                                    Serial.println("bt2 ok");
                                    bout1 = false;
                                    bout2 = true;
                                    bout3 = false;
                                  }else if(analogA2 > VAL3-SENSIBILITE && analogA2 < VAL3+SENSIBILITE)
                                  {
                                    Serial.println("bt3 ok");
                                    bout1 = false;
                                    bout2 = false;
                                    bout3 = true;
                                  }
                                  if(bout1 && (bout1 != Ancbout1))
                                  {
                                    phase--;
                                    if(phase < 0)
                                      phase = 2;
                                    Serial.print("phase : ");Serial.println(phase);
                                  }
                                  if(bout2 && (bout2 != Ancbout2))
                                  {
                                    phase++;
                                    if(phase > 2)
                                      phase = 0;
                                    Serial.print("phase : ");Serial.println(phase);
                                  }
                                  if(bout3 && (bout3 != Ancbout3))
                                  {
                                      if(phase > 2)
                                        phase -= 3;
                                      else
                                        phase += 3;
                                      if(phase > 5)
                                        phase = 0;
                                      Serial.print("phase : ");Serial.println(phase);
                                  }
                                  
                                  Ancbout1 = bout1;
                                  Ancbout2 = bout2;
                                  Ancbout3 = bout3;
                                }
                                
                                • Partager sur Facebook
                                • Partager sur Twitter
                                2b||!2b   sqrt(4b²)
                                  14 août 2012 à 22:10:00

                                  Il est possible de réaliser un capteur d'humidité autour d'un condensateur. A fouiller sur google car je ne me souviens plus du circuit à faire.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    15 août 2012 à 10:01:01

                                    J'ai chercher, mais j'ai rien vu avec un condensateur, il y a surtout des circuits "tout ou rien" fais à partir d'une grille.

                                    Et j'ai oublié de préciser, pour mon écran, j'ai utiliser toute sorte de code et de configuration, mais ça ne marchait pas, jusqu’à que ce code(en bas), mal configurer (lcd.begin(16, 2); ), ça m’affichait des caractères qui bouge, et quand je l'ai mit en 20,4 ça a marché ; je teste sur avec ce code et cette config., ça marche plus ! et je refait la manip exactement pareil, toujours pas ! :'(
                                    //Jeremy Blum's Arduino Tutorial Series - Episode 13 - LCDs
                                    //Sample Code - LCD Progress Bar
                                    //http://www.jeremyblum.com
                                    //LiquidCrystal library by David A. Mellis, Limor Fried (http://www.ladyada.net), and Tom Igoe
                                    //http://www.arduino.cc/en/Tutorial/LiquidCrystal
                                    
                                    /* 
                                      The circuit:
                                     * LCD RS pin to digital pin 2
                                     * LCD Enable pin to digital pin 3
                                     * LCD D4 pin to digital pin 4
                                     * LCD D5 pin to digital pin 5
                                     * LCD D6 pin to digital pin 6
                                     * LCD D7 pin to digital pin 7
                                     * LCD R/W pin to ground
                                     * 10K resistor:
                                     * ends to +5V and ground
                                     * wiper to LCD VO pin (pin 3)
                                     */
                                    
                                    // include the library code:
                                    #include <LiquidCrystal.h>
                                    
                                    // initialize the library with the numbers of the interface pins
                                    LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
                                    
                                    
                                    byte p20[8] = {
                                      B10000,
                                      B10000,
                                      B10000,
                                      B10000,
                                      B10000,
                                      B10000,
                                      B10000,
                                    };
                                    byte p40[8] = {
                                      B11000,
                                      B11000,
                                      B11000,
                                      B11000,
                                      B11000,
                                      B11000,
                                      B11000,
                                    };
                                    byte p60[8] = {
                                      B11100,
                                      B11100,
                                      B11100,
                                      B11100,
                                      B11100,
                                      B11100,
                                      B11100,
                                    };
                                    byte p80[8] = {
                                      B11110,
                                      B11110,
                                      B11110,
                                      B11110,
                                      B11110,
                                      B11110,
                                      B11110,
                                    };
                                    byte p100[8] = {
                                      B11111,
                                      B11111,
                                      B11111,
                                      B11111,
                                      B11111,
                                      B11111,
                                      B11111,
                                    };
                                    
                                    void setup() {
                                      // set up the LCD's number of columns and rows: 
                                      lcd.begin(16, 2);
                                      // Print a message to the LCD.
                                      lcd.print("Jeremy's Display");
                                      
                                      //Make progress characters
                                      lcd.createChar(0, p20);
                                      lcd.createChar(1, p40);
                                      lcd.createChar(2, p60);
                                      lcd.createChar(3, p80);
                                      lcd.createChar(4, p100);
                                    }
                                    
                                    void loop() {
                                     lcd.setCursor(0,1);
                                     lcd.print("                ");   
                                     
                                     for (int i = 0; i<16; i++)
                                     {
                                       
                                       for (int j=0; j<5; j++)
                                       {
                                          lcd.setCursor(i, 1);   
                                          lcd.write(j);
                                          delay(100);
                                        } 
                                       
                                        
                                     }
                                    
                                      
                                    }
                                    
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    2b||!2b   sqrt(4b²)
                                      16 août 2012 à 12:58:41

                                      Fausse alerte pour mon écran ! :)
                                      le câble qui reliait le pin ENABLE ne conduisait plus ...
                                      entre temps j'ai rajouter des petits détails à mon code, que voilà :
                                      #include <LiquidCrystal.h>
                                      #include <Wire.h>
                                      #include "RTClib.h"
                                      
                                      #define VAL1 1023
                                      #define VAL2 1014
                                      #define VAL3 931
                                      #define SENSIBILITE 5
                                      
                                      //A5;4 A0;1 A2 -- D2;3;4;5;6;7 D10;11;12;13
                                      //RTC  CAPT BT        LCD           SD
                                      RTC_Millis RTC;
                                      LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
                                      
                                      boolean bout1 = false;
                                      boolean bout2 = false;
                                      boolean bout3 = false;
                                      boolean Ancbout1 = false;
                                      boolean Ancbout2 = false;
                                      boolean Ancbout3 = false;
                                      
                                      int analogA2;
                                      int temp;
                                      double R1;
                                      double V2;
                                      int Mitemp = 100;
                                      int Matemp = 0;
                                      int hum;
                                      int Mihum = 100;
                                      int Mahum = 0;
                                      double J = 17;
                                      double Mo = 6;
                                      double A = 2012;
                                      double H = 14;
                                      double Mi = 37;
                                      double S = 41;
                                      double TotS = 0;
                                      double J2 = 25;
                                      double Mo2 = 12;
                                      double A22 = 2012;
                                      double H2 = 0;
                                      double Mi2 = 0;
                                      double S2 = 0;
                                      double TotS2 = 0;
                                      
                                      DateTime now;
                                      
                                      int phase = 0;
                                      //0=heure
                                      //1=temp
                                      //2=hum
                                      //3=noël
                                      //4=maxminitemp
                                      //5=maxminihum
                                      byte Coeur[8] = {
                                        0b00000,
                                        0b01010,
                                        0b11111,
                                        0b11111,
                                        0b11111,
                                        0b01110,
                                        0b00100,
                                        0b00000
                                      };
                                      byte Coeur2[8] = {
                                        0B00000,
                                        0B00000,
                                        0B01010,
                                        0B01110,
                                        0B01110,
                                        0B00100,
                                        0B00000,
                                        0B00000
                                      };
                                      byte vague[8] = {
                                        0B00000,
                                        0B00000,
                                        0B00000,
                                        0B01100,
                                        0B10011,
                                        0B00000,
                                        0B00000,
                                        0B00000
                                      };
                                      byte AInv[8] = {
                                        0B11111,
                                        0B11111,
                                        0B10001,
                                        0B10101,
                                        0B10101,
                                        0B10001,
                                        0B10101,
                                        0B10101
                                      };
                                      byte Degre[8] = {
                                        0B01110,
                                        0B10001,
                                        0B10001,
                                        0B10001,
                                        0B01110,
                                        0B00000,
                                        0B00000,
                                        0B00000
                                      };
                                      void clear2lignes()
                                      {
                                        lcd.setCursor(0,1);
                                        lcd.print("                    ");
                                        lcd.setCursor(0,2);
                                        lcd.print("                    ");
                                      }
                                      void zerosQ(int a)
                                      {
                                        lcd.print( (a<10) ? "0": "");
                                      }
                                      void setup () {
                                        // following line sets the RTC to the date & time this sketch was compiled
                                        RTC.begin(DateTime(__DATE__, __TIME__));
                                        
                                        Serial.begin(9600);
                                        
                                        TotS2 += S2;
                                        TotS2 += (Mi2*60);
                                        TotS2 += ((H2*60)*60);
                                        TotS2 += ((((J2*24)*60)*60)*Mo2);
                                        
                                        lcd.begin(20, 4);
                                        lcd.createChar(1, Coeur);
                                        lcd.createChar(2, Coeur2);
                                        lcd.createChar(3, vague);
                                        lcd.createChar(4, AInv);
                                        lcd.createChar(5, Degre);
                                        for(int i = 0; i!=5; i++)
                                        {
                                          lcd.setCursor(3,2);
                                          lcd.print("I "); 
                                          lcd.write(2);
                                          lcd.print(" Arduino !");
                                          delay(250);
                                          lcd.setCursor(3,2);
                                          lcd.print("I "); 
                                          lcd.write(1);
                                          lcd.print(" Arduino !");
                                          delay(250);
                                        }
                                        lcd.clear();
                                        lcd.setCursor(0,0);
                                        lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(4);lcd.print("rduiMeteo");lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);lcd.write(3);
                                      
                                      }
                                      
                                      void loop () 
                                      {
                                        switch(phase)
                                        {
                                          case 0 :
                                            clear2lignes();
                                            //333334rduiMeteo33333
                                            //*****17/06/2012*****
                                            //******09:51:20******
                                            //<-Humi.******Temp.->
                                            now = RTC.now();
                                            lcd.setCursor(5,1);
                                            zerosQ(now.day());lcd.print(now.day(), DEC);lcd.print('/');zerosQ(now.month());lcd.print(now.month(), DEC);lcd.print('/');zerosQ(now.year());lcd.print(now.year(), DEC);
                                            lcd.setCursor(6,2);
                                            zerosQ(now.hour());lcd.print(now.hour(), DEC);lcd.print(':');zerosQ(now.minute());lcd.print(now.minute(), DEC);lcd.print(':');zerosQ(now.second());lcd.print(now.second(), DEC);
                                            lcd.setCursor(0,3);
                                            lcd.print("<-Humi.      Temp.->");
                                            Serial.print(now.hour(), DEC);Serial.print(':');Serial.print(now.minute(), DEC);Serial.print(':');Serial.println(now.second(), DEC);
                                            break;
                                            
                                          case 1 :
                                            clear2lignes();
                                            //333334rduiMeteo33333
                                            //***Temperature*:****
                                            //********20°C********
                                            //<-Heure******Humi.8->
                                            V2 = map(analogRead(A0),0,1023,0,5000);
                                            Serial.print(V2);Serial.print("-");
                                            V2 /= 1000;
                                            Serial.print(V2);Serial.print("-");
                                            R1 = (500000-V2*100000)/V2;
                                            Serial.print(R1);Serial.print("-");
                                            temp=(int)(2*R1-109,2);
                                            Serial.println(temp);
                                            if(temp > Matemp)
                                              Matemp = temp;
                                            if(temp < Mitemp)
                                              Mitemp = temp;
                                            lcd.setCursor(3,1);
                                            lcd.print("Temperature :");
                                            lcd.setCursor(8,2);
                                            lcd.print(temp, DEC);lcd.write(5);lcd.print("C");
                                            lcd.setCursor(0,3);
                                            lcd.print("<-Heure      Humi.->");
                                            break;
                                            
                                          case 2 :
                                            clear2lignes();
                                            //333334rduiMeteo33333
                                            //*****Humidite*:*****
                                            //********54%*********
                                            //<-Temp.******Heure->
                                            hum = map(analogRead(A1),0,1023,0,100);
                                            if(hum > Mahum)
                                              Mahum = hum;
                                            if(hum < Mihum)
                                              Mihum = hum;
                                            lcd.setCursor(5,1);
                                            lcd.print("Humidite :");
                                            lcd.setCursor(8,2);
                                            lcd.print(hum, DEC);lcd.print("%");
                                            lcd.setCursor(0,3);
                                            lcd.print("<-Temp.      Heure->");
                                            Serial.println(hum, DEC);
                                            break;
                                            
                                          case 3 :
                                            clear2lignes();
                                            //333334rduiMeteo33333
                                            //110J*02H*50min*20sec
                                            //*****avant noel*****
                                            //<-Humi.******Temp.->
                                            now = RTC.now();
                                            J  = now.day();
                                            Mo = now.month();
                                            A  = now.year();
                                            H  = now.hour();
                                            Mi = now.minute();
                                            S  = now.second();
                                            TotS += S;
                                            TotS += (Mi*60);
                                            TotS += ((H*60)*60);
                                            TotS += ((((J*24)*60)*60)*Mo);
                                            TotS = TotS2 - TotS;
                                            Mi = TotS/60;
                                            H = Mi/60;
                                            J = H/24;
                                            S = (int)TotS%60;
                                            Mi = (int)Mi%60;
                                            H = (int)H%24;
                                            J = (int)J;
                                            
                                            lcd.setCursor(0,1);
                                            lcd.print(J);lcd.print("J ");lcd.print(H);lcd.print("H ");lcd.print(Mi);lcd.print("min ");lcd.print(S);lcd.print("sec");
                                            lcd.setCursor(5,2);
                                            lcd.print("Avant noel");
                                            lcd.setCursor(0,3);
                                            lcd.print("<-Humi.      Temp.->");
                                            break;
                                            
                                          case 4 :
                                            //333334rduiMeteo33333
                                            //Minimale : 10°C*****
                                            //Maximale : 40°C*****
                                            //<-Heure******Humi.->
                                            lcd.setCursor(0,1);
                                            lcd.print("Minimale : ");lcd.print(Mitemp, DEC);lcd.write(5);lcd.print("C  ");
                                            lcd.setCursor(0,2);
                                            lcd.print("Maximale : ");lcd.print(Matemp, DEC);lcd.write(5);lcd.print("C  ");
                                            lcd.setCursor(0,3);
                                            lcd.print("<-Heure      Humi.->");
                                            break;
                                            
                                          case 5 :
                                            //333334rduiMeteo33333
                                            //Minimale : 30%******
                                            //Maximale : 75%******
                                            //<-Temp.******Heure->
                                            lcd.setCursor(0,1);
                                            lcd.print("Minimale : ");lcd.print(Mihum, DEC);lcd.print("%  ");
                                            lcd.setCursor(0,2);
                                            lcd.print("Maximale : ");lcd.print(Mahum, DEC);lcd.print("%  ");
                                            lcd.setCursor(0,3);
                                            lcd.print("<-Temp.      Heure->");
                                            break;
                                            
                                          default:
                                          phase = 0;
                                        }
                                        analogA2 = analogRead(A2);
                                        bout1 = false;
                                        bout2 = false;
                                        bout3 = false;
                                        if(analogA2 > VAL1-SENSIBILITE && analogA2 < VAL1+SENSIBILITE)
                                        {
                                          Serial.println("bt1 ok");
                                          bout1 = true;
                                          bout2 = false;
                                          bout3 = false;
                                        }
                                        else if(analogA2 > VAL2-SENSIBILITE && analogA2 < VAL2+SENSIBILITE)
                                        {
                                          Serial.println("bt2 ok");
                                          bout1 = false;
                                          bout2 = true;
                                          bout3 = false;
                                        }else if(analogA2 > VAL3-SENSIBILITE && analogA2 < VAL3+SENSIBILITE)
                                        {
                                          Serial.println("bt3 ok");
                                          bout1 = false;
                                          bout2 = false;
                                          bout3 = true;
                                        }
                                        if(bout1 && (bout1 != Ancbout1))
                                        {
                                          phase--;
                                          if(phase < 0)
                                            phase = 2;
                                          Serial.print("phase : ");Serial.println(phase);
                                        }
                                        if(bout2 && (bout2 != Ancbout2))
                                        {
                                          phase++;
                                          if(phase > 2)
                                            phase = 0;
                                          Serial.print("phase : ");Serial.println(phase);
                                        }
                                        if(bout3 && (bout3 != Ancbout3))
                                        {
                                            if(phase > 2)
                                              phase -= 3;
                                            else
                                              phase += 3;
                                            if(phase > 5)
                                              phase = 0;
                                            Serial.print("phase : ");Serial.println(phase);
                                        }
                                        
                                        Ancbout1 = bout1;
                                        Ancbout2 = bout2;
                                        Ancbout3 = bout3;
                                      
                                      }
                                      

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      2b||!2b   sqrt(4b²)
                                        16 août 2012 à 14:01:18

                                        Et donc maintenant tu en es ou ? (j'ai perdu le fil des questions ^^)
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Retrouvez moi sur mon blog et ma chaine Youtube !

                                          16 août 2012 à 14:40:34

                                          En gros :
                                          • Communiquer avec une carte SD avec 6 broches digitales et 1 analogique (ou moins)
                                          • trouver une humidistance pas trop chère
                                          • résoudre le bug de noël (+ de jours que prévu)
                                          • Mon code pour afficher la température ne marche pas (il affiche 2)
                                          V2 = map(analogRead(A0),0,1023,0,5000);
                                          V2 /= 1000;
                                          R1 = (500000-V2*100000)/V2;
                                          temp=(int)(2*R1-109,2);
                                          Serial.println(temp);
                                          

                                          Plus exactement :
                                          Pour communiquer avec la SD normalement j'ai tout sauf les résistance et la confirmation que sa marche,
                                          le schéma :
                                          Image utilisateur

                                          le code

                                          Pour l'humidistance j'en ais trouver a 5€ avec capteur de température et communication SPI () ou d’après Morgus je m'en fais un gratuit (comment ?)

                                          Pour le reste tout est dit :)
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          2b||!2b   sqrt(4b²)
                                            16 août 2012 à 15:01:40

                                            Quel est le type de tes variables V2 et R1 ?

                                            Pour la SD il me semble qu'il te faut les broches servant au protocole MOSI de libre...
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Retrouvez moi sur mon blog et ma chaine Youtube !

                                              16 août 2012 à 18:19:15

                                              V2 et R1 sont des doubles.

                                              Protocole MOSI ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              2b||!2b   sqrt(4b²)
                                                16 août 2012 à 18:24:41

                                                MOSI c'est une des broches du SPI (master out slave in)
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                64kB de mémoire, c'est tout ce dont j'ai besoin
                                                  16 août 2012 à 18:28:44

                                                  Autant pour moi, protocole SPI ! (dont une des broches s'appelle MOSI).

                                                  Pour ton code, ligne 3, tu peux simplifier ton calcul en faisant (500000/V2)-100000;
                                                  A la ligne 2 par précaution tu peux aussi mettre 1000.0 au lieu de 1000 (mais a priori ca ne changera rien).
                                                  Ensuite peux tu expliquer le but des lignes 3 et 4 (je sais que ca fait une conversion de tension en temperature (degree celsius je suppose) mais j'aimerais connaitre le détail du pourquoi du comment)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Retrouvez moi sur mon blog et ma chaine Youtube !

                                                    16 août 2012 à 18:42:03

                                                    le code commenté :
                                                    V2 = map(analogRead(A0),0,1023,0,5000);//conversion en millivolts
                                                    V2 /= 1000;//transformation en volts
                                                    R1 = (500000-V2*100000)/V2;//calcul de la résistance du thermomètre (pont diviseur avec une résistance de 10K)
                                                    temp=(int)(2*R1-109,2);//j'ai prit 2 points de températures avec la résistance du capteur et je les ai traduit en fonction affine 
                                                    Serial.println(temp);
                                                    


                                                    pour la SD d’après le schéma non, mais bon, pour l'instant je sais pas.

                                                    EDIT :
                                                    les valeurs reçu a chaque étapes :
                                                    V2 = map(analogRead(A0),0,1023,0,5000);
                                                    //V2 = 1031.00
                                                    V2 /= 1000.0;
                                                    //V2 = 1.03
                                                    R1 = (500000/V2)-100000;
                                                    //R1 = 384966.03
                                                    temp=(int)(2*R1-109,2);
                                                    //temp = 2
                                                    
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    2b||!2b   sqrt(4b²)
                                                      16 août 2012 à 19:04:28

                                                      Et donc ca affiche toujours deux ?
                                                      Tu n'es pas obligé de caster sur un int ton résultat final, Serial.print() affiche très bien les double :)
                                                      Et comment tu t'y prend pour tester que la valeur évolue correctement ? (essaie d'afficher directement dans ta console la valeur de la conversion analogique par exemple)
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Retrouvez moi sur mon blog et ma chaine Youtube !

                                                        16 août 2012 à 19:36:23

                                                        Sa affiche toujours 2.
                                                        En faisant un Serial.print();
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        2b||!2b   sqrt(4b²)
                                                          16 août 2012 à 19:37:57

                                                          Un print de quoi ?
                                                          Et comment tu tests ton thermomètre (physiquement parlant) ?
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          Retrouvez moi sur mon blog et ma chaine Youtube !

                                                            16 août 2012 à 19:55:28

                                                            ben un print des valeurs que je reçois, comme ça :
                                                            V2 = map(analogRead(A0),0,1023,0,5000);
                                                            Serial.print(V2);Serial.print("-");
                                                            V2 /= 1000.0;
                                                            Serial.print(V2);Serial.print("-");
                                                            R1 = (500000/V2)-100000;
                                                            Serial.print(R1);Serial.print("-");
                                                            temp=(int)(2*R1-109,2);
                                                            Serial.println(temp);
                                                            


                                                            et pour tester mon thermomètre, je met un ohmmètre a ses bornes, et je prend un autre qui va m'afficher la température, comme dit tout en haut :

                                                            Citation : diode

                                                            Par exemple, je sais qu'a 16.6°C sa résistance est à 62.9K et a 16.4, elle est à 63K, donc comment savoir que un nombre de 0 à 1023 va donner tant de degrés ?

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            2b||!2b   sqrt(4b²)
                                                              16 août 2012 à 20:00:10

                                                              Et le premier print affiche toujours la meme chose ??

                                                              Tu as pris quoi comme temperature/valeurs pour faire tes calculs de fonctions affine ?
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Retrouvez moi sur mon blog et ma chaine Youtube !

                                                              [projet] Station météo

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown