Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
const int PIN_R = 9, PIN_G = 10, PIN_B = 11; // пиновете за различните цветове (важно е да са ШИМ/PWM) const int A_LDR = A0, A_TEMP = A1; // аналогови пинове, които слушат фоторезистора (LDR) и температурния сензор, който е тип TMP36 // максимални гранични стойности за осветление и температура const int LIGHT_LOW_ADC = 350; // тъмно при по-ниски стойности const float TEMP_HIGH_C = 28.0; // задаване на цвят void setColor(int r, int g, int b) { analogWrite(PIN_R, r); analogWrite(PIN_G, g); analogWrite(PIN_B, b); } // update-ване на цвят, спрямо стойностите на темпертаурния сензор и фоторезистора // светването на червено поради висока стойност на температурния сензор е с приоритет // пред светването на синьо поради ниска осветеност void updateColor(float tempC, int ldr) { if (tempC >= TEMP_HIGH_C) { setColor(255, 0, 0); // червено = горещо } else if (ldr <= LIGHT_LOW_ADC) { setColor(0, 0, 255); // синьо = тъмно } else { setColor(0, 255, 0); // зелено = нормално } } void setup() { pinMode(PIN_R, OUTPUT); pinMode(PIN_G, OUTPUT); pinMode(PIN_B, OUTPUT); Serial.begin(9600); } void loop() { // прочитане на температура спрямо формула за температурния сензор float temperature = map(((analogRead(A_TEMP) - 20) * 3.04), 0, 1023, -40, 125); // прочитане на ниво за осветеност int lightLevel = analogRead(A_LDR); // използване на горе написаната функция за update-ване на цвят updateColor(temperature, lightLevel); // print на стойностите, прочетени от сензорите Serial.print("Temp = "); Serial.print(temperature); Serial.print("degC | Light ADC = "); Serial.println(lightLevel); delay(300); }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)