前几天,幸运地得到了学长赠送的一组 Arduino 套件,好学(玩)的我自然是激动万分。于是开始了 Arduino入坑之旅。现就初次学习(试玩)大体情况作如下记录。

Ariuino 套件

此套件主要包含有 Arduino UNO板子、驱动模块(L298N)、小车套件、杜邦线、面包板、各种传感器等等。(第一次接触这些,已经被我翻得混乱不堪)

image-20210328162824003

点灯💡

经过一番学习后,大概了解了这些东西各自的作用。马上开始了第一个(最简单的)尝试,点亮 LED 灯,效果还可以,灯亮了。

image-20210328163509247

实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT); //将13号引脚设置为输出状态
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13, HIGH); //高电平
delay(1000);
digitalWrite(13, LOW); //低电平
delay(1000);
}

流水灯✨

第二个做的是流水灯,因为只有6个LED小灯,做得比较简单,6个灯在面包板上依次亮灭,也还可以。还学习到了面包板的使用。

实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
void setup() {
for(int i = 8; i <= 13; i++)
pinMode(i, OUTPUT);
}

void loop() {
int interval = 100;

digitalWrite(8, LOW);
digitalWrite(9, HIGH);
delay(interval);

digitalWrite(9, LOW);
digitalWrite(10, HIGH);
delay(interval);

digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(interval);

digitalWrite(11, LOW);
digitalWrite(12, HIGH);
delay(interval);

digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(interval);

digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(interval);

digitalWrite(13, LOW);
digitalWrite(8, HIGH);
delay(interval);
}

智能小车🚗

以前做过的小车是马达加上轮子就能跑了,不过只能是以最大速度直行。可有了uno板后就完全不一样了,它可是有强大的CPU在身,能实现转向、变速、控制、循迹等等更加智能的操作。因为没有相应控制模块,这次的目标是让小车前后左右跑起来就行了。可惜没能成功,太失败了吧。以下是最简陋的小车。

image-20210328170432868

测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

#include <Servo.h>
//定义五中运动状态
#define STOP 0
#define FORWARD 1
#define BACKWARD 2
#define TURNLEFT 3
#define TURNRIGHT 4
//定义需要用到的引脚
int leftMotor1 = 4;
int leftMotor2 = 5;
int rightMotor1 = 6;
int rightMotor2 = 7;

void setup() {
// put your setup code here, to run once:
//设置控制电机的引脚为输出状态
pinMode(leftMotor1, OUTPUT);
pinMode(leftMotor2, OUTPUT);
pinMode(rightMotor1, OUTPUT);
pinMode(rightMotor2, OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
int cmd;
for(cmd=0;cmd<5;cmd++)//依次执行向前、向后、向左、想有、停止四个运动状态
{
motorRun(cmd);
delay(2000);//每个命令执行2s
}
}
//运动控制函数
void motorRun(int cmd)
{
switch(cmd){
case FORWARD:
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
break;
case BACKWARD:
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
break;
case TURNLEFT:
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
break;
case TURNRIGHT:
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
break;
default:
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, LOW);
}
}

经过我粗浅的分析,小车的代码和连接应该没有问题,问过学长后认为可能是那个电机的问题(毕竟放了几年,放坏了?)

等过几天买的新套件到了再战,这次就这么告一段落了。车还没动起来,就翻车了,还是太菜了。