先在
http://www.rpilink.com网站上注册用户和下载客户端,详细见万博网页版登陆页派引脚远程控制
在万博网页版登陆页派上启动客户端,使万博网页版登陆页派处于在线状态。
配置好万博网页版登陆页派的I2C接口,使接口处于可用状态,详情见万博网页版登陆页派i2c配置
选择菜单“数据采集”,新建一条数据采集。
然后按照下图配置好,以下3个设备,水位传感器,arduino uno,万博网页版登陆页派。(可以按照自己有的设备接入)
然后点击数据查看的“实时曲线”即可看到实时数据。
将传感器放入水中,可以看到数据变化。注意该数据只是读取的模拟量,可以自行换算成水位信息。
以下是arduino的程序示例(注意直接发送int型值可能会有问题,需换成byte[] 发送):
#include <Wire.h>
int sensorPin = A0;
int sensorValue = 0;
void setup()
{
Wire.begin(4); // join i2c bus with address #2
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent); // register event
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin);
//Serial.print(sensorValue);
delay(2000);
}
byte* getByteFromInt(int value){
if(value<256){
byte re[2]={00,value};
return re;
}else{
int low=value&0xFF;
int h=value>>8;
int high=h&0xFF;
byte re[2]={high,low};
return re;
}
}
// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent()
{
byte* bb=getByteFromInt(sensorValue);
Wire.write(bb,2);
}
void receiveEvent(int howMany)
{
while (1 < Wire.available()) // loop through all but the last
{
char c = Wire.read(); // receive byte as a character
Serial.print(c); // print the character
}
int x = Wire.read(); // receive byte as an integer
Serial.print(x); // print the integer
}
原文地址:
http://blog.csdn.net/rpilink/article/details/19123935