首页 百科知识 利用嵌入式系统监测运行状态

利用嵌入式系统监测运行状态

时间:2022-10-04 百科知识 版权反馈
【摘要】:可以使用嵌入式控制板来显示红外避障模块的当前状态,因为嵌入式控制板上搭建了一个7寸的HDMI显示屏,可以把它当成平常Windows系统的计算机使用。通常在计算机上面用串口调试助手来显示相关信息。void motospd //电机速度控制函数,括号内分别为左右电机速度值,if //所有传感器都没有检测到障碍物if //左传感器检测到障碍物if //右传感器检测到障碍物if //中传感器检测到障碍物# This is the address we setup in the Arduino Program

可以使用嵌入式控制板来显示红外避障模块的当前状态,因为嵌入式控制板上搭建了一个7寸的HDMI显示屏,可以把它当成平常Windows系统的计算机使用。通常在计算机上面用串口调试助手来显示相关信息。

底层控制板范例如下:

#include 〈Wire.h〉

#define SLAVE_ADDRESS 0x04

int number = 0;

int state = 0;

int SNUM[3] ;

int INA = 4; //电机 A 正反转控制端

int PWMA = 5; //电机 A 调速端

int INB = 7; //电机 B 正反转控制端

int PWMB = 6; //电机 B 调速端

void motospd(int sp1,int sp2) //电机速度控制函数,括号内分别为左右电机速度值,

{ //范围-255~+255,正值为正转,负值为反转。

if(sp1〉0)

digital Write(INA, HIGH);

else

digital Write(INA, LOW);

if(sp2〉0)

digital Write(INB, HIGH);

else

digital Write(INB, LOW);

analog Write(PWMA,abs (sp1));

analog Write(PWMB,abs (sp2));

}

void setup() {

pin Mode(8, INPUT); //配置左传感器 IO 口为输入

pin Mode(14, INPUT); //配置中传感器 IO 口为输入

pin Mode(15, INPUT); //配置右传感器 IO 口为输入

pin Mode(INA,OUTPUT);

pin Mode(INB,OUTPUT);//配置电机驱动 IO 口为输出

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

Serial.println("Ready!");

}

void loop() {

SNUM[0] = digital Read(8);//左传感器赋值

SNUM[1] = digital Read(14); //中传感器赋值

SNUM[2] = digital Read(15); //右传感器赋值

if ((SNUM[0]==1)&&(SNUM[1]==1)&&(SNUM[2]==1))//所有传感器都没有检测到障碍物

motospd(100,100); //直行

if ((SNUM[0]==0)&&(SNUM[1]==1)&&(SNUM[2]==1)) //左传感器检测到障碍物

{

motospd(-100,-100); //后退

delay(50);

motospd(100,50); //右转

}

if ((SNUM[0]==1)&&(SNUM[1]==1)&&(SNUM[2]==0)) //右传感器检测到障碍物

{

motospd(-100,-100); //后退

delay(50);

motospd(50,100); //左转

}

if ((SNUM[0]==0)&&(SNUM[1]==0)&&(SNUM[2]==0)) //中传感器检测到障碍物

{

motospd(-100,-100); //后退

delay(50);

motospd(50,100); //左转

}

delay(50);

}

// callback for received data

void receive Data(int byte Count){

}

// callback for sending data

void send Data(){

int i;

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

{

Wire.write(SNUM[i]);

}

}

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

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

number1 = read Number()

number2 = read Number()

print "Left IR:", number

print " "

print "Centre IR:"number1

print " "

print "Right IR:" number2

print

运行本程序会在屏幕上显示串口打印出来的数据,通过查看数据,即可得知红外避障传感器是否正常工作。

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

我要反馈