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