#include <Arduino.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <Wire.h>
#include <U8g2lib.h>
#include "AiEsp32RotaryEncoder.h"
#include "AiEsp32RotaryEncoderNumberSelector.h"
#define LED_PIN_1 13
#define LED_PIN_2 12
#define LED_PIN_3 14
#define LED_PIN_4 27
#define LED_PIN_5 26
#define LED_PIN_6 25
#define LED_PIN_7 33
#define LED_PIN_8 32
#define ROTARY_ENCODER1_A_PIN 15
#define ROTARY_ENCODER1_B_PIN 16
#define ROTARY_ENCODER1_BUTTON_PIN 4
#define ROTARY_ENCODER2_A_PIN 17
#define ROTARY_ENCODER2_B_PIN 18
#define ROTARY_ENCODER2_BUTTON_PIN 5
#define ROTARY_ENCODER1_STEPS 4
#define ROTARY_ENCODER2_STEPS 4
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, 19, 23);
AiEsp32RotaryEncoder *rotaryEncoder1 = new AiEsp32RotaryEncoder(ROTARY_ENCODER1_A_PIN, ROTARY_ENCODER1_B_PIN, ROTARY_ENCODER1_BUTTON_PIN, -1, ROTARY_ENCODER1_STEPS);
AiEsp32RotaryEncoderNumberSelector numberSelector1 = AiEsp32RotaryEncoderNumberSelector();
AiEsp32RotaryEncoder *rotaryEncoder2 = new AiEsp32RotaryEncoder(ROTARY_ENCODER2_A_PIN, ROTARY_ENCODER2_B_PIN, ROTARY_ENCODER2_BUTTON_PIN, -1, ROTARY_ENCODER2_STEPS);
AiEsp32RotaryEncoderNumberSelector numberSelector2 = AiEsp32RotaryEncoderNumberSelector();
void IRAM_ATTR readEncoder1ISR()
{
rotaryEncoder1->readEncoder_ISR();
}
void IRAM_ATTR readEncoder2ISR()
{
rotaryEncoder2->readEncoder_ISR();
}
enum LEDMode
{
AutoCycleMode, // Auto cycle mode 2 to 12
OneFlashingPoint, // 1 flashing point, cycle 6 times
TwoFlashingPoint, // 2 flashing point, cycle 6 times
ThreeFlashingPoint, // 3 flashing point, cycle 6 times
FourFlashingPoint, // 4 flashing point, cycle 6 times
FlashOnePointFlow, // Flash 1 point flow rate 6 times
BlinkStack, // Blink stack 6 times for loop
AllOn, // All lights are on
SlowBreathingTwoPoint, // Slow Breathing 2 o'clock flow rate
StrobeOnePointFlow, // Strobe 1 point flow, 6 circles
TwoPointsFlashAlternately, // 2 points flash alternately
AllLightFlash // AllLightFlash
};
LEDMode currentMode = AutoCycleMode;
void task1(void *pt)
{
pinMode(LED_PIN_1, OUTPUT);
pinMode(LED_PIN_2, OUTPUT);
pinMode(LED_PIN_3, OUTPUT);
pinMode(LED_PIN_4, OUTPUT);
pinMode(LED_PIN_5, OUTPUT);
pinMode(LED_PIN_6, OUTPUT);
pinMode(LED_PIN_7, OUTPUT);
pinMode(LED_PIN_8, OUTPUT);
while (1)
{
SlowBreathingTwoPointLED();
}
}
void task2(void *pt)
{
// 初始化OLED对象
u8g2.begin();
// 开启字符支持
u8g2.enableUTF8Print();
while (1)
{
u8g2.firstPage();
do
{
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0, 15, "Pattern");
u8g2.setFont(u8g2_font_ncenB10_tr);
u8g2.drawStr(0, 45, "Slow");
u8g2.drawStr(96, 45, "Fast");
u8g2.drawStr(0, 62, "Speed");
u8g2.drawStr(100, 62, "+10");
char buffer[5] = {0};
sprintf(buffer, "%d", int(5));
u8g2.drawStr(80, 15, buffer);
buffer[5] = {0};
sprintf(buffer, "%d", int(250));
u8g2.drawStr(55, 62, buffer);
// 设置外边框
u8g2.drawFrame(0, 17, 128, 15);
// 设置内边框
u8g2.drawBox(1, 18, int(250 / 4), 13);
} while (u8g2.nextPage());
vTaskDelay(100);
}
}
void task3(void *pt)
{
rotaryEncoder1->begin();
rotaryEncoder1->setup(readEncoder1ISR);
numberSelector1.attachEncoder(rotaryEncoder1);
rotaryEncoder2->begin();
rotaryEncoder2->setup(readEncoder2ISR);
numberSelector2.attachEncoder(rotaryEncoder2);
numberSelector1.setRange(0, 500, 10, false, 1);
numberSelector1.setValue(250);
numberSelector2.setRange(1, 12, 1, false, 1);
numberSelector2.setValue(1);
while (1)
{
vTaskDelay(1000); // 注意 是 ticks的数量 不是时间
}
}
void setup()
{
Serial.begin(115200);
Serial.print("ESP32 Tick Period - ");
Serial.print(portTICK_PERIOD_MS);
Serial.println("ms");
if (xTaskCreatePinnedToCore(task1,
"Blink",
1024,
NULL,
1,
NULL,
1) == pdPASS)
Serial.println("Task1 Created.");
if (xTaskCreatePinnedToCore(task2,
"OLED",
2046,
NULL,
1,
NULL,
1) == pdPASS)
Serial.println("Task2 Created.");
if (xTaskCreatePinnedToCore(task3,
"Encode",
1024,
NULL,
1,
NULL,
1) == pdPASS)
Serial.println("Task3 Created.");
vTaskDelay(100);
}
void loop()
{
vTaskDelay(100);
}
void AutoCycleModeLED()
{
OneFlashingPointLED();
TwoFlashingPointLED();
ThreeFlashingPointLED();
FourFlashingPointLED();
FlashOnePointFlowLED();
BlinkStackLED();
BlinkStackLED();
SlowBreathingTwoPointLED();
TwoPointsFlashAlternatelyLED();
AllLightFlashLED();
}
void OneFlashingPointLED()
{
for (int i = 0; i < 6; i++)
{
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(500);
}
}
for (int i = 0; i < 6; i++)
{
for (int j = 8; j > 0; j--)
{
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(500);
}
}
}
void TwoFlashingPointLED()
{
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(500);
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(500);
}
}
void ThreeFlashingPointLED()
{
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(500);
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(500);
}
}
void FourFlashingPointLED()
{
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(500);
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(500);
}
}
void FiveFlashingPointLED()
{
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(500);
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(500);
}
}
void SixFlashingPointLED()
{
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(500);
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(500);
}
}
void SevenFlashingPointLED()
{
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(500);
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(500);
}
}
void EightFlashingPointLED()
{
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(500);
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(500);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(6), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(5), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(4), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(3), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(500);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(500);
}
}
void FlashOnePointFlowLED()
{
for (int i = 0; i < 6; i++)
{
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(250);
}
}
for (int i = 0; i < 6; i++)
{
for (int j = 8; j > 0; j--)
{
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(250);
}
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(1), LOW);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(2), LOW);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(3), LOW);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(4), LOW);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(5), LOW);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(6), LOW);
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(7), LOW);
vTaskDelay(250);
digitalWrite(getLEDPin(8), LOW);
vTaskDelay(250);
}
for (int i = 0; i < 6; i++)
{
digitalWrite(getLEDPin(8), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(7), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(8), LOW);
digitalWrite(getLEDPin(6), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(7), LOW);
digitalWrite(getLEDPin(5), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(6), LOW);
digitalWrite(getLEDPin(4), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(5), LOW);
digitalWrite(getLEDPin(3), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(4), LOW);
digitalWrite(getLEDPin(2), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(3), LOW);
digitalWrite(getLEDPin(1), HIGH);
vTaskDelay(250);
digitalWrite(getLEDPin(2), LOW);
vTaskDelay(250);
digitalWrite(getLEDPin(1), LOW);
vTaskDelay(250);
}
}
void BlinkStackLED()
{
for (int i = 0; i < 6; i++)
{
for (int j = 8; j > 0; j--)
{
for (int k = 1; k < j; k++)
{
digitalWrite(getLEDPin(k), HIGH);
vTaskDelay(100);
digitalWrite(getLEDPin(k), LOW);
vTaskDelay(100);
}
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(100);
}
for (int j = 1; j <= 8; j++)
{
for (int k = j; k > 0; k--)
{
digitalWrite(getLEDPin(k), HIGH);
vTaskDelay(100);
digitalWrite(getLEDPin(k), LOW);
vTaskDelay(100);
}
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(100);
}
}
}
void AllOnLED()
{
while (1)
{
for (int i = 1; i <= 8; i++)
{
digitalWrite(getLEDPin(i), HIGH);
}
}
for (int i = 1; i <= 8; i++)
{
digitalWrite(getLEDPin(i), LOW);
}
}
void SlowBreathingTwoPointLED()
{
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(1), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(1), j); // 设置PWM值(255-0)
vTaskDelay(5); // 等待5ms
}
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(1), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(2), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(1), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(2), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(2), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(3), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(2), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(3), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(3), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(4), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(3), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(4), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(4), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(5), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(4), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(5), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(5), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(6), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(5), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(6), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(6), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(7), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(6), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(7), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(7), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(8), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(7), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(8), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(8), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(10);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(8), j); // 设置PWM值(255-0)
vTaskDelay(5); // 等待5ms
}
}
}
void StrobeOnePointFlowLED()
{
for (int i = 0; i < 6; i++)
{
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(100);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(100);
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(100);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(100);
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(100);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(200);
}
}
for (int i = 0; i < 6; i++)
{
for (int j = 8; j > 0; j--)
{
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(100);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(100);
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(100);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(100);
digitalWrite(getLEDPin(j), HIGH);
vTaskDelay(100);
digitalWrite(getLEDPin(j), LOW);
vTaskDelay(200);
}
}
}
void TwoPointsFlashAlternatelyLED()
{
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(1), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(2), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(3), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(4), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(200);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(1), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(2), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(3), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(4), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(200);
for (int j = 0; j < 255; j++)
{ // 逐渐增加LED亮度
analogWrite(getLEDPin(5), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(6), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(7), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(8), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(200);
for (int j = 255; j >= 0; j--)
{ // 逐渐减少LED亮度
analogWrite(getLEDPin(5), j); // 设置PWM值(255-0)
analogWrite(getLEDPin(6), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(7), j); // 设置PWM值(0-255)
analogWrite(getLEDPin(8), j); // 设置PWM值(0-255)
vTaskDelay(5); // 等待5ms
}
vTaskDelay(200);
}
void AllLightFlashLED()
{
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), HIGH);
}
vTaskDelay(100);
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), LOW);
}
vTaskDelay(100);
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), HIGH);
}
vTaskDelay(100);
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), LOW);
}
vTaskDelay(100);
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), HIGH);
}
vTaskDelay(100);
for (int j = 1; j <= 8; j++)
{
digitalWrite(getLEDPin(j), LOW);
}
vTaskDelay(200);
}
int getLEDPin(int ledNumber)
{
switch (ledNumber)
{
case 1:
return LED_PIN_1;
case 2:
return LED_PIN_2;
case 3:
return LED_PIN_3;
case 4:
return LED_PIN_4;
case 5:
return LED_PIN_5;
case 6:
return LED_PIN_6;
case 7:
return LED_PIN_7;
case 8:
return LED_PIN_8;
default:
return LED_PIN_1; // Default to LED_PIN_1
}
}