89 lines
2.0 KiB
C++
89 lines
2.0 KiB
C++
|
|
// This is an prototype example for the ObjectFLED library for massive pins on
|
|
// teensy40/41.
|
|
|
|
#if !defined(__IMXRT1062__) // Teensy 4.0/4.1 only.
|
|
#include "platforms/sketch_fake.hpp"
|
|
#else
|
|
|
|
#define FASTLED_USES_OBJECTFLED
|
|
|
|
#include "FastLED.h"
|
|
#include "fl/warn.h"
|
|
|
|
using namespace fl;
|
|
|
|
#define PIN_FIRST 3
|
|
#define PIN_SECOND 1
|
|
#define IS_RGBW false
|
|
|
|
#define NUM_LEDS1 (22 * 22)
|
|
#define NUM_LEDS2 1
|
|
CRGB leds1[NUM_LEDS1];
|
|
CRGB leds2[NUM_LEDS2];
|
|
|
|
void wait_for_serial() {
|
|
uint32_t end_timeout = millis() + 3000;
|
|
while (!Serial && end_timeout > millis()) {}
|
|
}
|
|
|
|
void print_startup_info() {
|
|
Serial.println("Start");
|
|
Serial.print("*********************************************\n");
|
|
Serial.print("* TeensyParallel.ino *\n");
|
|
Serial.print("*********************************************\n");
|
|
Serial.printf(
|
|
"CPU speed: %d MHz Temp: %.1f C %.1f F Serial baud: %.1f MHz\n",
|
|
F_CPU_ACTUAL / 1000000, tempmonGetTemp(),
|
|
tempmonGetTemp() * 9.0 / 5.0 + 32, 800000 * 1.6 / 1000000.0);
|
|
}
|
|
|
|
void dump_last_crash() {
|
|
if (CrashReport) {
|
|
Serial.println("CrashReport:");
|
|
Serial.println(CrashReport);
|
|
}
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
wait_for_serial();
|
|
dump_last_crash();
|
|
CLEDController& c1 = FastLED.addLeds<WS2812, PIN_FIRST, GRB>(leds1, NUM_LEDS1);
|
|
CLEDController& c2 = FastLED.addLeds<WS2812, PIN_SECOND, GRB>(leds2, NUM_LEDS2);
|
|
if (IS_RGBW) {
|
|
c1.setRgbw();
|
|
c2.setRgbw();
|
|
}
|
|
FastLED.setBrightness(8);
|
|
}
|
|
|
|
void fill(CRGB color) {
|
|
for (int i = 0; i < NUM_LEDS1; i++) {
|
|
leds1[i] = color;
|
|
}
|
|
for (int i = 0; i < NUM_LEDS2; i++) {
|
|
leds2[i] = color;
|
|
}
|
|
}
|
|
|
|
void blink(CRGB color, int times, int delay_ms = 250) {
|
|
for (int i = 0; i < times; ++i) {
|
|
fill(color);
|
|
FastLED.show();
|
|
delay(delay_ms);
|
|
fill(CRGB::Black);
|
|
FastLED.show();
|
|
delay(delay_ms);
|
|
}
|
|
}
|
|
|
|
void loop() {
|
|
blink(CRGB::Red, 1);
|
|
blink(CRGB::Green, 2);
|
|
blink(CRGB::Blue, 3);
|
|
delay(500);
|
|
}
|
|
|
|
#endif // __IMXRT1062__
|