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);
}
}
}
|