兴趣小实验-小灯泡闪烁

兴趣实验——实现小灯泡的闪烁

一、了解元器件

1.单片机

简单地说,单片机就是一个小计算机系统
在这里插入图片描述

当我们在电脑上写好程序后,通过一根数据线将程序从电脑端传到单片机端。这时单片机的芯片中就储存了我们写的程序啦。随后,通过在单片机上连接我们在程序中设定好的电路,程序就可以做我们设计好的工作啦!

本次实验需要闪烁的小灯泡已经被预先安在单片机的板子上啦,所以,我们只需要点一下开始执行的重置按钮🔘,就可以运行程序啦。

2.LED小灯泡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AFKKyGoY-1650711883138)(/Users/zhangshuo/Desktop/截屏2022-04-23 14.56.39.png)]

上图就是预先安装在单片机上的LED小灯泡啦。它背后的电路连接是这样的:

img

GPIO口:就是从单片机连接出来的一个端口,这个端口是受到程序控制的。此端口可以往外输出电压,也可以接受电压,基于本实验要做的事情,我们需要让这个GPIO口输出电压,这个端口一共可以输出两种状态:

  • 高电压
  • 低电压

(1)输出高电压时

输出高电压,可以想像成输出高电压的GPIO处于一个地势较高的地方,GND(接地点)可以想像成地势较低的地方。这时候让小灯泡亮起来的原理就相当于从这个高出倒下来一碗水(相当于电流),这些水在流淌的过程中,带动了小灯泡工作起来。

(2)输出低电压时

输出低电压,可以想像成输出低电压的GPIO和GND(接地点)一样,也处于一个同样地势高度的地方,这时候再倒下来一碗水,水就不会流淌了,小灯泡就不会亮了。

程序思路

我们的目标:实现小灯泡的闪烁

我们已经掌握的知识:明白了小灯泡什么情况会亮,什么情况会不亮

程序的逻辑:写一段程序,控制这个输出的GPIO口高电压一会,低电压一会,循环往复,就实现了小灯泡的闪烁

程序编写

1. 初识单片机程序的结构

// the setup function runs once when you press reset or power the board
//当你按下重置键(reset)或者为主板供电时,setup()这个函数只运行一次
void setup() {}


// the loop function runs over and over again forever
//循环函数(loop)永远一遍又一遍地运行
void loop() {}

2. setup()函数的编写

上面我们知道,setup函数只会在程序运行的时候执行一次,基于这种特点,我们往往把一些需要指定的配置写在这里面

对于我们的实验,既然需要我们控制GPIO口高低电压交替输出,那么我们需要告诉单片机两个事:

  • GPIO口要输出电压还是要接收电压呀?
  • 想让我身上哪一个GPIO做输出或者是接收的工作呀?

下面我们就来落实这两件事:

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  //初始化数字引脚LED_BUILTIN为输出模式
  pinMode(LED_BUILTIN, OUTPUT);
}

3. loop()函数的编写

loop函数就像是人的心脏,写在这里面的程序就像血液,循环往复的不断重复被执行

  1. 我们先让GPIO 输出高电压,这时候小灯就会亮起来
  2. 使用延时函数,这个函数相当于让程序在这等着,保持住之前的状态,至于等多久呢,这个可以由我们设定
  3. 再让GPIO输出低电压,这时候小灯就会熄灭
  4. 再次使用延时函数,让程序保持状态
  5. 因为程序写在了loop函数中,所以它会循环往复,又回到1执行到4,循环♻️往复
void loop() {
  // turn the LED on (HIGH is the voltage level)
  //将LED打开(HIGH是一种电压等级,代表输出高电压)
  digitalWrite(LED_BUILTIN, HIGH);
  // wait for a second
  //等待一秒钟,输入值单位规定是毫秒:1s=1000ms
  delay(1000); 
  // turn the LED off by making the voltage LOW
  // 通过输出低电压关掉LED灯
  digitalWrite(LED_BUILTIN, LOW);
  // wait for a second
  delay(1000);                       
}

完整代码

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

编程环境的搭建

1.APP下载网站:https://www.arduino.cc/en/software

2.编程前准备:
在这里插入图片描述

3.选择相对应的单片机型号(本例子Arduino Uno),选择单片机与电脑连接的端口(我的端口COM6)

4.写程序

5.确认单片机与电脑建立了连接,点击APP上的上传按钮

6.按一下单片机上的reset按钮,程序即可运行

兴趣扩展——超声波测量距离

原理:超声波模块会发出声波,遇到物体会被反弹回来,当超声波模块接收到反弹回来的声波时,单片机会将发射出去到反弹回来这段时间记录下来,然后我们已知声速为340m/s。就可以知道距离了

程序的编写有兴趣的同学可以上网查询资料,自己尝试着做!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值