4.1 Katse Temperatuuri andur

const int temperaturePin = 0; // ΠΠ½Π°Π»ΠΎΠ³ΠΎΠ²ΡΠΉ ΠΏΠΈΠ½ A0, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½ Π΄Π°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
void setup()
{
Serial.begin(9600); // ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠΊΠΎΡΠΎΡΡΠΈ 9600 Π±ΠΎΠ΄
}
void loop()
{
float voltage, degreesC, degreesF; // ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
// Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΈΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
voltage = getVoltage(temperaturePin);
// ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ Π¦Π΅Π»ΡΡΠΈΡ:
// ΠΠ»Ρ Π΄Π°ΡΡΠΈΠΊΠ° TMP36: 0.5 Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ 0Β°C, Π΄Π°Π»Π΅Π΅ 10 ΠΌΠ Π½Π° 1Β°C
degreesC = (voltage - 0.5) * 100.0;
// ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² Π³ΡΠ°Π΄ΡΡΡ Π€Π°ΡΠ΅Π½Π³Π΅ΠΉΡΠ°
degreesF = degreesC * (9.0 / 5.0) + 32.0;
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΌΠΎΠ½ΠΈΡΠΎΡ ΠΏΠΎΡΡΠ°
Serial.print("voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.print(degreesC);
Serial.print(" deg F: ");
Serial.println(degreesF);
delay(1000); // ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° 1 ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΏΠ΅ΡΠ΅Π΄ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ
}
// Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ
ΠΎΠ΄Π° Π² Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ (0.0 β 5.0 Π)
float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814); // 5.0 / 1023 β 0.00488
}
π ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
- Π Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡ ΠΏΠΈΠ½Ρ A0 ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΡΠΉ Π΄Π°ΡΡΠΈΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, TMP36).
- Π€ΡΠ½ΠΊΡΠΈΡ
analogRead()
ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ 0 Π΄ΠΎ 1023, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΡ 0 Π΄ΠΎ 5 Π. getVoltage()
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΎΠ»ΡΡΠ°Ρ .- ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² Π³ΡΠ°Π΄ΡΡΠ°Ρ Π¦Π΅Π»ΡΡΠΈΡ ΠΈ Π€Π°ΡΠ΅Π½Π³Π΅ΠΉΡΠ°.
- Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ Π² ΠΌΠΎΠ½ΠΈΡΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ.
π‘ Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.
4.2. Katse Servo kasutamine

// Paljud saadaolevad teegid (libraryβd) on leitavad aadressilt http://arduino.cc/en/Reference/Libraries
#include <Servo.h> // ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Servo Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΎΠΏΡΠΈΠ²ΠΎΠ΄Π°ΠΌΠΈ
// ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ.
// Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Servo: http://arduino.cc/en/Reference/Servo
// ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΌΠ΅Π½Ρ "File / Examples".
Servo mootor; // Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ "mootor", ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠ²ΠΎΠΏΡΠΈΠ²ΠΎΠ΄
void setup()
{
// ΠΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ "mootor" ΠΊ ΡΠΈΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΠΈΠ½Ρ 9.
// ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΠ²ΠΎΠΏΡΠΈΠ²ΠΎΠ΄ΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΠΈΡΡΠΎΠ²ΠΎΠΌΡ Π²ΡΡ
ΠΎΠ΄Ρ.
mootor.attach(9); // ΠΠΈΠ½ 9 Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π¨ΠΠ (PWM)
}
void loop()
{
int asend; // ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΡΠΎΡΠ°
// ΠΠ²ΠΈΠ³Π°Π΅ΠΌ ΠΌΠΎΡΠΎΡ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ:
mootor.write(90); // ΠΠΎΠ²Π΅ΡΠ½ΡΡΡ Π½Π° 90Β°
delay(1000); // ΠΠ΄ΡΠΌ 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ
mootor.write(180); // ΠΠΎΠ²Π΅ΡΠ½ΡΡΡ Π½Π° 180Β°
delay(1000);
mootor.write(0); // ΠΠ΅ΡΠ½ΡΡΡΡΡ ΠΊ 0Β°
delay(1000);
// ΠΠ»Π°Π²Π½ΡΠΉ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΌΠΎΡΠΎΡΠ° ΠΏΠΎ ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠ΅: ΠΎΡ 0Β° Π΄ΠΎ 180Β° Ρ ΡΠ°Π³ΠΎΠΌ 2Β°
for(asend = 0; asend < 180; asend += 2)
{
mootor.write(asend); // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ³ΠΎΠ»
delay(20); // ΠΠΎΡΠΎΡΠΊΠ°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π΄Π»Ρ ΠΏΠ»Π°Π²Π½ΠΎΡΡΠΈ
}
// ΠΠ»Π°Π²Π½ΡΠΉ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΌΠΎΡΠΎΡΠ° ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ: ΠΎΡ 180Β° Π΄ΠΎ 0Β° Ρ ΡΠ°Π³ΠΎΠΌ 1Β°
for(asend = 180; asend >= 0; asend -= 1)
{
mootor.write(asend); // Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ³ΠΎΠ»
delay(20); // ΠΠΎΡΠΎΡΠΊΠ°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π΄Π»Ρ ΠΏΠ»Π°Π²Π½ΠΎΡΡΠΈ
}
}
π ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: Π‘Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
Servo.h
ΠΈ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡmootor
, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ΅ΡΠ²ΠΎΠΏΡΠΈΠ²ΠΎΠ΄ΠΎΠΌ. - ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°: Π
setup()
ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠ΅ΡΠ²ΠΎΠΏΡΠΈΠ²ΠΎΠ΄ ΠΊ ΡΠΈΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΠΈΠ½Ρ 9. - ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» (
loop
):- ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠ΅ΡΠ²ΠΎΠΏΡΠΈΠ²ΠΎΠ΄ ΡΡΠ°Π·Ρ Π² ΡΡΠΈ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ: 90Β°, 180Β°, 0Β° β Ρ ΠΏΠ°ΡΠ·ΠΎΠΉ Π² 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ.
- ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠ»Π°Π²Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅:
- Π‘Π½Π°ΡΠ°Π»Π° Π²ΠΏΠ΅ΡΡΠ΄: ΠΎΡ 0Β° Π΄ΠΎ 180Β° Ρ ΡΠ°Π³ΠΎΠΌ 2Β° ΠΈ ΠΏΠ°ΡΠ·ΠΎΠΉ 20 ΠΌΡ.
- ΠΠΎΡΠΎΠΌ Π½Π°Π·Π°Π΄: ΠΎΡ 180Β° Π΄ΠΎ 0Β° Ρ ΡΠ°Π³ΠΎΠΌ 1Β° ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΡΠ·ΠΎΠΉ.
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΡΠΈΠΊΠ»Π΅Π½Π°, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ.
π§ Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ²ΠΎΠΏΡΠΈΠ²ΠΎΠ΄Π°, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ³Π»ΠΎΠ² ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ»Π°Π²Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ.
Γlesanne 4 Temperatuuritundlik servolΓΌlitus

π― Π¦Π΅Π»Ρ:
Π‘ΠΎΠ·Π΄Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΈΠ½ΠΈΠ°ΡΡΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΠΏΠ»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠ½Π½ΠΎΡΡΡ ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅ΠΉ ΡΡΠ΅Π΄Ρ.
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡΠΎΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΠ»ΠΈ Π²ΡΠΊΠ»ΡΡΠ°ΡΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠΎΠ²Π½Ρ ΡΠ²Π΅ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡΠΎΡΠ΅Π·ΠΈΡΡΠΎΡ.
ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²ΡΠ·Π°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅ΠΉ ΡΡΠ΅Π΄Ρ Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠΎΠΉ ΠΈ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡ
ΠΎΠ΄ Π·Π° ΡΠ°ΡΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΠΌΠΈΠ½ΠΈ-ΡΠ΅ΠΏΠ»ΠΈΡΠ΅.
π§° ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΡΠΉ Π΄Π°ΡΡΠΈΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, LM35, DHT11 ΠΈΠ»ΠΈ TMP36)
- Π€ΠΎΡΠΎΡΠ΅Π·ΠΈΡΡΠΎΡ (LDR β Light Dependent Resistor)
- Π‘Π΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡ (Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ SG90)
- Π‘Π²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ (LED) β Π΄Π»Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ
- Arduino Uno
- Π Π΅Π·ΠΈΡΡΠΎΡΡ (Π΄Π»Ρ LDR ΠΈ LED)
- ΠΡΠΎΠ²ΠΎΠ΄Π° ΠΈ breadboard
- ΠΠΎΡΠΎΠ±ΠΊΠ° ΠΈΠ»ΠΈ ΠΌΠΎΠ½ΡΠ°ΠΆΠ½Π°Ρ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ° Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
- ΠΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΈΡΠ°Π½ΠΈΡ (USB, Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΠ° ΠΈΠ»ΠΈ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ)
βοΈ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ:
β 1. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡΠΎΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ:
- ΠΡΠ»ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° β€ 20Β°C, ΡΠ΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 0Β° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠΊΠ½ΠΎ ΡΠ΅ΠΏΠ»ΠΈΡΡ).
- ΠΡΠ»ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° β₯ 30Β°C, ΡΠ΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 180Β° (ΠΎΠΊΠ½ΠΎ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΎΡ Π»Π°ΠΆΠ΄Π΅Π½ΠΈΡ).
- ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠ»Π°Π²Π½ΡΠΌ, Π° Π½Π΅ ΡΠ΅Π·ΠΊΠΈΠΌ (Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠ°Π³Π°ΠΌΠΈ).
β 2. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠΎΡΠ΅Π·ΠΈΡΡΠΎΡΠ°:
- ΠΡΠ»ΠΈ ΠΎΡΠ²Π΅ΡΡΠ½Π½ΠΎΡΡΡ Π½ΠΈΠ·ΠΊΠ°Ρ (ΡΠ΅ΠΌΠ½ΠΎ), ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
- ΠΡΠ»ΠΈ ΡΠ²Π΅ΡΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Π²ΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ.
π§ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Arduino:
π ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ³ΠΎΠ» ΡΠ΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡΠ°:
int servoAngle = map(temperature, 22, 35, 0, 180);
servoAngle = constrain(servoAngle, 0, 180); // ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ³Π»Π° Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
0β180Β°
ποΈ ΠΠ»Π°Π²Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡΠ°:
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
servo.write(currentAngle);
delay(15); // ΠΏΠ»Π°Π²Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅
π Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Ρ ΡΠ²Π΅ΡΠ° Ρ LDR ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠΌ:
int lightLevel = analogRead(LDRPin);
if (lightLevel < 500) { // Π΅ΡΠ»ΠΈ ΡΠ΅ΠΌΠ½ΠΎ
digitalWrite(ledPin, HIGH); // Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅Ρ
} else {
digitalWrite(ledPin, LOW); // Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅Ρ
}
βοΈΠ Π°Π±ΠΎΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
#include <Servo.h>
const int led = 12;
const int sensorPin = A1;
int lightLevel, high = 0, low = 1023;
const int temperaturePin = A0;
Servo servo1;
int currentAngle = 0; // ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ³ΠΎΠ» ΡΠ΅ΡΠ²ΠΎΠΏΡΠΈΠ²ΠΎΠ΄Π°
void setup() {
pinMode(led, OUTPUT);
servo1.attach(13); // ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΡΠ²ΠΎΠΌΠΎΡΠΎΡ ΠΊ ΠΏΠΈΠ½Ρ 13
Serial.begin(9600);
}
void loop() {
// === Π―ΡΠΊΠΎΡΡΡ LED ΠΏΠΎ ΡΡΠΎΠ²Π½Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ ===
lightLevel = analogRead(sensorPin);
analogWrite(led, lightLevel);
// ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ)
if (lightLevel > high) {
high = lightLevel;
}
// === Π‘ΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ===
float voltage = getVoltage(temperaturePin);
float degreesC = (voltage - 0.5) * 100.0;
float degreesF = degreesC * (9.0 / 5.0) + 32.0;
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.print(degreesC);
Serial.print(" deg F: ");
Serial.println(degreesF);
// === ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ³ΠΎΠ» ΠΏΠΎ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅ ===
int targetAngle;
if (degreesC <= 25) {
targetAngle = 0; // ΠΠ°ΠΊΡΡΡΠΎ
} else if (degreesC >= 35) {
targetAngle = 180; // ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΡΡΡΠΎ
} else {
targetAngle = map(degreesC, 26, 34, 0, 180); // ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
}
// === ΠΠ»Π°Π²Π½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅Π»Π΅Π²ΠΎΠΌΡ ΡΠ³Π»Ρ ===
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
servo1.write(currentAngle);
delay(15); // ΠΏΠ»Π°Π²Π½ΠΎΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ
}
// === ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ
ΠΎΠ΄Π° ===
float getVoltage(int pin) {
return analogRead(pin) * 0.004882814;
}