S1E12练习疑惑
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);
实际上原先那个轮子并不会停下来,还会按照最初的设定继续前进,也就无法达到转向的效果。
转向前后要把它复位掉 小笨笨难得糊涂 发表于 2020-3-19 01:15
转向时候没有信号的轱辘,不编写语句不可以
如果前面的状态是停止的,你没编写可以实现转向的功能
但是 ...
太感谢了解决了我的好奇心{:10_254:} 张冲。 发表于 2020-3-19 16:17
转向前后要把它复位掉
谢谢 这个题我直接忽略了,看的头疼。正如我不喜欢 数学里的应用题一样,数学里的几何什么的还是蛮喜欢 alex5153 发表于 2020-3-19 17:36
这个题我直接忽略了,看的头疼。正如我不喜欢 数学里的应用题一样,数学里的几何什么的还是蛮喜欢
我也不太喜欢数学抽象的东西不喜欢 但是和实际应用能联系到一块的就喜欢{:5_109:} 拖延症大叔 发表于 2020-3-19 17:39
我也不太喜欢数学抽象的东西不喜欢 但是和实际应用能联系到一块的就喜欢
我还是喜欢做这样的题。题目就一句话。自己去想流程
//输入三角形三边长度,判断此三角形类型
#include <stdio.h>
int main()
{
int a, b, c;
printf("请输入三角形三个边的长度\n");
scanf("%d%d%d", &a, &b, &c);
if (a + b <= c || b + c <= a || a + c <= b)/*任意两边之和小于或等于第三边则构不成三角形*/
{
printf("构不成三角形,请输入正确的值\n");
}
else if (a == b && b == c)
{
printf("这个三角形为等边三角形\n");
}
else if (a == b || b == c || a == c)
{
printf("这个三角形为等腰三角形\n");
}
else
{
printf("这个三角形为普通三角形\n");
}
return 0;
}
页:
[1]