Kód: Vybrat vše
#define maxPWM 255 // minimální a maximální
#define minPWM 0 // defaultní hodnoty "PWM"
#define pinCount 6 // počet pinů celkem
int piny[] = {3, 5, 6, 9, 10, 11}; // pwm piny pro výstup
int pwmE[pinCount]; // počet výstupů
int mode = 1; // defaultní mód
int skok;
int pauzaMeziKroky = 10 ;
int minimumPWM = 0 ;
int maximumPWM = 255 ;
void setup(){
Serial.begin(9600);
for(int i = 0; i < pinCount; i++){pinMode(piny[i], OUTPUT);}
randomSeed(analogRead(0));
}
void loop(){
switchMode();
}
void switchMode(){
switch(mode){
case 1: vlna1(); break; // Udělá vlnu
case 2: nahoda1(); break; // Náhodně vybere ledku a okamžitě ji rozsvítí na náhodné číslo
case 3: nahoda2(); break; // Postupně rozsvítí ledky na náhodnou hodnotu
case 4: nahoda3(); break; // Náhodně a postupně rozsvěcí a stmívá ledky
case 5: nahoda4(); break; // Ledky rozsvěcí zároveň na náhodnou hodnotu
case 6: nahoda5(); break; // Ledky rozsvěcí zároveň na náhodnou hodnotu
}
}
void vlna1(){
int pwmValues[] = {1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,13,13,13,13,15,15,15,15,17,17,17,17,19,19,19,19,21,21,21,24,24,24,27,27,27,30,30,30,33,33,33,36,36,36,39,39,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,245,240,235,230,225,220,215,210,205,200,195,190,185,180,175,170,165,160,155,150,145,140,135,130,125,120,115,110,105,100,95,90,87,84,81,78,75,72,69,66,63,60,57,54,51,48,45,42,39,36,33,30,27,24,21,19,19,19,17,17,17,15,15,15,13,13,13,11,11,11,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3,2,2,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
int valuesCount = sizeof(pwmValues) / 2;
for(int i = 0; i < pinCount; i++){pwmE[i] = map(i, pinCount, 0, 0, valuesCount); } // rozmístí počáteční polohu v poli pro každý výstup
while(mode == 1){
for (int i = 0; i < pinCount; i++){
if(pwmE[i] < valuesCount - 1){pwmE[i]++; }
else{pwmE[i] = 0; }
analogWrite(piny[i], pwmValues[pwmE[i]]);
}
delay(pauzaMeziKroky);
}
}
void nahoda1(){
while(mode == 2){
analogWrite(piny[random(0, pinCount)], random(minimumPWM, maximumPWM));
delay(pauzaMeziKroky);
}
}
void nahoda2(){
while(mode == 3){
for(int i = 0; i < pinCount; i++){
analogWrite(piny[i], random(minimumPWM, maximumPWM));
delay(pauzaMeziKroky);
}
}
}
void nahoda3(){
skok = 10;
int wantValls[pinCount] = {};
int nowValls[pinCount] = {};
while(mode == 4){
int num = random(minimumPWM, maximumPWM);
int pin = random(0, pinCount);
wantValls[pin] = num;
for(int i = 0; i < pinCount; i++){
if(nowValls[i] < wantValls[i]){nowValls[i] += skok; }
if(nowValls[i] > wantValls[i]){nowValls[i] -= skok; }
analogWrite(piny[i], nowValls[i]);
}
delay(pauzaMeziKroky);
}
}
void nahoda4(){
skok = 1; // musí být 1
int wantValls[pinCount] = {};
int nowValls[pinCount] = {};
while(mode == 5){
for (int i = 0; i < pinCount; i++){
if(nowValls[i] == wantValls[i]){wantValls[i] = random(minimumPWM, maximumPWM); }
if(nowValls[i] < wantValls[i]){nowValls[i]++; }
if(nowValls[i] > wantValls[i]){nowValls[i]--; }
analogWrite(piny[i], nowValls[i]);
}
delay(pauzaMeziKroky);
}
}
void nahoda5(){
skok = 1; // musí být 1
int wantValls[pinCount] = {};
int nowValls[pinCount] = {};
while(mode == 6){
for(int i = 0; i < pinCount; i++){
wantValls[i] = random(minimumPWM, maximumPWM);
while(nowValls[i] != wantValls[i]){
if(nowValls[i] < wantValls[i]){nowValls[i]++; }
if(nowValls[i] > wantValls[i]){nowValls[i]--; }
analogWrite(piny[i], nowValls[i]);
delay(pauzaMeziKroky);
}
}
}
}