以下代码可通过VNC远程登陆树莓派,通过杜邦线将树莓派与机器人连接,从而达到在电脑上操控小车。
html网页代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Robot</title>
<style>
* {
color: red
}
</style>
</head>
<body>
<form action='/' method='post'>
<table align='center' height='90' width='90'>
<tr align='center'><td></td><td><input type='submit' name='function' value='run'></td><td></td></tr>
<tr align='center'><td><input type='submit' name='function' value='left'></td><td>null</td><td><input type='submit' name='function' value='right'></td></tr>
<tr align='center'><td></td><td><input type='submit' name='function' value='stop'></td><td></td></tr>
</table>
</form>
</body>
</html>
树莓派代码:
from flask import Flask, request
from gpiozero import LED
led1 = LED(17)//接口17
led2 = LED(27)//接口27
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def hello_world():
if request.method == 'POST':
if request.form['function'] == 'stop':
led1.off()
led2.off()
print('stop')
if request.form['function'] == 'run':
led1.on()
led2.on()
print('run')
if request.form['function'] == 'left':
led1.on()
led2.off()
print('left')
if request.form['function'] == 'right':
led1.off()
led2.on()
print('right')
return app.send_static_file('index.html')
小车代码:
// 崇宏感测 CHGC www.chgckj.com
#include <includes.h>
int CHGCi;
#define Gray 300
#define P 10 //转弯时的速度
void run(int m,int p);
void line(void);
void stop(void);
void TurnLeft(int n);
void TurnRight(int n);
void motstop(void);
void mainX1(void)
{
}
void mainX2(void)
{
}
void mainX3(void)
{
}
void mainX4(void)
{
}
void mainX5(void)
{
}
void mainX6(void)
{
}
void mainX7(void)
{
}
void mainX(void *p_arg)
{
test();
//寻线
while(1)
{
line();
}
stop();
set_name(MAINX1,"main1");
set_name(MAINX2,"main2");
set_name(MAINX3,"main3");
set_name(MAINX4,"main4");
// .... x7
select_main();
}
void line(void)
{
if(analog(23)>100&&analog(24)>100){
run(P,P);
sleep(5);
msleep(100);
}
if(analog(23)<100&&analog(24)<100){
stop();
}
if(analog(23)<100&&analog(24)>100){
TurnRight(10);
}
if(analog(23)>100&&analog(24)<100){
TurnLeft(10);
}
}
void run(int m,int p)
{
motor(1,m);
motor(2,p);
}
void TurnLeft(int n) //左转
{
float t, slp, mslp;
t = 5.8 * n;
slp = (int)t / 1000;
mslp = (int)t % 1000;
run(P, -P);
sleep(slp);
run(P, -P);
msleep(mslp);
}
void TurnRight(int n) //右转
{
float t, slp, mslp;
t = 5.8 * n;
slp = (int)t / 1000;
mslp = (int)t % 1000;
run(-P, P);
sleep(slp);
run(-P, P);
msleep(mslp);
}