Датчик температуры

Компоненты:

Подключение ВАЖНО!:

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.
}

Опыт с серводвигателем/Использование серводвигателя на 180 градусов

Для создания проекта потребуется:

Используется серводвигатель, который вращается на 180 градусов. (Для удобства откроем пример программы: Файл -> Примеры -> Servo)

Подключение серводвигателя:

#include <Servo.h> // подключаем библиотеку Servo.h в Arduino IDE Servo 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); 
}
}

Задание 4 Температурно-чувствительное управление сервоприводом (Регулировка температуры в теплице)

Компоненты:

Термодатчик и/или фоторезистор,

Сервомотор.

Код:

#include <Servo.h>

Servo servo1;
const int temperaturePin = 0;

void setup() {
  servo1.attach(9);
  Serial.begin(9600);
}

void loop() {
  float voltage, degreesC;

  voltage = getVoltage(temperaturePin);
  degreesC = (voltage - 0.5) * 100.0;

  if (degreesC < 22) {
    servo1.write(0);
    delay(20);
  } else if (degreesC >= 22 && degreesC < 28) {
    servo1.write(45);
    delay(20);
  } else if (degreesC >= 28 && degreesC < 35) {
    servo1.write(90);
    delay(20);
  } else if (degreesC >= 35) {
    servo1.write(90);
    delay(20);
  }

  Serial.print("voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.print(degreesC);
  delay(1000); 

}

float getVoltage(int pin) {
  return (analogRead(pin) * 0.004882814);
}

Видео:

Новые функции:

servo1.attach(9);
Выполняет привязку (attach) объекта servo1 к определенному цифровому пину Arduino, который используется для управления сервоприводом.

servo1.write(position);
Используется для установки положения сервопривода в определенное значение, указанное переменной position. Каждый вызов этой функции изменяет положение сервопривода на указанное значение.

voltage = getVoltage(temperaturePin);
Вызывает функцию getVoltage() для считывания напряжения с аналогового пина, который используеся для измерения температуры.