You are on page 1of 5

Міністерство освіти та науки України

Національний технічний університет України


«Київський політехнічний інститут імені Ігоря Сікорського»

Кафедра автоматизації теплоенергетичних процесів

Лабораторна робота № 3
АНАЛОГОВІ СИГНАЛИ

Курс: Основи побудови комп'ютерно-інтегрованих систем

7 варіант

Виконали:
Студенти групи ТА–11,ТЕФ
Риженко Н. В.
Гудзій А. С.
Бутаков М. А.
Перевірив:
Новіков П.В.

Київ 2021
Мета:
Отримати практичні навички роботи з аналоговими сигналами
мікроконтролера і типовими виконавчими механізмами.
Зміст роботи:
Написати програму, в якій відслідковується значення вхідного
аналогового параметра і реалізовано зв’язок цього параметра з виконавчим
механізмом відповідно до варіанту.
Завдання:
7.При зміні положення потенціометра пропорційно змінювати
тональність звукового сигналу п’єзоелектричного зумера. Якщо
положення потенціометра знаходиться в межах 40-60%, не вмикати
зумер.

Псевдокод програми:
---Підключаємо бібліотеки

---

--- Задаємо змінну для збереження попереднього зафіксованого значення


часу для RGB світлодіода

---задаємо початкові значення світлодіода та кольорів RGB

---задаємо змінну а для зміни кольорів RGB та прирівнюємо до 0

Цикл loop()

---встановити таймер для вбудованого світлодіода

---якщо (millis() - LEDinterval > 1000), то (LEDinterval = millis())

---якщо (ledState == LOW), то ledState = HIGH;

---Інакше (ledState = LOW)

---встановити таймер для RGB

---якщо (millis() - RGBinterval > 1500), то (RGBinterval = millis())

---якщо(а == 0) то присвоюємо а 1, та змінюємо колір на рожевий


---якщо(а == 1) то присвоюємо а 2, та змінюємо колір на жовтий

---якщо(а == 2) то присвоюємо а 0, та змінюємо колір на фіолетовий

--- виводимо відповідний колір

Кінець циклу

Код програми:
int analogPin = A0;

int buzzer = 9;

double val = 0; //задаємо початкове значення

double out = val; //змінна виводу в монітор послідовного інтерфейсу

int border1 = 40; //границі в я яких не працює зумер

int border2 = 60; //границі в я яких не працює зумер

int delayout = 1000;

int chek;

unsigned long Buzzerinterval;

unsigned long prevMillis=0, avgTime, count=0;

void setup()

pinMode(A0, INPUT); //встановлення A0, як піна для вхідного сигналу

Serial.begin(9600); // відкриває послідовний порт, встановлює швидкість 9600 біт

pinMode(buzzer, OUTPUT); //встановлення busser, як піна для вихідного сигналу

Serial.println("BEGIN");

void loop()
{

val = analogRead(analogPin); //зчитування показників потенціометра

out = val;

out = map(val, 0, 1023, 0, 100); //перевести в діапазон 0... 100

if(out >= border1 && out <= border2 || out ==0) //діапазон для обмеження звуку зумера

chek = 0;

noTone(buzzer);

else

chek = 1;

tone(buzzer, val);

if (millis() - Buzzerinterval > delayout)

Buzzerinterval = millis();

Serial.print("chek: ");

Serial.print(chek);

Serial.print(" | %: ");

Serial.print(out);

Serial.print(" | voltage: ");

Serial.print(val/204.6);

Serial.print(" | val: ");

Serial.print(val);

}
count++;

if(millis()- prevMillis >= 1000)

prevMillis=millis();

avgTime=1000L*1000L/count;

Serial.print(" | avgTime: ");

Serial.print(avgTime);

Serial.println(" mcs");

count=0;

Висновок:
Під час виконання лабораторної роботи ми отримали практичні навички з
програмування роботи вихідних дискретних сигналів мікроконтролера,
вивчили структуру програми мікроконтролера.

You might also like