// ZADANIE 4 - Arduino Uno // Sterowanie jasnością dwóch diod LED za pomocą potencjometru // Przycisk zmienia, która dioda rozjaśnia się przy wzroście wartości potencjometru const int POT_PIN = A0; const int LED_CZERWONA = 9; // pin PWM const int LED_ZIELONA = 10; // pin PWM const int PRZYCISK = 2; // przycisk do GND bool tryb = 0; // tryb = 0 -> potencjometr zwiększa jasność czerwonej LED // tryb = 1 -> potencjometr zwiększa jasność zielonej LED int poprzedniStanPrzycisku = HIGH; // Jeżeli potencjometr działa odwrotnie, zmień false na true bool odwrocPotencjometr = false; void setup() { pinMode(LED_CZERWONA, OUTPUT); pinMode(LED_ZIELONA, OUTPUT); pinMode(PRZYCISK, INPUT_PULLUP); Serial.begin(9600); Serial.println("START PROGRAMU"); Serial.println("Zadanie 4 - LED PWM + potencjometr + przycisk"); } void loop() { // ODCZYT PRZYCISKU int stanPrzycisku = digitalRead(PRZYCISK); // Wykrycie zmiany z HIGH na LOW, czyli naciśnięcia przycisku if (poprzedniStanPrzycisku == HIGH && stanPrzycisku == LOW) { tryb = !tryb; Serial.print("Zmieniono tryb na: "); if (tryb == 0) { Serial.println("czerwona rosnie, zielona maleje"); } else { Serial.println("zielona rosnie, czerwona maleje"); } delay(200); // prosta eliminacja drgan stykow } poprzedniStanPrzycisku = stanPrzycisku; // ODCZYT POTENCJOMETRU int wartoscPot = analogRead(POT_PIN); // zakres 0-1023 int pwm = map(wartoscPot, 0, 1023, 0, 255); if (odwrocPotencjometr == true) { pwm = 255 - pwm; } int pwmCzerwona; int pwmZielona; if (tryb == 0) { pwmCzerwona = pwm; pwmZielona = 255 - pwm; } else { pwmZielona = pwm; pwmCzerwona = 255 - pwm; } // WYSTEROWANIE DIOD analogWrite(LED_CZERWONA, pwmCzerwona); analogWrite(LED_ZIELONA, pwmZielona); // MONITOR PORTU SZEREGOWEGO Serial.print("Potencjometr: "); Serial.print(wartoscPot); Serial.print(" | PWM czerwona: "); Serial.print(pwmCzerwona); Serial.print(" | PWM zielona: "); Serial.print(pwmZielona); Serial.print(" | Tryb: "); if (tryb == 0) { Serial.println("czerwona rosnie"); } else { Serial.println("zielona rosnie"); } delay(100); }