You are on page 1of 6

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

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


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

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

Лабораторна робота № 1
БАЗОВІ ФУНКЦІЇ ПРОГРАМОВАНОГО МІКРОКОНТРОЛЕРА

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

7 варіант

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

Київ 2021
Мета:
Отримати практичні навички з програмування роботи вихідних
дискретних сигналів мікроконтролера, вивчити структуру програми
мікроконтролера.
Зміст роботи:
Написати програму, в якій реалізовано алгоритм паралельної роботи
вбудованого світлодіода і кольорового RGB-світлодіода відповідно до
варіанту.
Завдання:
7. Миготіння світлодіодом з частотою 1 Гц одночасно з переключенням
рожевого, жовтого, фіолетового кольорів RGB світлодіоду через 1,5с

Псевдокод програми:
---Підключаємо бібліотеки
---Задаємо змінну для збереження попереднього зафіксованого значення
часу для вбудованого світлодіода
--- Задаємо змінну для збереження попереднього зафіксованого значення
часу для 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, та змінюємо колір на фіолетовий

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


Кінець циклу

Код програми:
#include <Adafruit_NeoPixel.h>

#define PIN D2 //RGB підключений до 2-го виходу

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800);

int ledState = LOW;//задаємо початкове значення

unsigned long LEDinterval; //змінна для збереження попереднього зафіксованого значення

//часу для вбудованого світлодіода

int a = 0; // вводимо змінну для зміни кольорів

int redColor = b;

int greenColor = c;

int blueColor = d;

int b = 0; //вводимо змінні кольору


int c = 0; //вводимо змінні кольору

int d = 0; //вводимо змінні кольору

unsigned long RGBinterval;/ /змінна для збереження попереднього зафіксованого

//значення часу для RGB cвітлодіода

unsigned long currentMillis, previousMillis = 0; //змінні для збереження попереднього

// зафіксованого значення часу (точка відліку)

void setup(){

pixels.begin();

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


//сигналу

void loop() {

if (millis() - LEDinterval > 1000){ //якщо достатньо мілісекунд пройшло

LEDinterval = millis();

if (ledState == LOW)

ledState = HIGH;

else

ledState = LOW;

digitalWrite(BUILTIN_LED, ledState);//зчитувальне значення вихідного піна

currentMillis = millis();

if (millis() - RGBinterval > 1500){ //якщо достатньо мілісекунд пройшло

RGBinterval = millis();

if (a == 0){ //якщо змінна == значенню, то змінюємо колір на рожевий

a = 1;
b = 0;

c = 0;

d = 255;

else if (a == 1){ //якщо змінна == значенню, то змінюємо колір на жовтий

a = 2;

b = 180;

c = 255;

d = 0;

else if (a == 2){ //якщо змінна == значенню, то змінюємо колір на фіолетовий

a = 0;

b = 255;

c = 0;

d = 255;

pixels.setPixelColor(0, pixels.Color(redColor, greenColor, blueColor));//функція встановлення


//кольору

pixels.show();

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

You might also like