“Arduino小车”的版本间的差异
来自Labplus盛思维基百科
Tangliufeng(讨论 | 贡献) (→电子模块连接说明) |
Tangliufeng(讨论 | 贡献) (→Arduino程序) |
||
第80行: | 第80行: | ||
|} | |} | ||
<pre style="color:blue"> | <pre style="color:blue"> | ||
− | |||
/************************************************* | /************************************************* | ||
第98行: | 第97行: | ||
uint8_t buf; | uint8_t buf; | ||
− | #define | + | #define LEFT_SPEED 80 |
− | #define | + | #define RIGHT_SPEED 80 |
+ | |||
//IR Button Value | //IR Button Value | ||
第133行: | 第133行: | ||
pinMode(A1, INPUT); | pinMode(A1, INPUT); | ||
pinMode(A2, INPUT); | pinMode(A2, INPUT); | ||
− | forward( | + | forward(RIGHT_SPEED,LEFT_SPEED); |
} | } | ||
第142行: | 第142行: | ||
buf = irSerial.read(); | buf = irSerial.read(); | ||
− | Serial.println(buf,HEX); | + | Serial.println(buf, HEX); |
switch (buf) | switch (buf) | ||
第186行: | 第186行: | ||
break; | break; | ||
case 1: | case 1: | ||
− | forward( | + | forward(LEFT_SPEED,RIGHT_SPEED); |
break; | break; | ||
case 2: | case 2: | ||
− | back( | + | back(LEFT_SPEED, RIGHT_SPEED); |
break; | break; | ||
case 3: | case 3: | ||
− | turnLeft( | + | turnLeft(RIGHT_SPEED); |
break; | break; | ||
case 4: | case 4: | ||
− | turnRight( | + | turnRight(LEFT_SPEED); |
break; | break; | ||
default: | default: | ||
第216行: | 第216行: | ||
//sprintf(info, "D1:%d D2:%d\r\n", digitalRead(A1), digitalRead(A2)); | //sprintf(info, "D1:%d D2:%d\r\n", digitalRead(A1), digitalRead(A2)); | ||
//Serial.print(info); | //Serial.print(info); | ||
− | if (digitalRead(A1) == | + | if (digitalRead(A1) == 0 && digitalRead(A2) == 1) |
{ | { | ||
− | turnLeft( | + | turnLeft(RIGHT_SPEED); |
Serial.println("Left"); | Serial.println("Left"); | ||
} | } | ||
− | else if (digitalRead(A1) == | + | else if (digitalRead(A1) == 1 && digitalRead(A2) == 0) |
{ | { | ||
− | turnRight( | + | turnRight(LEFT_SPEED); |
Serial.println("Right"); | Serial.println("Right"); | ||
} | } | ||
else | else | ||
{ | { | ||
− | forward( | + | forward(LEFT_SPEED, RIGHT_SPEED); |
} | } | ||
} | } | ||
− | void forward(uint8_t | + | void forward(uint8_t left_speed,uint8_t right_speed ) |
{ | { | ||
− | analogWrite(5, | + | analogWrite(5, right_speed); |
analogWrite(6, 0); | analogWrite(6, 0); | ||
analogWrite(9, 0); | analogWrite(9, 0); | ||
− | analogWrite(10, | + | analogWrite(10, left_speed); |
} | } | ||
− | void back(uint8_t | + | void back(uint8_t left_speed, uint8_t right_speed) |
{ | { | ||
analogWrite(5, 0); | analogWrite(5, 0); | ||
− | analogWrite(6, | + | analogWrite(6, left_speed); |
− | analogWrite(9, | + | analogWrite(9, right_speed); |
analogWrite(10, 0); | analogWrite(10, 0); | ||
2018年8月9日 (四) 16:49的版本
概述
由UNO和UNO拓展板、blue:bit模块搭建的简易arduino小车。可实现循迹和红外控制功能。
使用教程
- 本例程含循迹和红外遥控两个功能,可通过遥控切换两种模式。当按下“*”键,进入循迹模式,当按下“#”,进入红外遥控模式。
在红外遥控模式下,按键↑↓←→可操控小车,ok键为停止。
组装说明
电子模块清单
模块名称 | 数量 |
---|---|
UNO主控板 | x1 |
UNO拓展板 | x1 |
TT马达+轮子 | x2 |
blue:bit循迹模块 | x1 |
blue:bit红外接收 | x1 |
电子模块连接说明
模块 | 引脚 | 说明 |
---|---|---|
UNO主控板 | UNO拓展板 | |
TT马达(小车左) | MB | |
TT马达(小车右) | MA | |
循迹模块 | VCC ->V D2 ->A2 D1 ->A1 GND ->G |
连接到UNO拓展板 |
红外接收模块 | VCC ->V RXI ->3 TXD ->2 GND ->G |
连接到UNO拓展板 |
电池盒 | UNO拓展板的DC电源座 |
Arduino程序
File:AruinoCar.ino |
/************************************************* Copyright:wiki.labplus.cn Author:tangliufeng Date:13/7/2018 Description:由arduino电机驱动板加UNO+循迹模块+红外模块拼装的小车 1.循迹功能:按键“*”,进入循迹模式 2.红外遥控:按键“#”,进入遥控模式,使用方向键控制小车行走 **************************************************/ #include <SoftwareSerial.h> #include <arduino.h> char info[50]; uint8_t Car_Mode = 0; uint8_t Move = 0; uint8_t buf; #define LEFT_SPEED 80 #define RIGHT_SPEED 80 //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() { 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(RIGHT_SPEED,LEFT_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_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; } } else { 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, left_speed); analogWrite(9, right_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); }
Mixly图形化程序
该程序使用mixly编写,请用mixly软件打开!
文件:ArduinoCar.rar |
版本历史记录
Version | Date | 新增/删除/修复 |
---|---|---|