FORUM D’ENTRAIDE INFORMATIQUE (FEI)
Site d’assistance et de sécurité informatique

Entraide pour le programmation en général (tous langages).
Règles du forum : Entraide concernant la programmation informatique en général, tous langages : recherche ou correction d'un code ou d'une fonction, aide à la réalisation d'un projet...
Pour la programmation web (HTML, CSS, PHP, MySQL...), il est conseillé de s'orienter dans le forum Webmastering.
Merci de lire et de respecter la charte générale du forum.
  • Avatar du membre
Avatar du membre
par arduinosensirion
#117563
Bonjour, nous sommes actuellement élèves en terminal, et nous rencontrons un problème avec un code sur Arduino. Nous utilisons un capteur de température et humidité nommé "Sensirion Sht7x" et un capteur CO2 nommé T6615
C'est avec le capteur température et humidité que nous avons une complication.
En effet, dans notre programme, nous avons instauré des librairies qui sont : "Sensirion.h" pour notre capteur et "ColorLCDShield.h" pour afficher les données en local sur un écran LCD (Shield Arduino)
Voici notre code complet :

#include ColorLCDShield.h
#include Sensirion.h

#define BACKGROUND  BLACK  
#define C_COLOR  RED  
#define H_COLOR  BLUE  
#define M_COLOR  GREEN
#define S_COLOR  YELLOW
#define W_COLOR  WHITE

LCDShield lcd;
int recu;
byte envoye;
int test;
char affichageco2 [16];
char affichagetemperature [16];
char affichagehumidite [16];
char mystring[] = "CO2";
char mystring1[] = "Temperature";
char mystring2[] = "Humidite";
char assignationresult;
//Temperature
const uint8_t dataPin =  9;            
const uint8_t sclkPin =  8;            
const uint8_t ledPin  = 13;            
const uint32_t TRHSTEP   = 5000UL;      
const uint32_t BLINKSTEP =  250UL;    
Sensirion sht = Sensirion(dataPin, sclkPin);
uint16_t rawData;
float temperature;
float humidity;
float dewpoint;
 
byte ledState = 0;
byte measActive = false;
byte measType = TEMP;
 
unsigned long trhMillis = 0;            
unsigned long blinkMillis = 0;


void setup()
{
  Serial.begin(9600);
  lcd.init(PHILIPS);
  lcd.contrast(0);
  lcd.clear(BACKGROUND);
  //Temperature
  pinMode(ledPin, OUTPUT);
  delay(15);                            
 sht.measTemp(rawData);                
  temperature = sht.calcTemp(rawData);
  sht.measHumi(rawData);                
  humidity = sht.calcHumi(rawData, temperature);
  dewpoint = sht.calcDewpoint(humidity, temperature);
  logData();
  //
  afficheText();
}

void loop()
{
  envoye=0xFF;
  Serial.write(envoye);
  envoye=0xFE;
  Serial.write(envoye);
  envoye=0x02;
  Serial.write(envoye);
  envoye=0x02;
  Serial.write(envoye);
  envoye=0x03;
  Serial.write(envoye);
  assignationresult = Serial.read();
  assignationresult = Serial.read();
  assignationresult = Serial.read();
  assignationresult = Serial.read();
  sprintf (affichageco2, "%d", assignationresult);
  assignationresult = Serial.read();
 sprintf (affichageco2, "%d", assignationresult);
  //////Temperature
  unsigned long curMillis = millis();
  // Rapidly blink LED.  Blocking calls take too long to allow this.
  if (curMillis - blinkMillis = BLINKSTEP) {  // Time to toggle the LED state?
    ledState ^= 1;
    digitalWrite(ledPin, ledState);
    blinkMillis = curMillis;
  }
 
 // Demonstrate non-blocking calls
  if (curMillis - trhMillis = TRHSTEP) {    
   measActive = true;
    measType = TEMP;
    sht.meas(TEMP, rawData, NONBLOCK);        
    trhMillis = curMillis;
  }
  if (measActive sht.measRdy()) {          
    if (measType == TEMP) {                    
      measType = HUMI;
      temperature = sht.calcTemp(rawData);    
     sht.meas(HUMI, rawData, NONBLOCK);      
    } else {
      measActive = false;
      humidity = sht.calcHumi(rawData, temperature);
      dewpoint = sht.calcDewpoint(humidity, temperature);
      logData();
    }
  }
  //
  
  afficheText();
  delay(1000);
}

//Temperature
void logData() {
  Serial.print("Temperature = ");   Serial.print(temperature);
  Serial.print(" C, Humidity = ");  Serial.print(humidity);
  Serial.print(" %, Dewpoint = ");  Serial.print(dewpoint);
  Serial.println(" C");
}
//

void afficheText()
{
  lcd.setStr(mystring, 0, 50, W_COLOR, BACKGROUND);
  lcd.setStr(affichageco2, 20, 50, W_COLOR, BACKGROUND);
  lcd.setStr(mystring1, 40, 22, W_COLOR, BACKGROUND);
  lcd.setStr(affichagetemperature, 60, 50, W_COLOR, BACKGROUND);
  lcd.setStr(mystring2, 80, 32, W_COLOR, BACKGROUND);
  lcd.setStr(affichagehumidite, 100, 50, W_COLOR, BACKGROUND);
}



C'est à cause de cette ligne que nous sommes bloqués
"Sensirion sht = Sensirion(dataPin, sclkPin);"
Je vous explique, lorsque nous mettons cette ligne, il n'y a aucune erreur, seulement l'écran LCD ne s'allume plus mais nous pouvons voir nos données dans le moniteur directement sur Arduino. Quand nous enlevons toutes les lignes concernant le capteur de température et humidité l'écran s'allume mais il n'y a pas de données malheureusement.

Merci de bien vouloir nous répondre et peut-être nous aider et nous donner une solution à notre problème.

Après quelques recherches, nous pensons que cela vient des bibliothèques utilisées qui rentrent en conflit (ColorLCDShield.h et Sensirion.h)
par KeRR_@
#126284
Bonjour arduinosensirion

J'ai un lien du site tu devrais peux être jetter un coup d'oeil pour voir

Warning to users of some vendors LCD keypad shields.

I mentioned a backlight control issue with a few lcd shields in this thread:
http://arduino.cc/forum/index.php/topic,95618.0.html
This is a follow up to the LCD backlight control issue.
It is definitely an issue for these LCD keypad shields:

Bonne journée.

KeRR_@
par Dori@n
#130960
Image Bonjour,

Ce sujet n'a pas reçu de réponse de l'auteur depuis plus de 15 jours. Il est donc considéré comme archivé.
La prochaine fois, merci de nous tenir au courant de l'évolution de votre problème, ou de faire un UP régulièrement.

Ce sujet est verrouillé, si vous souhaitez le reprendre ou signaler qu'il est résolu, merci de contacter par message privé un membre de l'équipe de modération du forum.

À bientôt sur FEI !
bachelorarbeit

Hola an alle. Ich bin begeistert von der Zusammena[…]

Bonsoir Nous allons procéder à un[…]

Cadeaux High-tech

Bien joué :mdr:

Salut ! Malheureusement il n'y a pas de vraie solu[…]