Код: Выделить всё
#include <FastLED.h>
#include <SPI.h>
#include <SD.h>
#define NUM_LEDS 240 // кол-во LED
#define DATA_PIN 6 // выход на ленту
#define SpeedPort A0 // потенциометр скорости
#define BrPort A1 // потенциометр яркости
#define CHIPSET WS2812B // тип LED chip
#define CMD_NEW_DATA 1
File fxdata;
CRGB leds[NUM_LEDS];
CRGB templeds[NUM_LEDS];
void setup()
{
// pinMode(PotPort, INPUT);
FastLED.addLeds<CHIPSET, DATA_PIN, GRB>(leds, NUM_LEDS); //see doc for different LED strips
for (int y = 0 ; y < NUM_LEDS ; y++)
{
leds[y] = CRGB::Black; // гасим все светодиоды
}
FastLED.show();
pinMode(4, OUTPUT); // CS/SS pin as output for SD library to work.
digitalWrite(4, HIGH);
pinMode(7, OUTPUT);//зелёный светодиод
pinMode(8, OUTPUT); // красный светодиод
digitalWrite(7, LOW); //зелёный светодиод
digitalWrite(8, LOW); //красный светодиод
if (!SD.begin(4))
{
digitalWrite(8, HIGH);//зажигаем красный светодиод при ошибке чтения CD
return;
}
digitalWrite(8, LOW);// инициализация SD карты успешна.
}
void loop()
{ int SpeedData; // объявляем переменную со значением задержки для delay();
int BrData; // объявляем переменную со значением задержки для яркости();
fxdata = SD.open("1.out");
if (fxdata) {
digitalWrite(7, HIGH); // //зажигаем зелёный светодиод при успешном открытии файла
}
while (fxdata.available())
{
fxdata.readBytes((char*)leds, NUM_LEDS * 3);
FastLED.show();
SpeedData = 20 + (analogRead(SpeedPort) / 6);
delay(SpeedData); // устанавливаем скорость анимации. 20 is appx ~ 500k bauds
BrData = (analogRead(BrPort) / 5);
BrData = constrain(BrData, 10, 254); // Эта функция контролирует, что бы переменная BrData не стала больше 254 и меньше 10.
FastLED.setBrightness(BrData); // устанавливаем яркость матрицы
// delay(90); // устанавливаем скорость анимации. 20 is appx ~ 500k bauds
}
// close the file in order to prevent hanging IO or similar throughout time
fxdata.close();
for (int y = 0 ; y < NUM_LEDS ; y++)
{
leds[y] = CRGB::Black; // гасим все светодиоды
}
FastLED.show();
delay(100);
}