极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17163|回复: 9

【求助】SHT1x库与Arduino 1.01不兼容啊

[复制链接]
发表于 2012-7-23 21:43:57 | 显示全部楼层 |阅读模式
搞了个SHT10,结果发现网上找的库用不了,后来用Arduino 0023试了一下完全正常。

再测试一下发现应该是校检第二个时钟出错了(Ack Error 1),然后把库里的sendCommandSHT拉出来单测了一下,确定是这个子程序有问题。
开始以为是shiftout命令有问题,然后用digitalWrite命令重写了一遍,发现问题同样存在。
请各位大侠帮忙找找原因。

下面是附图,取湿度的命令是00101,去温度是00011。前三位地址是000。


这部分代码见下面……把Arduino.h换成Wprogram.h在0023下运行就不会报错……
  1. #include <Arduino.h>

  2. #define dataPin  10
  3. #define clockPin 11

  4. void setup(){
  5.   Serial.begin(9600);
  6.   int gTempCmd  = 0b00000011;
  7.   
  8.   sendCommandSHT(gTempCmd, dataPin, clockPin);
  9. }

  10. void loop(){
  11. }

  12. void sendCommandSHT(int _command, int data, int clock){
  13. int ack;

  14.   // Transmission Start
  15.   pinMode(data, OUTPUT);
  16.   pinMode(clock, OUTPUT);
  17.   digitalWrite(data, HIGH);
  18.   digitalWrite(clock, HIGH);
  19.   digitalWrite(data, LOW);
  20.   digitalWrite(clock, LOW);
  21.   digitalWrite(clock, HIGH);
  22.   digitalWrite(data, HIGH);
  23.   digitalWrite(clock, LOW);
  24.   

  25.   // The command (3 msb are address and must be 000, and last 5 bits are command)
  26.   shiftOut(data, clock, MSBFIRST, _command);
  27.   /*digitalWrite(data, LOW);
  28.   digitalWrite(clock, HIGH);
  29.   digitalWrite(clock, LOW);//1
  30.   digitalWrite(clock, HIGH);
  31.   digitalWrite(clock, LOW);//2
  32.   digitalWrite(clock, HIGH);
  33.   digitalWrite(clock, LOW);//3
  34.   digitalWrite(clock, HIGH);
  35.   digitalWrite(clock, LOW);//4
  36.   digitalWrite(clock, HIGH);
  37.   digitalWrite(clock, LOW);//5
  38.   digitalWrite(clock, HIGH);
  39.   digitalWrite(clock, LOW);//6
  40.   digitalWrite(data, HIGH);
  41.   digitalWrite(clock, HIGH);
  42.   digitalWrite(clock, LOW);//7
  43.   digitalWrite(clock, HIGH);
  44.   digitalWrite(clock, LOW);//8
  45.   */
  46.   


  47.   // Verify we get the correct ack
  48.   digitalWrite(clock, HIGH);
  49.   pinMode(data, INPUT);
  50.   ack = digitalRead(data);
  51.   if (ack != LOW) {
  52.     Serial.println("Ack Error 0");
  53.   }
  54.   digitalWrite(clock, LOW);
  55.   ack = digitalRead(data);
  56.   if (ack != HIGH) {
  57.     Serial.println("Ack Error 1");
  58.   }
  59. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-7-23 21:50:05 | 显示全部楼层
不懂帮顶
回复 支持 反对

使用道具 举报

发表于 2012-7-24 07:57:47 | 显示全部楼层


我这个试试,1.01的库

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-24 08:50:21 | 显示全部楼层
飞翔的红猪 发表于 2012-7-24 07:57
我这个试试,1.01的库

谢谢了,不过还是用不了,我已经和原作者联系过了,好像确实存在这个问题
回复 支持 反对

使用道具 举报

发表于 2012-7-24 10:12:32 | 显示全部楼层
再检查一下你的硬件是否符合要求,有时缺的就是一个合适的上拉电阻,湿度低字节就可能全是ff。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-25 09:48:05 | 显示全部楼层
飞翔的红猪 发表于 2012-7-24 10:12
再检查一下你的硬件是否符合要求,有时缺的就是一个合适的上拉电阻,湿度低字节就可能全是ff。。

直接买的焊好的,所以应该没有问题。而且在1.0里测试了,完全没问题的
回复 支持 反对

使用道具 举报

发表于 2012-7-25 18:20:22 | 显示全部楼层
我今天自己做了一个sht10模块,1.0.1下稳定运行。。。明天我写个帖子,把代码和库发出哈。
回复 支持 反对

使用道具 举报

发表于 2012-12-11 10:29:55 | 显示全部楼层
我的读数有问题啊~~~-40几度
回复 支持 反对

使用道具 举报

发表于 2013-1-29 16:28:46 | 显示全部楼层
飞翔的红猪 发表于 2012-7-24 07:57
我这个试试,1.01的库

今天遇到问题,下了这个. 好使...
回复 支持 反对

使用道具 举报

发表于 2013-8-11 14:21:46 | 显示全部楼层
飞翔的红猪 发表于 2012-7-24 10:12
再检查一下你的硬件是否符合要求,有时缺的就是一个合适的上拉电阻,湿度低字节就可能全是ff。。


你的这个库好用,可以用在IDE1.0.2上面,而且店主确实忘了10k电阻,谢谢提醒!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-6-4 00:45 , Processed in 0.045555 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表