Veronika Milovzorova portfolio/ eng

experiment 4. temperature and servo

4.1 Katse Temperatuuri andur

const int temperaturePin = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{

float voltage, degreesC, degreesF;
// Сначала мы измерим напряжение на аналоговом входе. Обычно для этого мы
// использовали функцию analogRead(), которая возвращает число от 0 до 1023.
// Здесь же мы написали специальную функцию, о ней чуть дальше, под
// названием getVoltage(), которая возвращает напряжение (от 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);

// Вывод информации будет иметь вид подобно следующему:
// "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);
// Это уравнение преобразует значение напряжения от 0,0 до 5,0 В., полученное с помощью функции analogRead() с аналогового порта, в значения от 0 до 1023.
}

4.2. Katse Servo kasutamine

#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;

// Для управления сервоприводом, вы указываете ему угол на который он должен переместиться. Сервоприводы не могут повернуться на 360
// градусов, но вы можете указать ему, чтобы он поворачивался в определенную позицию от 0 до 180 градусов.

servo1.write(90); //pööramise nurk =90 (Говорим серве повернуться на позицию 90 градусов, т.е устанавливаем в среднее положение)
delay(1000); 
servo1.write(180); //pööramise nurk =180 (180 градусов, т.е устанавливаем в крайнее правое положение.)
delay(1000);
servo1.write(0); //pööramise nurk =0 (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 ("Говорим" сервоприводу повернуться на позицию 0 градусов, с шагом в 1 градус):
for(position = 180; position >= 0; position -= 1)
{ 
servo1.write(position); // positsiooni muutmine (Переместиться на следующую позицию)
delay(20); 
}
}

Ülesanne 4 Temperatuuritundlik servolülitus

Kood teostab temperatuuri mõõtmist, LED heleduse juhtimist mõõdetud fototakisti väärtuse alusel ja servo asendi juhtimist mõõdetud temperatuuri alusel. Programmi põhieesmärk on temperatuuri mõõtmine termistori abil ja servo juhtimine sõltuvalt mõõdetud temperatuurist.

Kasutasin:
1 sero
plaat
arduino
2 takisti
1 tmp
1 led
1 valgustakisti
11 juhet

#include <Servo.h> /Servo raamatukogu kaasamine servoga töötamiseks.

Servo servo;    //servo juhtimiseks servoobjekti loomine.
const int temperaturePin = 0; //Püsitemperatuuri määraminePin, et salvestada kontakti number, millega termistor on ühendatud
int LED = 13; //Muutuv deklaratsioon
int SensorFot = 1;
int ledPower=0;

void setup()
{
  servo.attach(9); //Ühendage servo kontaktiga 9.
  pinMode(LED,OUTPUT); // LED-i viivu VÄLJUND-režiimi seadmine.
  pinMode(SensorFot,INPUT); 
  pinMode(temperaturePin,INPUT);
  Serial.begin(9600); //Jadaside initsialiseerimine
}

void loop()  //Silmusfunktsiooni deklaratsioon, mis täidetakse lõpmatus tsüklis.
{
  servo.write(170); //Servo juhtimine, seades selle asendi 170 kraadi peale.
  int sensorValue = analogRead(temperaturePin);
  float voltage = sensorValue * (5.0 / 1023.0); //Pinge arvutamine loetud väärtuse põhjal
  float temp = (voltage - 0.5) * 100.0; //pinge muundamine temperatuuriks
  
  int Value_Fot = analogRead(SensorFot); //Analoogväärtuse lugemine fototakistist
  ledPower = map(Value_Fot, 60, 300, 0, 255);
  ledPower= constrain(ledPower, 0, 255);
  analogWrite(LED, ledPower);
  
  int grad = map(temp, 22, 35, 0, 360);
  grad = constrain(grad, 0, 360);

  if (temp < 22) // kui temp vähem kui 22
    servo.write(0);
  else if (temp> 10 && temp<40)
    servo.write(180);
  else
    servo.write(30);
  
  Serial.println(temp); //// Väljundi temp väärtus jadapordi monitorile
  Serial.println("----"); //// Väljastab loetavuse tagamiseks eraldusjoone
}

Servomootoreid kasutatakse:
1.Robootika
2.Simulatsioon ja RC mudelid
3.Automatiseerimine ja juhtimine
4.Lennundus ja astronautika

https://youtu.be/Ge4MaSQdMx0

en_US