Dal jsem do kupy program ale nejak se nedokazi vyhrabat z jednoho problemu a to je prekresleni pixelu.
Mam to ted udelane tak ze mi vsechno najednou zhasne a hned se zobrazi dalsi "stav" - toto se dej kazdou minutu. Spatne je ze to blikne - vsechny zapnute pixely na okamzik bliknou. Pokud se pixely posunou neni to patrne a je to v pohode ale např. hodina se neposouva a jen blikne a to vypada dost blbe.
Zkoušel jsem ruzne varianty a moznosti ale nedari se mi to udelat tak aby to neblikalo cele.
Tady je kod - je to udelano tak aby se minuta posouvala kazdou sekundu, mam to kvuli ladeni... :
Kód: Vybrat vše
#include <Adafruit_NeoPixel.h>
int hod_1 [7]= {100, 101, 106, 107, 108, 109, 110}; // prefix JE + hodina 1
int hod_2 [7]= {102, 103, 104, 105, 97, 98, 99}; // prefix JSOU + hodina 2
int hod_3 [7]= {102, 103, 104, 105, 71, 72, 73}; // prefix JSOU + hodina 3
int hod_4 [9]= {102, 103, 104, 105, 45, 46, 47, 48, 49}; // prefix JSOU + hodina 4
int hod_5 [5]= {100, 101, 94, 95, 96}; // prefix JE + hodina 5
int hod_6 [6]= {100, 101, 74, 75, 76, 77}; // prefix JE + hodina 6
int hod_7 [6]= {100, 101, 78, 79, 80, 81}; // prefix JE + hodina 7
int hod_8 [5]= {100, 101, 56, 57, 58}; // prefix JE + hodina 8
int hod_9 [7]= {100, 101, 89, 90, 91, 92, 93}; // prefix JE + hodina 9
int hod_10 [7]= {100, 101, 67, 68, 69, 70, 71}; // prefix JE + hodina 10
int hod_11 [10]= {100, 101, 59, 60, 61, 62, 63, 64, 65, 66}; // hodina 11
int hod_12 [9]= {100, 101, 82, 83, 84, 85, 86, 87, 88}; // hodina 12
int min_1 [1]= {113}; // minuty 1,6
int min_2 [1]= {112}; // minuty 2,7
int min_3 [1]= {111}; // minuty 3,8
int min_4 [1]= {114}; // minuty 4,9
int min_5 [3]= {9, 10, 11}; // minuty 5,25,35,45,55
int min_10 [5]= {51, 52, 53, 54, 55}; // minuty 10
int min_15 [7]= {23, 24, 25, 26, 27, 28, 29}; // minuty 15
int min_20 [6]= {34, 35, 36, 37, 38, 39}; // minuty 20
int min_25 [9]= {34, 35, 36, 37, 38, 39, 9, 10, 11}; // minuty 25
int min_30 [6]= {39, 40, 41, 42, 43, 44}; // minuty 30
int min_35 [9]= {39, 40, 41, 42, 43, 44, 9, 10, 11}; // minuty 35
int min_40 [8]= {14, 15, 16, 17, 18, 19, 20, 21}; // minuty 40
int min_45 [11]= {14, 15, 16, 17, 18, 19, 20, 21, 9, 10, 11}; // minuty 45
int min_50 [7]= {1, 2, 3, 4, 5, 6, 7}; // minuty 50
int min_55 [10]= {1, 2, 3, 4, 5, 6, 7, 9, 10, 11}; // minuty 55
int pocetLED = 115; //pocet LED pixelu
int hodina = 1;
int minuta = 1;
int jas = 10;
unsigned long interval = 1000;
unsigned long previousMillis = 0;
#define PIN 12
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(pocetLED, PIN, NEO_GRBW + NEO_KHZ800);
void setup() {
Serial.begin(9600);
pixels.begin();
}
void loop(){
pixels.setBrightness(jas);
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
minuta = minuta + 1;
pixels.clear(); // vypne všechny pixely
}
if (minuta == 60) {
hodina = hodina + 1;
minuta = 0;
}
if (hodina == 13) {
hodina = 1;
}
CAShod();
CASmin();
}
//#########################################################################################
void CAShod() {
Serial.println(hodina);
if (hodina == 1) {
for (int LEDon = 0; LEDon < 7; LEDon++) {
pixels.setPixelColor(hod_1[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 2) {
for (int LEDon = 0; LEDon < 7; LEDon++) {
pixels.setPixelColor(hod_2[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 3) {
for (int LEDon = 0; LEDon < 7; LEDon++) {
pixels.setPixelColor(hod_3[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 4) {
for (int LEDon = 0; LEDon < 9; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 5) {
for (int LEDon = 0; LEDon < 5; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 6) {
for (int LEDon = 0; LEDon < 6; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 7) {
for (int LEDon = 0; LEDon < 6; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 8) {
for (int LEDon = 0; LEDon < 5; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 9) {
for (int LEDon = 0; LEDon < 7; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 10) {
for (int LEDon = 0; LEDon < 7; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 11) {
for (int LEDon = 0; LEDon < 10; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (hodina == 12) {
for (int LEDon = 0; LEDon < 9; LEDon++) {
pixels.setPixelColor(hod_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
}
//#########################################################################################
void CASmin() {
Serial.println(minuta);
// jednotky minut
if (minuta == 1 || (minuta == 6 || (minuta == 11 || (minuta == 16 || (minuta == 21 || (minuta == 26 || (minuta == 31 || (minuta == 36 || (minuta == 41 || (minuta == 46 || (minuta == 51 || (minuta == 56 )))))))))))){
for (int LEDon = 0; LEDon < 1; LEDon++) {
pixels.setPixelColor(min_1[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (minuta == 2 || (minuta == 7 || (minuta == 12 || (minuta == 17 || (minuta == 22 || (minuta == 27 || (minuta == 32 || (minuta == 37 || (minuta == 42 || (minuta == 47 || (minuta == 52 || (minuta == 57 )))))))))))) {
for (int LEDon = 0; LEDon < 1; LEDon++) {
pixels.setPixelColor(min_2[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (minuta == 3 || (minuta == 8 || (minuta == 13 || (minuta == 18 || (minuta == 23 || (minuta == 28 || (minuta == 33 || (minuta == 38 || (minuta == 43 || (minuta == 48 || (minuta == 53 || (minuta == 58 )))))))))))) {
for (int LEDon = 0; LEDon < 1; LEDon++) {
pixels.setPixelColor(min_3[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if (minuta == 4 || (minuta == 9 || (minuta == 14 || (minuta == 19 || (minuta == 24 || (minuta == 29 || (minuta == 34 || (minuta == 39 || (minuta == 44 || (minuta == 49 || (minuta == 54 || (minuta == 59 )))))))))))) {
for (int LEDon = 0; LEDon < 1; LEDon++) {
pixels.setPixelColor(min_4[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
// minuty po 5
if ((minuta >= 5) && (minuta < 10)) {
for (int LEDon = 0; LEDon < 3; LEDon++) {
pixels.setPixelColor(min_5[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 10) && (minuta < 15)) {
for (int LEDon = 0; LEDon < 5; LEDon++) {
pixels.setPixelColor(min_10[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 15) && (minuta < 20)) {
for (int LEDon = 0; LEDon < 7; LEDon++) {
pixels.setPixelColor(min_15[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 20) && (minuta < 25)) {
for (int LEDon = 0; LEDon < 6; LEDon++) {
pixels.setPixelColor(min_20[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 25) && (minuta < 30)) {
for (int LEDon = 0; LEDon < 9; LEDon++) {
pixels.setPixelColor(min_25[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 30) && (minuta < 35)) {
for (int LEDon = 0; LEDon < 6; LEDon++) {
pixels.setPixelColor(min_30[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 35) && (minuta < 40)) {
for (int LEDon = 0; LEDon < 9; LEDon++) {
pixels.setPixelColor(min_25[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 40) && (minuta < 45)) {
for (int LEDon = 0; LEDon < 8; LEDon++) {
pixels.setPixelColor(min_40[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 45) && (minuta < 50)) {
for (int LEDon = 0; LEDon < 11; LEDon++) {
pixels.setPixelColor(min_45[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 50) && (minuta < 55)) {
for (int LEDon = 0; LEDon < 7; LEDon++) {
pixels.setPixelColor(min_50[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
if ((minuta >= 55) && (minuta < 60)) {
for (int LEDon = 0; LEDon < 10; LEDon++) {
pixels.setPixelColor(min_55[LEDon], pixels.Color(0,0,0,255));
pixels.show();
}
}
}
za kazde zobrazeni (skupina ktera se zapina) ale to mi pixely palo na okamzik a hned vyplo, zkoušel jsem to dat na konec bloku minut ale to taky nejak nefungovalo.
Jak se v tom pořád hrabu tak se na to už neumím podivat s nadhledem a točím se jen na sptných řešeních
edit: jeste me napadlo udelat pole "minuty" do ktereho bych dal vsechny pixely pro minuty a to zhasinat ale nevim jestli nema nekdo lepsi napad.