马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
C. 通过调用 digitalWrite() 函数为指定的数字引脚赋值高电平(HIGH)或低电平(LOW)来实现电机的运行或停止。比如 digitalWrite(8, HIGH); digitalWrite(9, LOW); 表示左电机前进。反之,digitalWrite(8, LOW); digitalWrite(9, HIGH); 表示左电机后退。
D. 程序使用一个字符变量 ch 来接收指令,'g' 表示前进;'b' 表示后退;'r' 表示右转;'l' 表示左转。
E. 要让小车左转,那么就是左轮不动,右轮前进。
F. 如果没有接收到控制信号,则什么事儿都不要做!
====================================
转向时候没有信号的轱辘 ,我不编写语句可以吗?不编写会有什么后果?
下面是习题里的正确答案,转向那部分是编写语句了的
====================================
#include <Servo.h>
// 为了方便调用,我们为控制左右电机
// 前进后退的数字引脚进行了宏定义
#define LEFT_MOTO_GO 8
#define LEFT_MOTO_BACK 9
#define RIGHT_MOTO_GO 10
#define RIGHT_MOTO_BACK 11
// ...省略部分代码...
void loop()
{
char ch; // 用于接受命令
switch(ch)
{
case 'g':
digitalWrite(LEFT_MOTO_GO, HIGH);
digitalWrite(LEFT_MOTO_BACK, LOW);
digitalWrite(RIGHT_MOTO_GO, HIGH);
digitalWrite(RIGHT_MOTO_BACK, LOW);
break;
case 'b':
digitalWrite(LEFT_MOTO_GO, LOW);
digitalWrite(LEFT_MOTO_BACK, HIGH);
digitalWrite(RIGHT_MOTO_GO, LOW);
digitalWrite(RIGHT_MOTO_BACK, HIGH);
break;
case 'l':
digitalWrite(LEFT_MOTO_GO, LOW);
digitalWrite(LEFT_MOTO_BACK, LOW);
digitalWrite(RIGHT_MOTO_GO, HIGH);
digitalWrite(RIGHT_MOTO_BACK, LOW);
break;
case 'r':
digitalWrite(LEFT_MOTO_GO, HIGH);
digitalWrite(LEFT_MOTO_BACK, LOW);
digitalWrite(RIGHT_MOTO_GO, LOW);
digitalWrite(RIGHT_MOTO_BACK, LOW);
break;
default:
digitalWrite(LEFT_MOTO_GO, LOW);
digitalWrite(LEFT_MOTO_BACK, LOW);
digitalWrite(RIGHT_MOTO_GO, LOW);
digitalWrite(RIGHT_MOTO_BACK, LOW);
break;
}
// ...省略部分代码...
}
转向时候没有信号的轱辘 ,不编写语句不可以
如果前面的状态是停止的,你没编写可以实现转向的功能
但是如果前面的状态其他状态,那么可能导致转向功能失败。
比如:前一状态是前进,两个轮子电机都处于前进状态,
digitalWrite(LEFT_MOTO_GO, HIGH);
digitalWrite(LEFT_MOTO_BACK, LOW);
digitalWrite(RIGHT_MOTO_GO, HIGH);
digitalWrite(RIGHT_MOTO_BACK, LOW);
你现在给他一个转向信号,如果你不写全,只给有动的轮子编写语句
digitalWrite(RIGHT_MOTO_GO, HIGH);
digitalWrite(RIGHT_MOTO_BACK, LOW);
实际上原先那个轮子并不会停下来,还会按照最初的设定继续前进,也就无法达到转向的效果。
|