kalin729

sem 3 task 3

Oct 15th, 2025 (edited)
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1. const int PIN_R = 9, PIN_G = 10, PIN_B = 11; // пиновете за различните цветове (важно е да са ШИМ/PWM)
  2. const int A_LDR = A0, A_TEMP = A1; // аналогови пинове, които слушат фоторезистора (LDR) и температурния сензор, който е тип TMP36
  3.  
  4. // максимални гранични стойности за осветление и температура
  5. const int   LIGHT_LOW_ADC = 350; // тъмно при по-ниски стойности
  6. const float TEMP_HIGH_C   = 28.0;
  7.  
  8. // задаване на цвят
  9. void setColor(int r, int g, int b) {
  10.   analogWrite(PIN_R, r);
  11.   analogWrite(PIN_G, g);
  12.   analogWrite(PIN_B, b);
  13. }
  14.  
  15. // update-ване на цвят, спрямо стойностите на темпертаурния сензор и фоторезистора
  16. // светването на червено поради висока стойност на температурния сензор е с приоритет
  17. // пред светването на синьо поради ниска осветеност
  18. void updateColor(float tempC, int ldr) {
  19.   if (tempC >= TEMP_HIGH_C) {
  20.     setColor(255, 0, 0);    // червено = горещо
  21.   } else if (ldr <= LIGHT_LOW_ADC) {
  22.     setColor(0, 0, 255);    // синьо = тъмно
  23.   } else {
  24.     setColor(0, 255, 0);    // зелено = нормално
  25.   }
  26. }
  27.  
  28. void setup() {
  29.   pinMode(PIN_R, OUTPUT);
  30.   pinMode(PIN_G, OUTPUT);
  31.   pinMode(PIN_B, OUTPUT);
  32.   Serial.begin(9600);
  33. }
  34.  
  35. void loop() {
  36.   // прочитане на температура спрямо формула за температурния сензор
  37.   // формулата е написана по опростен начин с цел демонстрация в симулационна среда
  38.   float temperature = map(((analogRead(A_TEMP) - 20) * 3.04), 0, 1023, -40, 125);
  39.  
  40.   // прочитане на ниво за осветеност
  41.   int lightLevel = analogRead(A_LDR);
  42.  
  43.   // използване на горе написаната функция за update-ване на цвят
  44.   updateColor(temperature, lightLevel);
  45.  
  46.   // print на стойностите, прочетени от сензорите
  47.   Serial.print("Temp = ");
  48.   Serial.print(temperature);
  49.   Serial.print("degC | Light ADC = ");
  50.   Serial.println(lightLevel);
  51.  
  52.   delay(300);
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment