我的任务是找到一个命令提示符,从Raspberry Pi(第一代)中安装的DHT11湿度传感器中提取数据。
我已关注directions on this page,并将以下代码保存在/ wiringPi目录中。
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#define MAX_TIME 85
#define DHT11PIN 7
int dht11_val[5]={0,0,0,0,0};
void dht11_read_val()
{
uint8_t lststate=HIGH;
uint8_t counter=0;
uint8_t j=0,i;
float farenheit;
for(i=0;i<5;i++)
dht11_val[i]=0;
pinMode(DHT11PIN,OUTPUT);
digitalWrite(DHT11PIN,LOW);
delay(18);
digitalWrite(DHT11PIN,HIGH);
delayMicroseconds(40);
pinMode(DHT11PIN,INPUT);
for(i=0;i<MAX_TIME;i++)
{
counter=0;
while(digitalRead(DHT11PIN)==lststate){
counter++;
delayMicroseconds(1);
if(counter==255)
break;
}
lststate=digitalRead(DHT11PIN);
if(counter==255)
break;
// top 3 transistions are ignored
if((i>=4)&&(i%2==0)){
dht11_val[j/8]<<=1;
if(counter>16)
dht11_val[j/8]|=1;
j++;
}
}
// verify cheksum and print the verified data
if((j>=40)&&(dht11_val[4]==((dht11_val[0]+dht11_val[1]+dht11_val[2]+dht11_val[3])& 0xFF)))
{
farenheit=dht11_val[2]*9./5.+32;
printf("Humidity = %d.%d %% Temperature = %d.%d *C (%.1f *F)\n",dht11_val[0],dht11_val[1],dht11_val[2],dht11_val[3],farenheit);
}
else
printf("Invalid Data!!\n");
}
int main(void)
{
printf("Interfacing Temperature and Humidity Sensor (DHT11) With Raspberry Pi\n");
if(wiringPiSetup()==-1)
exit(1);
while(1)
{
dht11_read_val();
delay(3000);
}
return 0;
}
首先......这是Python还是直接的Linux命令?如果没有,用什么语言? (只是好奇)
最重要的是,当我编译此代码时,根据引用页面上的说明,我得到以下内容:
对'pinMode'的未定义引用 以及其他类似:'digitalWrite','delay','delayMicroseconds','digitalread'和'wiringPiSetup'。
有人可以指出我正确的方向吗?
也许有一个更简单的Linux终端命令可以从传感器中提取数据?
答案 0 :(得分:2)
这是 C代码。使用fisrt line命令编译并运行以下行...
gcc yourfilename.c -o outputfile -lwiringPi
./outputfile
..你可以看到读取湿度和温度..(但要小心你的dht11传感器连接)
请访问此地址:http://www.uugear.com/portfolio/dht11-humidity-temperature-sensor-module/
答案 1 :(得分:0)
首先这是c语言,而不是python。 pinmode功能是布线pi的一部分。因此,无法正确安装布线。