首页 百科知识 非接触式温度触觉软件的编写

非接触式温度触觉软件的编写

时间:2022-10-04 百科知识 版权反馈
【摘要】:一个为底层驱动程序,其驱动非接触式红外温度传感器得到温度值,然后传递给嵌入式控制器,嵌入式控制器驱动显示屏显示距离值,如图6.4.4所示;另一个为嵌入式控制板程序。

这里使用非接触式红外温度传感器进行人体温度的测量,然后在嵌入式控制器的显示器上显示结果,那么就有两个方面的程序需要编写。一个为底层驱动程序,其驱动非接触式红外温度传感器得到温度值,然后传递给嵌入式控制器,嵌入式控制器驱动显示屏显示距离值,如图6.4.4所示;另一个为嵌入式控制板程序。

图6.4.4 通过嵌入式控制显示屏显示温度测量的GUI界面

底层控制板(Arduino)的范例程序如下:

#include 〈Wire.h〉

#define SLAVE_ADDRESS 0x04

int number = 0;

int state = 0;

#define Clock Pin 17 // clock in

#define Data Pin 18 //data in

#define Test Pin 19//driver pin set pin low to start deliver data

void data_read(int *p)

{

int i,j,Pin State,temp Data;

digital Write(Test Pin, LOW);

for(i=0;i〈5;i++)

{

for(j=0;j〈8;j++)

{

do{

Pin State = digital Read(Clock Pin);

}while(Pin State);

delay Microseconds(100);

Pin State = digital Read(Data Pin);

if(1 == Pin State)

temp Data = (temp Data〈〈1 & 0xfe)+1;

else

temp Data = (temp Data〈〈1 & 0xfe);

do{

Pin State = digital Read(Clock Pin);

}while(Pin State != 1);

}

*p++ = temp Data;

}

digital Write(Test Pin, HIGH);

}

void setup() {

pin Mode(Data Pin,INPUT);

pin Mode(Clock Pin,INPUT);

pin Mode(Test Pin,OUTPUT);

digital Write(Test Pin, HIGH);

Serial.begin(9600); // start serial for output

// initialize i2c as slave

Wire.begin(SLAVE_ADDRESS);

// define callbacks for i2c communication

Wire.on Receive(receive Data);

Wire.on Request(send Data);

delay(100);

Serial.println("Ready!");

}

void loop()

{

int data_buf[5] = {0};

int temp Data = 0;

while(1)

{

data_read(data_buf);

temp Data = data_buf[1]*256 + data_buf[2];

float real Temp = (float)temp Data/16-273.15;

Serial.print("Temp[C]=");

Serial.println(real Temp);

delay(500);

}

}

// callback for received data

void receive Data(int byte Count){

}

// callback for sending data

void send Data(){

Wire.write(real Temp);

}

嵌入式控制板的范例程序如下:

import smbus

import time

# for RPI version 1, use "bus = smbus.SMBus(0)"

bus = smbus.SMBus(1)

# This is the address we setup in the Arduino Program

address = 0x04

def write Number(value):

bus.write_byte(address, value)

# bus.write_byte_data(address, 0, value)

return -1

def read Number():

number = bus.read_byte(address)

# number = bus.read_byte_data(address, 1)

return number

while True:

number = read Number()

if number == 0

return

message = ‘当前温度值:’+str(number)+’°’

text_surface = font.render(message,True,(127,127,127))

screen.fill(255,255,255)

screen.blit(text_surface,(100,100))

w = screen.get_width()-20

proximity = ((100 - dist)/100.0)*w

if proximity 〈 0:

proximity = 0

pygame.draw.rect(screen,(0,255,0),Rect(10,10),(w,50)))

pygame.draw.rect(screen,(255,0,0))

Rect((10,10),(proximity,50))

Pygame.display.update()

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈