/**
Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
SPDX-License-Identifier: BSD-3-Clause
*/
#include <cstdio>
#include "pico/stdlib.h"
#include "pio_arrangement.h"
#include "utils.h"
#define numLeds 90
#include "ws2812.hpp"
WS2812 ws2812;
#define SAT 1.0f
#define VAL 1.0f
void set(uint8_t idx, uint8_t iter) {
double hue = (1*idx)+iter;
while (hue>360) hue-=360;
while (hue<0) hue+=360;
double dr,dg,db;
uint16_t r,g,b;
hsv2rgb(hue, SAT, VAL, &dr, &dg, &db);
r = (dr*255.0f);
g = dg*255.0f;
b = db*255.0f;
//ws2812.setPixel(idx, r);
ws2812.setPixelColor(idx, Color(r,g,b));
//printf("%d,%d,%d\n",r,g,b);
}
int main() {
stdio_init_all();
sleep_ms(1000);
printf("Begin\n");
uint16_t iter=0;
while (1) {
iter++;
for (uint8_t i=0; i<numLeds; i++)
set(i, iter);
ws2812.show();
sleep_ms(10);
}
/*
ws2812.fill(0xFF0000);
ws2812.show();
sleep_ms(1000);
ws2812.fill(0x00FF00);
ws2812.show();
sleep_ms(1000);
ws2812.fill(0x0000FF);
ws2812.show();
sleep_ms(1000);
printf("Visible!\n");
printf("Sleeping!\n");
while (1) sleep_ms(10000);
printf("What...?\n");*/
}
/*
int main() {
stdio_init_all();
printf("Begin\n");
sleep_ms(1000);
printf("Init....\n");
init();
printf("Init complete.\n");
uint32_t data[numLeds] = {};
uint32_t x=8;
for (uint8_t i=0; i<numLeds; i++) {
if (x++ > 32) x = 8;
data[i] = 0b111111<<x;
}
printf("Setting...\n");
while (1) {
for (uint8_t i=0; i<numLeds; i++) {
//data[i] = data[i] > 1<<28 ? 1 : data[i]<<1;
bool carry = 0;
if (data[i] & 0x80000000) carry=1;
data[i] <<= 1;
//if (data[i] < 0x100) data[i] >>=;
if (carry) data[i] |= 0x100;
}
set(data, 255);
sleep_ms(50);
}
printf("Sleeping!\n");
while (1) sleep_ms(10000);
printf("What...?\n");
}
*/