IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 2 Arduino基本数字输出功能LED灯 -> 正文阅读

[嵌入式]2 Arduino基本数字输出功能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 < ledCount; thisLed++) {
    pinMode(ledPins[thisLed], OUTPUT); 
  }
}

void loop() {
  // 熄灭所有led,不同的电路连接也会得到点亮所有led
    for (int num = 0; num < 6; num++) {
      digitalWrite(ledPins[num], HIGH);
    } //
  // 循环顺序点亮led然后等待200ms后熄灭
  for (int num = 0; num < 6; num++) {
      digitalWrite(ledPins[num], LOW);
      delay(200);
      digitalWrite(ledPins[num], HIGH);
  // 这样就形成了简易的led流水效果  
    } 
  }

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:12:35  更:2021-08-30 12:23:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:43:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码