这里使用超声波传感器进行距离的测量,然后在嵌入式控制器的显示器上面显示结果,那么就有两个方面的程序需要编写。第一个为底层驱动程序,就是驱动超声波传感器得到距离值,然后传递给嵌入式控制器,嵌入式控制器驱动显示屏显示距离值,如图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()
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。