kalin729

sem 3 task 2

Oct 15th, 2025
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. const int PIN_R = 9, PIN_G = 10, PIN_B = 11;  // пиновете за различните цветове (важно е да са ШИМ/PWM)
  2. const int POT_R = A0, POT_G = A1, POT_B = A2; // пиновете за потенциометрите (важно е да са Аналогови пинове)
  3.  
  4. // функция, която прочита стойността на аналоговия пин и чрез map функцията я превръща
  5. // в стойност, пропорционална на максималната PWM стойност
  6. // защото максималното, което чете потенциометъра от аналоговия пин е 1023
  7. // а максималното, което може да се изпрати на ЛЕД по ШИМ е 255
  8. int readPotAsPWM(int potPin) {
  9.   int val = analogRead(potPin);
  10.   return map(val, 0, 1023, 0, 255);
  11. }
  12.  
  13. // използване на analogWrite за подаване на стойности по ШИМ за различните цветове на светодиода
  14. void setColor(int r, int g, int b) {
  15.   analogWrite(PIN_R, r);
  16.   analogWrite(PIN_G, g);
  17.   analogWrite(PIN_B, b);
  18. }
  19.  
  20. void setup() {
  21.   pinMode(PIN_R, OUTPUT);
  22.   pinMode(PIN_G, OUTPUT);
  23.   pinMode(PIN_B, OUTPUT);
  24.   Serial.begin(9600);
  25. }
  26.  
  27. void loop() {
  28.   // използване на написаната горе функция за превръщане на прочетените аналогови стойности
  29.   // в стойности подходящи за ШИМ
  30.   int redValue   = readPotAsPWM(POT_R);
  31.   int greenValue = readPotAsPWM(POT_G);
  32.   int blueValue  = readPotAsPWM(POT_B);
  33.  
  34.   // използване на написаната горе фунцкия за задаване на цвят
  35.   setColor(redValue, greenValue, blueValue);
  36.  
  37.   // output на стойностите
  38.   Serial.print("Red: ");
  39.   Serial.print(redValue);
  40.   Serial.print(" Green: ");
  41.   Serial.print(greenValue);
  42.   Serial.print(" Blue: ");
  43.   Serial.print(blueValue);
  44.   Serial.println();
  45.  
  46.   delay(10);
  47. }
  48.  
Advertisement
Add Comment
Please, Sign In to add comment