找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5917|回复: 2
打印 上一主题 下一主题
收起左侧

来几个关于LED灯的小程序

[复制链接]
跳转到指定楼层
楼主
ID:118184 发表于 2016-5-6 17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,控制LED闪烁的小程序
int led = 13;
// 复位后初始化内容
void setup() {               
  // 初始化数字端口为输出模式
  pinMode(led, OUTPUT);     
}
// 主循环
void loop() {
  digitalWrite(led, HIGH);   // led引脚置高电平
  delay(1000);               // 延时1秒
  digitalWrite(led, LOW);    // led引脚变为低电平
  delay(1000);               // 延时1秒
}

2、控制LED闪烁的小程序
int led = 13;

// 复位后初始化内容
void setup() {               
  // 初始化数字端口为输出模式
  pinMode(led, OUTPUT);     
}
// 主循环
void loop() {
  digitalWrite(led, HIGH);   // led引脚置高电平
  delay(100);               // 延时100ms
  digitalWrite(led, LOW);    // led引脚变为低电平
  delay(100);               // 延时100ms
   digitalWrite(led, HIGH);   // led引脚置高电平
  delay(100);               // 延时100ms
  digitalWrite(led, LOW);    // led引脚变为低电平
  delay(1000);               // 延时100ms

}

3、定时器闪烁LED灯
const int ledPin =  13;      // led连接的引脚,标准的uno开发板上已经集成
// 变量
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);
  }
}


4、八位LED简易流水灯
// 引脚定义
const int ledCount = 8;    // led个数

int ledPins[] = {
  0,1,2, 3, 4, 5, 6, 7, };   // 对应的led引脚


void setup() {
  // 循环设置,把对应的led都设置成输出
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    pinMode(ledPins[thisLed], OUTPUT);
  }
}

void loop() {


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



5、八位LED显示电位器位置
const int analogPin = A0;   // 模拟输入
const int ledCount = 8;    // led个数

int ledPins[] = {
  0,1,2, 3, 4, 5, 6, 7, };   // 对应的led引脚


void setup() {
  // 循环设置,把对应的led都设置成输出
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    pinMode(ledPins[thisLed], OUTPUT);
  }
}

void loop() {
  // 读取电位器的值
  int sensorReading = analogRead(analogPin);
  // 把对应的值转化成0-最大led个数,这里是8
  int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);

  // 循环对比输出到led:
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {

    if (thisLed < ledLevel) {
      digitalWrite(ledPins[thisLed], HIGH);
    }

    else {
      digitalWrite(ledPins[thisLed], LOW);
    }
  }
}




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:118942 发表于 2016-5-6 20:31 | 只看该作者
这不是示例里面的吗
回复

使用道具 举报

板凳
ID:118184 发表于 2016-5-16 09:16 | 只看该作者
ycnalin 发表于 2016-5-6 20:31
这不是示例里面的吗

呃???难道我坑大家了?不好意思啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表