c++ - C++/Arduino flash LED 不同的间隔
问题描述
我在 Arduino 上有以下代码,我想用以下规则闪烁 LED:
LED 应快速闪烁两次,然后暂停更长的时间,从而达到以下节奏:
ON-ON----ON-ON----ON-ON ...
On 应持续 125 ms,短暂停应持续 75 ms,长暂停应持续 500 ms。
这是我到目前为止所做的:
unsigned long flashOn = 125;
unsigned long flashOff = 75; //first pause must be a short one
unsigned long flashCount = 0;
void handleFrontFlash() {
byte beforeState = digitalRead(LED_Front);
flashOff = (flashCount % 2 > 0) ? 75 : 500;
digitalWrite(LED_Front, (millis() % (flashOn + flashOff)) < flashOn);
byte afterState = digitalRead(LED_Front);
if(beforeState == LOW and afterState == HIGH)
flashCount++;
}
我的想法是计算 LED 开启的次数,并使用模数来确定循环是否完成。但是,双闪仅在 LED 每 8 次闪烁时实现,其余时间 LED 闪烁一次。
有人可以在这里帮助我吗?
解决方案
一个你想要的例子,我使用简单的函数来轻松理解程序,我使用的是 LED_BUILTIN,它是 arduino uno 或 mega 的 led 13
unsigned long currentMillis;
unsigned long previousMillis = 0;
unsigned long interval;
int Compteur = 1;
int ledState = HIGH;
int state = 0;
void setup(){
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH); // i begin with HIGH during 125ms
interval = 125;
previousMillis = 0;
}
// Main loop
void loop() {
currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
switch (state) {
case 0:
ledState = LOW;
interval = 75;
state = 1;
break;
case 1:
ledState = HIGH;
interval = 125;
state = 2;
break;
case 2:
ledState = LOW;
interval = 500;
state = 3;
break;
case 3:
ledState = HIGH;
interval = 125;
state = 0;
Compteur++; // count the number of beginning new sequence
break;
default:
// statements
break;
}
digitalWrite(LED_BUILTIN, ledState);
}
}
推荐阅读
- php - 无法使用正则表达式获取图像 src
- ansible - Get the full path of the symlink target in Ansible
- oracle - How to export selected functions, selected procedures, selected views and selected tables only from oracle database using command line?
- c# - 如何在代码中查找所有特定类型的对象初始化
- javascript - get terminal response and store it as a variable in node js
- android - Flutter setState() 方法调用
- python - 如何将我从远程 MySQL 数据库中选择的一些行插入到本地 MySQL 数据库中
- c# - 如何使用 xceed docx 用格式化文本替换段落?
- c# - WPFToastNotification 点击事件
- python - mypy 可以检查文档字符串吗?