查看“Arduino小车”的源代码
←
Arduino小车
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于这些用户组的用户使用:
用户
,labplus
您可以查看与复制此页面的源代码。
[[文件:arduino_car.png|400px|缩略图|右 ]]<br /> == 概述 == 由UNO和UNO拓展板、blue:bit模块搭建的简易arduino小车。可实现循迹和红外控制、避障功能。<br /> == 使用教程 == <br /> :<font size=3px>本例程含循迹和红外遥控、避障功能,可通过遥控切换模式。当按下“*”键,进入循迹模式,当按下“#”,进入红外遥控模式。 在红外遥控模式下,按键↑↓←→可操控小车,ok键为停止。当按下“0”,进入避障模式</font > <br/> <br/> <br/> [[File:AruinoCarTracking.gif|800px|center|缩略图|<div style="text-align:center"> 循迹</div> ]] <br/> <br/> <br/> [[File:ArduinoCar_Control.gif|800px|center|缩略图|<div style="text-align:center"> 红外遥控</div> ]] <br/> <br/> <br/> [[File:ArduinoCar_避障.gif|800px|center|缩略图|<div style="text-align:center"> 避障</div> ]] <br/> <br/> <br/> === <font size=3px>组装说明</font> === :{|style="background-color:#FCF8E3;color:#8A6D3B;" |-style="vertical-align:center;" |[[File:点击下载.png|30px|center]] | |} <br/> <br/> <br/> === <font size=3px>电子模块清单</font> === {| class="wikitable" border="0" cellpadding="2" width="20%" !模块名称||数量 |- |UNO主控板||x1 |- |UNO拓展板||x1 |- |TT马达+轮子||x2 |- |blue:bit循迹模块||x1 |- |blue:bit红外接收||x1 |- |blue:bit超声波||x1 |} === <font size=3px>电子模块连接说明</font> === {| class="wikitable" |- ! 模块 !!引脚 !! 说明 |- | UNO主控板 || UNO拓展板|| |- | TT马达(小车左) ||MB || |- | TT马达(小车右) ||MA || |- | 循迹模块 ||VCC ->V<br/> D2 ->A2<br/> D1 ->A1<br/> GND ->G<br/>||连接到UNO拓展板 |- | 红外接收模块 ||VCC ->V<br/> RXI ->3<br/> TXD ->2<br/> GND ->G<br/>||连接到UNO拓展板 |- | 超声波模块 ||VCC ->V<br/> ECHO ->SDA<br/> TRIG ->SCL<br/> GND ->G<br/>||连接到UNO拓展板 |- |电池盒 ||UNO拓展板的DC电源座|| |} {| |- | [[文件:ArduinoCar Cone.png|700px|缩略图|700px|左|小车电子模块连接示意图]] |} <br /> === <font size=3px>Arduino程序</font> === {|style="background-color:#FCF8E3;color:#8A6D3B;" |-style="vertical-align:center;" |[[File:点击下载.png|30px|center]] |[[:File:AruinoCar.ino]] |} <pre style="color:blue"> /************************************************* Copyright:wiki.labplus.cn Author:tangliufeng Date:10/8/2018 Description:由arduino电机驱动板加UNO+循迹模块+红外模块拼装的小车 1.循迹功能:按键“*”,进入循迹模式 2.红外遥控:按键“#”,进入遥控模式,使用方向键控制小车行走 2.避障:按键“0”,进入避障模式 **************************************************/ #include <Wire.h> #include <SoftwareSerial.h> #include <arduino.h> char info[50]; uint8_t Car_Mode = 0; uint8_t Move = 0; uint8_t buf; #define LEFT_SPEED 90 #define RIGHT_SPEED 100 //IR Button Value #define IR_1 0x00 #define IR_2 0x80 #define IR_3 0x40 #define IR_4 0x20 #define IR_5 0xA0 #define IR_6 0x60 #define IR_7 0x10 #define IR_8 0x90 #define IR_9 0x50 #define IR_0 0xB0 #define IR_star 0x30 #define IR_well 0x70 #define IR_UP 0x88 #define IR_DWN 0x98 #define IR_L 0x28 #define IR_R 0x68 #define IR_OK 0xA8 SoftwareSerial irSerial(2, 3); //rx P2,tx P3 connection IR Receive moudle void setup() { Wire.begin(); Serial.begin(115200); irSerial.begin(115200); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(A1, INPUT); pinMode(A2, INPUT); forward(LEFT_SPEED, RIGHT_SPEED); } void loop() { if (irSerial.available() > 0) { buf = irSerial.read(); //Serial.println(buf, HEX); switch (buf) { case IR_star: Car_Mode = 0; Serial.println("tracking mode"); break; case IR_well: Car_Mode = 1; Serial.println("control mode"); break; case IR_0: Car_Mode = 2; Serial.println("elude mode"); break; case IR_UP: Move = 1; break; case IR_DWN: Move = 2; break; case IR_L: Move = 3; break; case IR_R: Move = 4; break; case IR_OK: Move = 0; break; default: break; } buf = 0; } if (Car_Mode == 1) { switch (Move) { case 0: stop(); break; case 1: forward(LEFT_SPEED, RIGHT_SPEED); break; case 2: back(LEFT_SPEED, RIGHT_SPEED); break; case 3: turnLeft(RIGHT_SPEED); break; case 4: turnRight(LEFT_SPEED); break; default: break; } } if (Car_Mode == 2) { //Serial.println(Distance()); if (Distance() < 12) { stop(); back(LEFT_SPEED, RIGHT_SPEED); delay(500); analogWrite(5, RIGHT_SPEED); analogWrite(6, 0); analogWrite(9, LEFT_SPEED); analogWrite(10, 0); delay(200); } else { forward(LEFT_SPEED, RIGHT_SPEED); } delay(10); } if (Car_Mode == 0) { tracking(); } } void tracking() { //sprintf(info, "D1:%d D2:%d\r\n", digitalRead(A1), digitalRead(A2)); //Serial.print(info); if (digitalRead(A1) == 0 && digitalRead(A2) == 1) { turnLeft(RIGHT_SPEED); Serial.println("Left"); } else if (digitalRead(A1) == 1 && digitalRead(A2) == 0) { turnRight(LEFT_SPEED); Serial.println("Right"); } else { forward(LEFT_SPEED, RIGHT_SPEED); } } void forward(uint8_t left_speed, uint8_t right_speed) { analogWrite(5, right_speed); analogWrite(6, 0); analogWrite(9, 0); analogWrite(10, left_speed); } void back(uint8_t left_speed, uint8_t right_speed) { analogWrite(5, 0); analogWrite(6, right_speed); analogWrite(9, left_speed); analogWrite(10, 0); } void stop() { analogWrite(5, 0); analogWrite(6, 0); analogWrite(9, 0); analogWrite(10, 0); } void turnLeft(uint8_t speed) { analogWrite(5, speed); analogWrite(6, 0); analogWrite(9, 0); analogWrite(10, 0); } void turnRight(uint8_t speed) { analogWrite(5, 0); analogWrite(6, 0); analogWrite(9, 0); analogWrite(10, speed); } uint8_t Distance() { int i = 0; uint8_t cm; uint8_t temp[2]; Wire.beginTransmission(0x0b); //传输给从机设备0x0B Wire.write(1); //发送1指令 Wire.endTransmission(); //结束传输 Wire.requestFrom(0x0b, 2); //接收从机设备0x0B,长度2字节 while (Wire.available()) { temp[i] = Wire.read(); i++; } return cm = (temp[0] + temp[1] * 256) / 10; } </pre> === <font size=3px>Mixly图形化程序</font> === <font size=3px>该程序使用mixly(集成blue:bit插件库)编写,请用mixly软件打开!http://www.labplus.cn/index.php/product/download</font> {|style="background-color:#FCF8E3;color:#8A6D3B;" |-style="vertical-align:center;" |[[File:点击下载.png|30px|center]] |[[File:ArduinoCar.rar]] |} {| |- |[[File:ArduinoCarPro.png|1200px]] |} == 版本历史记录 == {| border="1" cellspacing="0" align="left" cellpadding="0" width="60%" style="text-align:center;" |- style="text-align:center;background-color:#6fa8dc;color:#fffff;" !width="10%"|Version !!width="15%"| Date !! <small>新增/删除/修复</small> |- |
返回至
Arduino小车
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
软件
Labplus软件
mPython软件
Mixly集成盛思版
mpython_conn
教学套件
创客初级实验箱
创客初级实验箱进阶版
创客中级实验箱
创客中级实验箱Ⅱ
人工智能交互实验箱
桌面机器人
乐动魔盒
可穿戴作品电子套件
创意触摸板套装
乐动魔块中级套装
乐动魔块高级套装
bot:bit
编程造物套装
逻辑造物套装
人工智能套装
物联网套装
高中信息技术套装
掌控板初级套装
初中信息技术材料包
开源硬件教学套装
冲锋舟
造物
Arduino
乐动魔块(旧版)
Blue:bit电子积木
MicroBit系列
掌控板系列
AI摄像头V1.0
AI摄像头V2.0
1956
掌控魔盒
乐动掌控
乐动魔块
互动作品
森林奇遇记
创客森林
创客乐园
物联网演示系统
博物馆防盗演示实验系统
梦想舞台演示实验系统
智能家居演示实验系统
智能教室演示实验系统
智能停车场演示实验系统
DIY-木板系列
嘘寒问暖
硬币存款机
吼一声试试
斜不胜正灯
时光葫芦
旋转转盘
越光宝盒
治愈系萌犬
光明使者
避障机械车
DIY-亚克力系列
情绪机器人
创意七彩灯
温湿度机器人
留言机
游龙戏灯
三色时钟
光影精灵
光影时钟
智能应用系列
LED眼镜
32x16 RGB LED点阵屏
DIY环境温湿度显示系统
DIY创客空间访客记录仪
其他
金属结构件套装
耗材存取管理柜
更多
课程资源
常见问题解答
Arduino语法参考手册
链接
Labplus官网
STEAM创客教育平台
工具
链入页面
相关更改
特殊页面
页面信息