首页 百科知识 非接触式超声波触觉软件的编写

非接触式超声波触觉软件的编写

时间:2024-10-04 百科知识 版权反馈
【摘要】:第一个为底层驱动程序,就是驱动超声波传感器得到距离值,然后传递给嵌入式控制器,嵌入式控制器驱动显示屏显示距离值,如图6.4.3所示;另一个为嵌入式控制板程序。

这里使用超声波传感器进行距离的测量,然后在嵌入式控制器的显示器上面显示结果,那么就有两个方面的程序需要编写。第一个为底层驱动程序,就是驱动超声波传感器得到距离值,然后传递给嵌入式控制器,嵌入式控制器驱动显示屏显示距离值,如图6.4.3所示;另一个为嵌入式控制板程序。

图6.4.3 在嵌入式控制器上的显示屏所显示的GUI界面

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

#include 〈Wire.h〉

#define SLAVE_ADDRESS 0x04

int number = 0;

int state = 0;

const int ping Tig = 15;//PC1

cons tint ping Eco = 14;//PC0

void setup() {

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

pin Mode(ping Tig, OUTPUT);

pin Mode(ping PEco, INPUT);

// initialize i2c as slave

Wire.begin(SLAVE_ADDRESS);

// define callbacks for i2c communication

Wire.on Receive(receive Data);

Wire.on Request(send Data);

Serial.println("Ready!");

}

void loop()

{

long duration, inches, cm;

digital Write(ping Tig, LOW);

delay Microseconds(2);

digital Write(ping Tig, HIGH);

delay Microseconds(5);

digital Write(ping Tig, LOW);

duration = pulse In(ping Eco, HIGH);

inches = microseconds To Inches(duration);

cm = microseconds To Centimeters(duration);

delay(100);

}

long microseconds To Inches(long microseconds)

{

return microseconds / 74 / 2;

}

long microseconds To Centimeters(long microseconds)

{

return microseconds / 29 / 2;

}

// callback for received data

void receive Data(int byte Count){

}

// callback for sending data

void send Data(){

Wire.write(inches);

}

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

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 = ‘Distance:’+str(number)+’in’

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()

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

我要反馈