今天看到一台嵌入之梦的小车,但是上电之后发了疯似的乱跑,所以刷之。但新车间却没有网络,没办法,自己一点一点试。。结果如下
ct1 接受pwm,控制速度
ct2 前进控制信号,高电位转动
ct3 后退控制信号,高电位转动
但是由于小车上的uno与我的ubuntu连接有问题,貌似只有windows是好的,mac os有时也会出问题。所以最后车上改用了mega 1280。
但是又发现一个问题,就是arduino使用usb供电的时候很正常,然而,使用车上接出来的5v电源时,程序就会混乱,完全没有一点规律。猜测可能是由于电机转动导致整个系统的电压下降,无法提供足够的电压给arduino的板子上。这大概也是之前uno不会发疯的原因。没办法,在小车上再接一块9v层叠式电池,作为arduino的电源。最后终于行了。
后面程序的作用是往前走,遇到前方有物体是后退,打弯,然后继续往前,一个简单的壁障程序。没有用到速度控制。下面就是这个小车最后的样子,手机拍的,将就看吧
左侧照
右侧照
再来一张
用到的程序就是下面的
//author: he qichen
//email: heqichen(a)gaishi.vicp.net
//website: http://gaishi.vicp.net
//date: 2011-5-1
int status;
#define left_speed 6
#define left_forward 7
#define left_backward 8
#define right_speed 10
#define right_forward 11
#define right_backward 12
#define ultrasonic_echo 3
#define ultrasonic_trig 4
#define normal_speed 100
#define stop_speed 0
void setup()
{
serial.begin(9600);
setupmove();
setupultrasonic();
}
void loop()
{
unsigned int d;
moveforward();
d = readdistance();
serial.println(d, dec);
if (d < 700)
{
movebackward();
delay(500);
turnleft();
delay(200);
}
}
void moveforward()
{
analogwrite(left_speed, normal_speed);
digitalwrite(left_backward, low);
digitalwrite(left_forward, high);
analogwrite(right_speed, normal_speed);
digitalwrite(right_backward, low);
digitalwrite(right_forward, high);
}
void movebackward()
{
analogwrite(left_speed, normal_speed);
digitalwrite(left_backward, high);
digitalwrite(left_forward, low);
analogwrite(right_speed, normal_speed);
digitalwrite(right_backward, high);
digitalwrite(right_forward, low);
}
void turnleft()
{
analogwrite(left_speed, normal_speed);
digitalwrite(left_backward, high);
digitalwrite(left_forward, low);
analogwrite(right_speed, normal_speed);
digitalwrite(right_backward, low);
digitalwrite(right_forward, high);
}
void turnright()
{
analogwrite(left_speed, normal_speed);
digitalwrite(left_backward, low);
digitalwrite(left_forward, high);
analogwrite(right_speed, normal_speed);
digitalwrite(right_backward, high);
digitalwrite(right_forward, low);
}
void movestop()
{
analogwrite(left_speed, stop_speed);
digitalwrite(left_backward, low);
digitalwrite(left_forward, low);
analogwrite(right_speed, stop_speed);
digitalwrite(right_backward, low);
digitalwrite(right_forward, low);
}
void setupmove()
{
pinmode(left_speed, output);
pinmode(left_forward, output);
pinmode(left_backward, output);
pinmode(right_speed, output);
pinmode(right_forward, output);
pinmode(right_backward, output);
analogwrite(left_speed, stop_speed);
digitalwrite(left_forward, low);
digitalwrite(left_backward, low);
analogwrite(right_speed, stop_speed);
digitalwrite(right_forward, low);
digitalwrite(right_backward, low);
}
unsigned int readdistance()
{
int duration;
digitalwrite(ultrasonic_trig, low);
delaymicroseconds(2);
digitalwrite(ultrasonic_trig, high);
delaymicroseconds(5);
digitalwrite(ultrasonic_trig, low);
// the same pin is used to read the signal from the ping))): a high
// pulse whose duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
duration = pulsein(ultrasonic_echo, high);
return duration;
}
void setupultrasonic()
{
pinmode(ultrasonic_trig, output);
pinmode(ultrasonic_echo, input);
digitalwrite(ultrasonic_trig, low);
}
Modbus网关BL101 实现Modbus转MQTT
继电器作为负载类型和电流功能的耐久性
介绍一种基于数据包交换的互连体系结构RapidIO
起动机有哪三部分组成
四轴飞行器的结构原理及发展方向
嵌入式四轴遥控小车开发(附带程序)
西门子CPU-1200在线和诊断工具
工程编译和OAD测试过程中的注意事项
快速跟踪其人工智能实施的五种方法
理想、长城、极氪、小米宣布!合作英伟达!
断相保护电路图分享
单臂电桥的使用方法
魅族pro7最新消息,魅族pro7什么时候上市?魅族pro7配置参数全曝光!黄章:“我们只针对小米6”
RFID对物流管理信息化有什么帮助
苹果和三星手机中的环境光和接近传感器对比分析
协作机器人EC66宣传片全球震撼首发
苹果6和坚果pro2哪个好?如何挑选适合的手机
华为荣耀9怎么样?荣耀9颜值与性能并存的毕业季换机首选,玻璃材质的外壳手感丝滑,让你拿得起却舍不得放下
电源插座安装规范_电源插座安装注意事项
长方集团为何如此急于出售惠州长方?