Grove Temperature&Humidity Sensor Pro

Grove is a modulated, ready-to-use tool set.
Much like Lego, it takes a building block approach to assembling electronics.

Moderators: lily.li, violet, jeremy882, crail.lyu969

Post Reply
newbseeed
Pre-kindergarten
Pre-kindergarten
Posts: 3
Joined: Tue Feb 28, 2012 9:53 am
Are you a staff member of seeedstudio?: no
Which products/projects are your favorite?: seeeduino film

Grove Temperature&Humidity Sensor Pro

Post by newbseeed » Sat Mar 17, 2012 9:12 am

m'kay, so im using the grove temp/hum sensor on a seeeduino film board. I have the signal connected to Ao vcc to vcc, gnd to gnd, nc not connected, etc, etc. anyhow, I'm using the exact code on the wiki, and as a look at my console all is see is "dht11 start condition 2 not met" over and over and over.... is this because the data shield is necessary? is going directly to the seeeduino film the wrong thing to do? here is the wiki code for reference. maybe if someone could explain to me the lines of code where it generates this message....

Code: Select all


#define DHT11_PIN 0      // ADC0
 
byte read_dht11_dat()
{
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++){
 
 
    while(!(PINC & _BV(DHT11_PIN)));  // wait for 50us
    delayMicroseconds(30);
 
    if(PINC & _BV(DHT11_PIN)) 
      result |=(1<<(7-i));
    while((PINC & _BV(DHT11_PIN)));  // wait '1' finish
 
 
  }
  return result;
}
 
 
void setup()
{
  DDRC |= _BV(DHT11_PIN);
  PORTC |= _BV(DHT11_PIN);
 
  Serial.begin(9600);
 
  Serial.println("Ready");
}
 
void loop()
{
  byte dht11_dat[5];
  byte dht11_in;
  byte i;
  // start condition
  // 1. pull-down i/o pin from 18ms
  PORTC &= ~_BV(DHT11_PIN);
  delay(18);
  PORTC |= _BV(DHT11_PIN);
  delayMicroseconds(40);
 
  DDRC &= ~_BV(DHT11_PIN);
  delayMicroseconds(40);
 
  dht11_in = PINC & _BV(DHT11_PIN);
 
  if(dht11_in){
    Serial.println("dht11 start condition 1 not met");
    return;
  }
  delayMicroseconds(80);
 
  dht11_in = PINC & _BV(DHT11_PIN); //what the heck does this do?????
 
  if(!dht11_in){
    Serial.println("dht11 start condition 2 not met");
    return;
  }
  delayMicroseconds(80);
  // now ready for data reception
  for (i=0; i<5; i++)
    dht11_dat[i] = read_dht11_dat();
 
  DDRC |= _BV(DHT11_PIN);
  PORTC |= _BV(DHT11_PIN);
 
  byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];
  // check check_sum
  if(dht11_dat[4]!= dht11_check_sum)
  {
    Serial.println("DHT11 checksum error");
  }
 
  Serial.print("Current humdity = ");
  Serial.print(dht11_dat[0], DEC);
  Serial.print(".");
  Serial.print(dht11_dat[1], DEC);
  Serial.print("%  ");
  Serial.print("temperature = ");
  Serial.print(dht11_dat[2], DEC);
  Serial.print(".");
  Serial.print(dht11_dat[3], DEC);
  Serial.println("C  ");
 
  delay(2000);
}


schmron
Elementary-1
Elementary-1
Posts: 145
Joined: Mon Dec 05, 2011 6:12 am

Re: Grove Temperature&Humidity Sensor Pro

Post by schmron » Sat Mar 17, 2012 5:26 pm

Code: Select all

#define DHT11_PIN 0
You define digital port 0.
DHT communicate digital, not analog. If you want to use analog port use its digital portnumber (A0 = 14).

http://www.instructables.com/id/How-to- ... ith-no-ex/

http://arduino.cc/en/Tutorial/AnalogInputPins
http://arduino.cc/en/Tutorial/DigitalPins

*edit*
Use a library like this:
https://github.com/adafruit/DHT-sensor-library
or
http://arduino.cc/playground/Main/DHT11Lib
Best regards from Vienna/Austria
Rony

Post Reply