//Karol chuj
//Wartości stałych od 0-1. Wieksze niż 1 moga wyjebać XD
const float pin3Multiplier = 0.1;
const float pin5Multiplier = 0.5;
const float pin6Multiplier = 1;
const float pin10Multiplier = 1;
const float pin11Multiplier = 1;
int sinPeriod = 0.3; //w sekundach
float sinCounter = 0;
int sinMinVal = 0.5;
int counter = 0;
int t = 10;
void setup() {
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
//Czyta jasność z potencjometru
float brightness = float(analogRead(A0)) / 1024;
//Stałe świecenie
analogWrite(3, int(brightness * pin3Multiplier * 255));
analogWrite(5, int(brightness * pin5Multiplier * 255));
//Miganie "ogniskowe"
if (counter == 0) {
counter = random(100);
analogWrite(6, int(brightness * pin6Multiplier * (random(120) + 135)));
analogWrite(10, int(brightness * pin10Multiplier * (random(120) + 135)));
digitalWrite(LED_BUILTIN, LOW);
} else {
counter--;
}
//Sinusik
analogWrite(11, int(brightness * pin11Multiplier * (sinMinVal * 255 + (255 - sinMinVal * 255) * (sin(sinCounter) + 1) / 2)));
sinCounter = sinCounter + (float(t) / 1000) * 2 * M_PI;
digitalWrite(LED_BUILTIN, HIGH);
delay(t);
}
/*
NOTATKI:
Stałe na górze kodu są potrzebne do wyregulowania jasności.
Dla ułatwienia dałem rezystory 100Ohm dla każdej diody.
Ale ponieważ czerwone ledy mają mniejszy spadek napięcią to będzie przez nie płynął wiekszy prąd
przy tym samym wypełnieniu PWM. Jak któraś ma być ciemniejsza to jej dajemy niższy współczynnik i jazda.
Pin 3 i 5 są niemigające - powoduje to ostatnie wyrażenie (255) we wzorze na wypełnienie
Piny 6,10 migają tak jak w linku - powoduje to nawias który zastępuje 255 i losowa wartość countera
Pin 11 miga sinusoidą. Będzie sobie krązył od sinMinVal np 0.5 maksymalnej jasności do maksymalnej jasności.
Link do migania: https://youtu.be/OxSUIeZs2d8?si=M85XgDCrQ6jJD9Ft&t=49
*/