Katsed 4

katse 4.1

Katse temperatuuri mõõtmiseks temperatuurianduri abil.

 Saadud tulemused kirjutame  iga sekundi tagant Serial Monitori.

Komponendid:

Andur TMP36
5 traati

Skeem:

Kood:

const int temperaturePin = 0;
 
void setup()
{
Serial.begin(9600);
}
 
void loop()
{
 
float voltage, degreesC, degreesF;
// kasutame analogRead(), mis tagastab sisendi väärtused vahemikul 0 ... 1023.
// koostasime getVoltage() funktsioon, mis tagastab pingeväärtus  0 ... 5,
 
voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;
// degreesC = voltage * 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);
 
//Ekraanil ilmub järgmine tekst: "voltage: 0.73 deg C: 22.75 deg F: 72.96"
delay(1000); // ootame 1 sek
}
 
float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
// teisendame pinge vahemikust 0,0 ... 5,0 V, vahemikku 0 до 1023.

katse 4.2

180 kraadine servo mootori kasutamine

Komponendid:

Servo
8 traati

Kasutusel on 180 kraadi pöörav servo mootor. (Võtame ladususe huvides lahti näidisprogammi: File-> Examples -> Servo)

Skeem:

Kood:

#include  <Servo.h> // nii teavitame Arduino IDE-t vajadusest kasutada Servo.h teeki (подключаем дополнительную библиотеку)
// Как только вы "подключаете" библиотеку, так сразу получаете доступ к этим функциям. Вы можете найти список функций в библиотеке
// сервопривода в: http://arduino.cc/en/Reference/Servo. Большинство библиотек доступно из меню "Файл / примеры".
 
Servo servo1; // Peame looma servo objekti nimega servo1 (объект управления сервоприводом)
 
void setup()
{
// Сейчас мы прикрепим (attach) объект servo1 к цифровому пину 9. Если вы собираетесь управлять более чем одним
// сервоприводом, Вы должны прикрепить каждый новый объект серво к своему, отдельному порту, причем это порт должен быть цифровым.
servo1.attach(9); //ütleme Arduinole, et infosuhtlus servo-objektiga servo käib läbi klemmi number 9. Tegu on digitaal-klemmiga--PWM digitaalne osa! Kontrollime, kas skeemil kasutame sama klemmi.
}
void loop()
{
int position;
 
servo1.write(90); //pööramise nurk =90
delay(1000); 
servo1.write(180); //pööramise nurk =180
delay(1000);
servo1.write(0); //pööramise nurk =0
delay(1000);
 
// servo positsiooni muutmine väike kiirusega pärisuunas:
for(position = 0; position < 180; position += 2)
{
servo1.write(position); // positsiooni muutmine
delay(20); 
}
 
// servo positsiooni muutmine väike kiirusega vastupäeva:
for(position = 180; position >= 0; position -= 1)
{ 
servo1.write(position); // positsiooni muutmine
delay(20); 
}
}

Katse 4.3

Töö protsess:

See kood loeb valguse ja temperatuuri väärtusi, reguleerib LED-i heledust valguse taseme alusel ja reguleerib servomootori asendit temperatuuri näitude alusel, andes seeriaside kaudu teavet silumise kohta. algab temperatuuril 25 kraadi Celsiuse järgi.

Komponendid:
Arduino UNO plaat (1tk)
Arendusplaat (1tk)
LED (1tk)
15 traati
2 takisti
photoresistor (1tk)
Micro Servo (1tk)
temperatuuriandur (1tk)

Termomeetri kasutamise protsess:

Päevavalguse korral on valgustundlik andur välja lülitatud, kuid öösel lülitub see automaatselt sisse.

Kui temperatuur on vahemikus 25 kuni 20 kraadi, siis pööratakse servoajam 180 kraadi.

Kui temperatuur on alla 20 kraadi, pööratakse servoajam nullkraadisele asendile.

Reaalse elu rakendused:

  • Servoajamid: Neid kasutatakse roboteid juhtivates liikumissüsteemides, nt robotkäed, automaatikasüsteemid tootmisliinidel ning autonoomsed sõidukid.
  • Temperatuuriandurid: Neid kasutatakse kliimaseadmetes, külmikutes, kuumutusseadmetes ja termoregulatsioonisüsteemides, et mõõta ja reguleerida temperatuuri vastavalt vajadusele.
  • Fotoresistorid: Neid kasutatakse valgustundlike seadmetena, näiteks automaatsetes valgustussüsteemides, valgusandurites, päikesepaneelides ja kaamerates, et tuvastada valguse intensiivsust ja reguleerida vastavalt valgustustaset.

Skeem:

kood:

#include <Servo.h>
 
const int led = 12; 
const int sensorPin = A1;
int lightLevel, high = 0, low = 1023;
 
const int temperaturePin = A0;
Servo servo1;
 
void setup() {
  pinMode(led, OUTPUT);
  servo1.attach(13); //
  Serial.begin(9600); //
}
 
void loop() {
  lightLevel = analogRead(sensorPin);
  analogWrite(led, lightLevel);
 
  float voltage, degreesC, degreesF;
  voltage = getVoltage(temperaturePin);
  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);
 
  if (degreesC <= 25 && degreesC >= 18) { // Если температура между 22°C и 25°C
    servo1.write(180);
    delay(1000);
  } else {
    servo1.write(0);
    delay(1000);
  }
  delay(2000);
}
 
float getVoltage(int pin) {
  return (analogRead(pin) * 0.004882814);
}
 
  if (lightLevel > high) {
    high = lightLevel; //
  }
  delay(100);
}

Video:

Uued funktsioonid:

getVoltage: loeb analoogsignaali määratud viigult ja teisendab selle koefitsiendi abil pingeks.

servo1.attach(13); – See rida initsialiseerib objekti servo1, et juhtida servomootorit, mis on ühendatud digitaalviiguga 13.

servo1.write(); – Seda funktsiooni kasutatakse servo pöördenurga määramiseks. Koodis kasutatakse seda selleks, et pöörata servo teatud nurga võrra sõltuvalt temperatuuri väärtusest.

Serial.begin(9600); – See funktsioon initsialiseerib jadakommunikatsiooni vigade kõrvaldamise sõnumite jaoks. See seab baudikiiruseks 9600 bitti sekundis.