今天我们来学习个神奇的传感器-双色LED共阴传感器,同时学习个新的元件按钮,通过按钮来控制LED变化。老规矩先简单介绍然后开始今天的学习!

双色LED共阴传感器的介绍

双色LED共阴传感器通常包含两个发光二极管(通常为红色和绿色),共用一个阴极引脚。通过控制阳极引脚的电压,可以分别点亮红色或绿色。

硬件准备

  • Arduino开发板(如Arduino Uno)
  • 双色LED共阴传感器
  • 杜邦线若干
  • 面包板(可选)

硬件连接

双色LED共阴传感器有三个引脚:红色阳极(R)、绿色阳极(G)和公共阴极(C)。公共阴极接地,红色和绿色阳极分别连接微控制器的GPIO引脚。

  • 红色阳极(R) → 微控制器GPIO(如P1)
  • 绿色阳极(G) → 微控制器GPIO(如P2)
  • 公共阴极(C) → GND

基础代码示例

const int redPin = 9;    // 红色阳极连接PWM引脚  
const int greenPin = 10;  // 绿色阳极连接PWM引脚  

void setup() {  
  pinMode(redPin, OUTPUT);  
  pinMode(greenPin, OUTPUT);  
}  

void loop() {  
  // 点亮红色  
  digitalWrite(redPin, HIGH);  
  digitalWrite(greenPin, LOW);  
  delay(1000);  

  // 点亮绿色  
  digitalWrite(redPin, LOW);  
  digitalWrite(greenPin, HIGH);  
  delay(1000);  
}  

注意事项

  1. 限流电阻:每个阳极引脚需串联电阻(通常220Ω-1kΩ),防止电流过大损坏LED。
  2. 共阴与共阳区别:共阴LED的阴极接地,共阳LED的阳极接VCC,控制逻辑相反。
  3. 电压匹配:确保微控制器输出电压与LED额定电压一致(通常3.3V或5V)。

接下来我们就要用到新的元件按钮了,让我们继续学习,这里稍微有点难,需要一点代码基础if语句和Switch-case语句!

硬件准备

  • Arduino开发板(如Arduino Uno)
  • 双色LED共阴传感器
  • 杜邦线若干
  • 面包板(可选)
  • 按钮开关
  • 电阻(220Ω用于LED限流,10kΩ用于按钮上拉/下拉)

硬件连接

双色LED共阴极传感器通常有三个引脚:共阴极(GND)、红色阳极(R)和绿色阳极(G)。按钮用于切换LED的颜色状态。

    接线方式

    • 双色LED的共阴极接GND
    • 红色阳极(R)通过220Ω电阻接数字引脚
    • 绿色阳极(G)通过220Ω电阻接另一数字引脚
    • 按钮一端接数字引脚,另一端接GND(使用下拉电阻)或VCC(使用上拉电阻)

    代码实现

    以下是一个Arduino示例代码,按钮按下时切换LED颜色(红、绿、关闭循环):

    const int redPin = 9;    // 红色阳极连接的引脚  
    const int greenPin = 10;   // 绿色阳极连接的引脚  
    const int buttonPin = 11;  // 按钮连接的引脚  
    
    int buttonState = 0;      // 按钮当前状态  
    int lastButtonState = 0;  // 按钮上一次状态  
    int ledState = 0;         // LED状态(0:关闭,1:红,2:绿)  
    
    void setup() {  
      pinMode(redPin, OUTPUT);  
      pinMode(greenPin, OUTPUT);  
      pinMode(buttonPin, INPUT_PULLUP); // 启用内部上拉电阻  
    }  
    
    void loop() {  
      buttonState = digitalRead(buttonPin);  
    
      // 检测按钮按下(低电平触发)  
      if (buttonState != lastButtonState) {  
        if (buttonState == LOW) {  
          ledState = (ledState + 1) % 3; // 循环切换状态  
          updateLED();  
        }  
        delay(50); // 防抖延迟  
      }  
      lastButtonState = buttonState;  
    }  
    
    void updateLED() {  
      // 根据状态控制LED  
      switch (ledState) {  
        case 0: // 关闭  
          digitalWrite(redPin, LOW);  
          digitalWrite(greenPin, LOW);  
          break;  
        case 1: // 红色  
          digitalWrite(redPin, HIGH);  
          digitalWrite(greenPin, LOW);  
          break;  
        case 2: // 绿色  
          digitalWrite(redPin, LOW);  
          digitalWrite(greenPin, HIGH);  
          break;  
      }  
    }  
    

    注意事项

    • 按钮需硬件消抖(如并联电容)或软件消抖(如代码中的延迟)。
    • 共阴极LED需确保阴极接地,阳极接控制信号。
    • 若使用外部电阻,按钮电路建议采用下拉电阻(接GND)或上拉电阻(接VCC)。

       谢谢大家的观看,同时如果喜欢3d打印和嵌入式开发的可以私信我!

    Logo

    智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

    更多推荐