2 Arduino基本数字输出功能LED灯 您所在的位置:网站首页 arduino的led灯实验 2 Arduino基本数字输出功能LED灯

2 Arduino基本数字输出功能LED灯

2023-10-06 11:36| 来源: 网络整理| 查看: 265

Arduino基本数字输出功能LED灯 I/O端口原理单片机知识点补充实战1——闪烁LED指示灯实战2——LED简易流水灯

I/O端口原理

I/O英文全称是 Input/Output,即输入/输出。单片机端口是标准双向口,就是说,单片机的端口既可以作为输出信号端(如控制灯亮灭、继电器吸合释放、喇叭发声等),也可以作为输入信号端(如按键信号输入、红外形输入、开关信号输入等)

单片机知识点补充

Arduino UNO R3: 引脚图 实物图在这里插入图片描述

高低电平:一般来说+5V为电平1,接地为0.

LED:LED的长引脚是正极,LED内部电极体积小的正极。

面包板:从原理图可以看到,面包板上下区是横向5位相通,一般用于接电源和接地,中间区域是纵向5位相通,通常用于放置电路元件和电路连接线。(面包板的核心组件是内部的金属弹性卡槽) 基本原理图

特别注意当我们使用单片机进行连接电路时,首先要设计好电路,如LED灯的电流大小要通过加电阻进行控制。(由VCC接到GND接法LED灯称之为拉电流;由VCC接到VCC接法称之为灌电流)

灌电流连接方式称为:共阳连接(led的阳极连接在一起) 拉电流连接方法称为:共阴连接(led的阴极连接在一起) 在这里插入图片描述 开关两种状态(开/闭)与电位器(可调电阻)将他们的状态是如何传送给arduino的呢?利用的是digitalRead()和analogRead()两种函数,也就是读取数字量和读取模拟量。

实战1——闪烁LED指示灯

法一:利用CPU独立工作

// LED连接到引脚13 // 引脚定义: int LED = 13; // 复位后初始化内容 void setup() { // 初始化数字端口为输出模式 pinMode(LED_BUILTIN, OUTPUT); } // 主循环 void loop() { digitalWrite(LED_BUILTIN, HIGH); // LED引脚置高电平 delay(1000); // 延迟1s digitalWrite(LED_BUILTIN, LOW); // LED引脚变为低电平 delay(1000); // 延迟1s }

法二:CPU与定时器一起工作(即不使用延时函数的led闪烁程序)

// 定义引脚 const int ledPin = 13; // led连接的引脚 // 变量 int ledState = LOW; // led状态,亮或者灭 long previousMillis = 0; // 存储最后一次的led状态 // 这里使用了长整型变量,因为使用了ms,瞬间的数值变化非常大。 long interval = 1000; // 间隔闪烁的时间长度 void setup() { // 初始化引脚输出模式 pinMode(ledPin, OUTPUT); } void loop() { // 这里还可以添加其他的程序 unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { // 保存当前值,方便下次再次和当前时间比较 previousMillis = currentMillis; // 如果led熄灭就把它点亮,反之亦然 if (ledState == LOW) ledState = HIGH; else ledState = LOW; // 把对应的LED状态反应到led引脚上。 // 之前都是用变量再处理,处理完成后把最终结果输出到终端。 digitalWrite(ledPin, ledState); } }

在这里插入图片描述

实战2——LED简易流水灯

程序思路如下: 首先熄灭所有LED,然后点亮第一个,等待200ms熄灭第一个,然后点亮第二个,等待200ms,熄灭第二个然后…

// 引脚定义 const int ledCount = 6; // led个数 int ledPins[] = { 0,1,2, 3, 4, 5, }; // 对应的led引脚 void setup() { // 循环设置,把对应的led都设置成输出 for (int thisLed = 0; thisLed // 熄灭所有led,不同的电路连接也会得到点亮所有led for (int num = 0; num digitalWrite(ledPins[num], LOW); delay(200); digitalWrite(ledPins[num], HIGH); // 这样就形成了简易的led流水效果 } }

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有