【问题标题】:Raspberry Pi Humidity Sensor undefined reference 'pinMode', among othersRaspberry Pi 湿度传感器未定义参考“pinMode”等
【发布时间】:2015-03-25 17:18:12
【问题描述】:

我的任务是找到一个命令提示符,以从安装在 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 终端命令可以从传感器中提取数据?

【问题讨论】:

  • 该代码的语言是 C。您可能无法直接从 Linux 命令轻松获取所需的数据。
  • 按照链接上的步骤在 cd WiringPi 之后执行 ./build 命令时是否遇到任何错误?我想知道wiringPi是否构建不正确
  • ./build 命令没有错误,只是在末尾注释:“要使用wiringPi 编译程序,您需要在编译行中添加:-lwiringPi。要使用Gertboard、MaxDetect 等.code(devLib),你还需要在你的编译行中添加:-lwiringPiDev”
  • 您的错误不是以编译器找不到wiringpi.h 的说法开头的吗?您可能需要发布整个编译器输出来诊断这一点。它基本上告诉你它不知道那些函数是什么,它们应该由wiringpi定义。
  • 谢谢。我有一个高级团队成员。事实证明,这不是他们第一次遇到这个树莓派的问题。感谢您的帮助!

标签: python linux raspberry-pi sensors raspbian


【解决方案1】:

这是C 代码。使用第一行命令编译并运行以下行...

gcc yourfilename.c -o outputfile -lwiringPi
./outputfile

.. 你可以看到读数湿度和温度..(但要小心你的 dht11 传感器连接)

请访问此地址:http://www.uugear.com/portfolio/dht11-humidity-temperature-sensor-module/

【讨论】:

  • 非常感谢。这行得通。但要查看结果,您应该在终端中运行输出文件。
【解决方案2】:

起初这是c语言,而不是python。 pinmode 功能是接线 pi 的一部分。所以显然wiringpi没有正确安装。

【讨论】:

  • 谢谢。我会和我的团队成员核实。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多