Sunteți pe pagina 1din 9

MINISTERUL EDUCAŢIEI, CULTURII ȘI CERCETĂRII

Universitatea Tehnică a Moldovei


Facultatea Calculatoare Informatică şi Microelectronică
Departamentul Ingineria Software și Automatică

Raport
Disciplina: Internetul Lucrurilor(IoT)
Tema: “Sisteme de operare”

Student: _____________ Mereuță Ana, TI-192

Coordonator: _____________ Lupan Cristian, asist. univ.

Chişinău 2022
1. Descrierea problemei
Realizarea unei aplicații pentru MCU care va rula minim 3 task-uri in doua versiuni - Secvential si cu
FreeRTOS. Aplicația va rula minim 3 task-uri printre care:
- Button Led - Schimbare stare LED la detecția unei apăsări pe buton.
- un al doilea Led Intermitent în faza în care LED-ul de la primul Task e stins
- Incrementare/decrementare valoare a unei variabile la apăsarea a doua butoane care va reprezenta numărul
de recurențe/timp în care ledul de la al doilea task se va afla într-o stare
- Task-ul de Idle se va utiliza pentru afișarea stărilor din program, cum ar fi, afișare stare LED, și afișare
mesaj la detecția apăsării butoanelor, o implementare fiind ca la apăsarea butonului sa se seteze o variabila,
iar la afișare mesaj - resetare, implementând mecanismul provider/consumer.

2. Materiale și metode
Materialele care au fost utilizate în cadrul acestei lucrări de laborator sunt următoarele: placă de dezvoltare
Arduino UNO R3, LED, LED RGB, Button, potențiometru, rezistor, fire de conexiune.
Tinkercad este un program de modelare 3D online gratuit, care rulează într-un browser web. De când a
devenit disponibil în 2011, a devenit o platformă populară pentru crearea de modele pentru imprimarea 3D,
precum și o introducere de bază la geometria solidă constructivă în școli.
Componentele de bază ale Tinkercad, sunt alcătuite dintr-o baterie, buton, rezistor, LED, condensator.
Ansamblurile de circuite sunt circuite simple, prefabricate. Unele dintre ansamblurile de circuite disponibile
sunt circuitul de strălucire, circuitul de mișcare și rotirea circuitului.
Proteus Design Suite este o suită de instrumente software folosită în principal pentru automatizarea
designului electronic. Software-ul este utilizat în principal de către ingineri și tehnicieni în proiectarea
electronică pentru a crea scheme și imprimeuri electronice pentru fabricarea plăcilor de circuit imprimat.

3. Schema

4. Codul sursă:
#define LED_BLUE_PIN 13
#define LED_RED_PIN 12
#define BUTTON_LED1_PIN 11
#define BUTTON_PLUS_PIN 10
#define BUTTON_MINUS_PIN 9

#define RGB_RED_PIN A2
#define RGB_GREEN_PIN A1
#define RGB_BLUE_PIN A0

#define INPUT_RED_PIN A3
#define INPUT_GREEN_PIN A4
#define INPUT_BLUE_PIN A5
bool blueLedState = false;
bool redLedState = false;

int redLedDelayValue = 1;
int redLedDelayTimer = 0;
bool timerRunning = true;

int redValue = 0;
int greenValue = 0;
int blueValue = 0;

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);


void setup() {
pinMode(LED_BLUE_PIN, OUTPUT);
pinMode(LED_RED_PIN, OUTPUT);
pinMode(BUTTON_LED1_PIN, INPUT);
pinMode(BUTTON_PLUS_PIN, INPUT);
pinMode(BUTTON_MINUS_PIN, INPUT);

pinMode(RGB_RED_PIN, OUTPUT);
pinMode(RGB_GREEN_PIN, OUTPUT);
pinMode(RGB_BLUE_PIN, OUTPUT);
pinMode(INPUT_RED_PIN, INPUT);
pinMode(INPUT_GREEN_PIN, INPUT);
pinMode(INPUT_BLUE_PIN, INPUT);
lcd.begin(16, 2);
}
void readPotentiometersValues() {
redValue = map(analogRead(INPUT_RED_PIN), 0, 1023, 0, 255);
greenValue = map(analogRead(INPUT_GREEN_PIN), 0, 1023, 0, 255);
blueValue = map(analogRead(INPUT_BLUE_PIN), 0, 1023, 0, 255);
}
void setRgbLedColor() {
analogWrite(RGB_RED_PIN, redValue);
analogWrite(RGB_GREEN_PIN, greenValue);
analogWrite(RGB_BLUE_PIN, blueValue);
}
char cstr[3];
char * convertIntToString(int value) {
itoa(value, cstr, 10);
return cstr;
}

Secvențial:
Pentru a implementa logica în mod secvențial, au fost implementate mai multe funcții, care se apelează la
rând în metoda loop.

Aceasta arată în felul următor:


void loop() {
isButtonPressed(BUTTON_LED1_PIN);
isButtonPressed(BUTTON_PLUS_PIN);
isButtonPressed(BUTTON_MINUS_PIN);

readPotentiometersValues();
setRgbLedColor();

redLedLoop();
showOnScreen();
}
void isButtonPressed(int buttonPin) {
if (!digitalRead(buttonPin)) {
return;
}

switch (buttonPin)
{
case BUTTON_LED1_PIN:
firstButtonAction();
break;
case BUTTON_PLUS_PIN:
secondThirdButtonAction(+1);
break;
case BUTTON_MINUS_PIN:
secondThirdButtonAction(-1);
break;
}

while (digitalRead(buttonPin));
}
void firstButtonAction() {
blueLedState = !blueLedState;
digitalWrite(LED_BLUE_PIN, blueLedState);
}
void secondThirdButtonAction(int value) {
if (redLedDelayValue == 1 && value < 0) {
return;
}

redLedDelayValue += value;
}
void redLedLoop() {
if(!blueLedState) {
timerRunning = true;
}

if (blueLedState && timerRunning) {


timerRunning = false;
digitalWrite(LED_RED_PIN, redLedState);
redLedDelayTimer = 0;
return;
}
if (!timerRunning) return;

if (redLedDelayTimer >= redLedDelayValue * 10) {


redLedState = !redLedState;
redLedDelayTimer = 0;
}
redLedDelayTimer++;
delay(10);
}
void showOnScreen() {
delay(100);
lcd.clear();

String blueLedText = blueLedState ? "ON" : "OFF";


String redLedText = redLedState ? "ON" : "OFF";

lcd.println(blueLedText + " " + redLedText + " " + (redLedDelayValue * 10) + " " +
redLedDelayTimer);

lcd.setCursor(0, 1);
lcd.print(redValue);
lcd.print(" ");
lcd.print(greenValue);
lcd.print(" ");
lcd.print(blueValue);
lcd.print(" ");
}
FreeRTOS:
xTaskCreate(vATaskFirstButton, "FirstButton", 128, NULL, 1, NULL);
xTaskCreate(vATaskChangeRedLedDelay, "ChangeRedLedDelay", 128, NULL, 1, NULL);
xTaskCreate(vATaskBlinkRedLed, "BlinkRedLed", 128, NULL, 1, NULL);
xTaskCreate(vATaskSetRgbLed, "SetRgbLed", 128, NULL, 1, NULL);
xTaskCreate(vATaskShowOnLcd, "ShowOnLcd", 128, NULL, 1, NULL);:
void vATaskFirstButton(void *pvParameters) {
do {
if (digitalRead(BUTTON_LED1_PIN)) {
blueLedState = !blueLedState;
digitalWrite(LED_BLUE_PIN, blueLedState);
}

while (digitalRead(BUTTON_LED1_PIN));
vTaskDelay(100 / portTICK_PERIOD_MS);
} while(true);
}
void vATaskChangeRedLedDelay(void *pvParameters) {

do {
if (digitalRead(BUTTON_MINUS_PIN) && redLedDelayValue > 1) {
redLedDelayValue--;
}

if(digitalRead(BUTTON_PLUS_PIN)) {
redLedDelayValue++;
}

redLedDelayTicks = redLedDelayValue * 1000 / portTICK_PERIOD_MS;


while (digitalRead(BUTTON_PLUS_PIN) || digitalRead(BUTTON_MINUS_PIN));

vTaskDelay(100 / portTICK_PERIOD_MS);
} while(true);
}
void vATaskBlinkRedLed(void *pvParameters) {
do {
if (blueLedState == false) {
redLedState = !redLedState;
digitalWrite(LED_RED_PIN, redLedState);
}
vTaskDelay(redLedDelayTicks);
} while(true);
}
void vATaskSetRgbLed(void *pvParameters) {
do {
readPotentiometersValues();
setRgbLedColor();
vTaskDelay(100 / portTICK_PERIOD_MS);
} while (true);
}
void vATaskShowOnLcd(void *pvParameters) {
String blueLedText = "";
String redLedText = "";

do {
lcd.clear();
blueLedText = blueLedState ? "ON" : "OFF";
redLedText = redLedState ? "ON" : "OFF";

lcd.println(blueLedText + " " + redLedText + " " + (redLedDelayValue * 10));

lcd.setCursor(0, 1);
lcd.print(redValue);
lcd.print(" ");
lcd.print(greenValue);
lcd.print(" ");
lcd.print(blueValue);
lcd.print(" ");

vTaskDelay(100 / portTICK_PERIOD_MS);
} while(true);
}
5. Rezultatul

Figura 2 – Starea inițială


Figura 3 – Led-ul albastru este aprins

Figura 5 – Modificarea timpului în care led-ul roșu rămâne într-o stare

Figura 6 – Modificarea culorii led-ului RGB

S-ar putea să vă placă și

  • IoT LL4
    IoT LL4
    Document4 pagini
    IoT LL4
    Anya Mr
    Încă nu există evaluări
  • IoT LL1
    IoT LL1
    Document12 pagini
    IoT LL1
    Anya Mr
    100% (1)
  • Damean Alexandra IOT3
    Damean Alexandra IOT3
    Document8 pagini
    Damean Alexandra IOT3
    Damean Alexandra
    Încă nu există evaluări
  • LL3 IoT ECiobanu
    LL3 IoT ECiobanu
    Document6 pagini
    LL3 IoT ECiobanu
    Ecaterina Ciobanu
    Încă nu există evaluări
  • Damean Alexandra IOT4
    Damean Alexandra IOT4
    Document9 pagini
    Damean Alexandra IOT4
    Damean Alexandra
    Încă nu există evaluări
  • IoT LL6
    IoT LL6
    Document8 pagini
    IoT LL6
    Anya Mr
    Încă nu există evaluări
  • Damean Alexandra IOT5
    Damean Alexandra IOT5
    Document9 pagini
    Damean Alexandra IOT5
    Damean Alexandra
    Încă nu există evaluări
  • Preguza Cristian CR-201 LAB4
    Preguza Cristian CR-201 LAB4
    Document9 pagini
    Preguza Cristian CR-201 LAB4
    Aur Itar
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document8 pagini
    Lab 1
    dtatn
    Încă nu există evaluări
  • SEI Atest 1
    SEI Atest 1
    Document20 pagini
    SEI Atest 1
    Nicoleta Lesan
    100% (1)
  • SOMIPP Lab 5
    SOMIPP Lab 5
    Document5 pagini
    SOMIPP Lab 5
    Augusta Bucataru
    Încă nu există evaluări
  • Lab 1 PPE
    Lab 1 PPE
    Document4 pagini
    Lab 1 PPE
    King 79
    Încă nu există evaluări
  • Laboratorul 2 PPE
    Laboratorul 2 PPE
    Document4 pagini
    Laboratorul 2 PPE
    crismaruion
    Încă nu există evaluări
  • Programarea in Windows Lucrare de Laborator Nr. 2
    Programarea in Windows Lucrare de Laborator Nr. 2
    Document3 pagini
    Programarea in Windows Lucrare de Laborator Nr. 2
    Liviu Doloscan
    Încă nu există evaluări
  • Lab1 Pam
    Lab1 Pam
    Document9 pagini
    Lab1 Pam
    Ion Popescu
    100% (2)
  • Laborator-2 TS
    Laborator-2 TS
    Document13 pagini
    Laborator-2 TS
    Сергей Борта
    Încă nu există evaluări
  • Ppe 1
    Ppe 1
    Document5 pagini
    Ppe 1
    Victor Lungu
    Încă nu există evaluări
  • Lab APA 4
    Lab APA 4
    Document12 pagini
    Lab APA 4
    AlionaCrigan
    Încă nu există evaluări
  • Lab 1 LFA
    Lab 1 LFA
    Document10 pagini
    Lab 1 LFA
    Eric Semeniuc
    Încă nu există evaluări
  • PPE Lab7
    PPE Lab7
    Document14 pagini
    PPE Lab7
    danielploaia
    Încă nu există evaluări
  • CR-191 MIPI Axenti Alina Lab4
    CR-191 MIPI Axenti Alina Lab4
    Document6 pagini
    CR-191 MIPI Axenti Alina Lab4
    Alina Axenti
    Încă nu există evaluări
  • TW Lab4
    TW Lab4
    Document8 pagini
    TW Lab4
    Dan
    Încă nu există evaluări
  • MMC2 Modulul2
    MMC2 Modulul2
    Document16 pagini
    MMC2 Modulul2
    ViorelRotari
    Încă nu există evaluări
  • Somipp SOMIPP5
    Somipp SOMIPP5
    Document6 pagini
    Somipp SOMIPP5
    Damean Alexandra
    Încă nu există evaluări
  • Subiecte Examen ASDN
    Subiecte Examen ASDN
    Document3 pagini
    Subiecte Examen ASDN
    Camy Tripon
    Încă nu există evaluări
  • Laborator NR.2
    Laborator NR.2
    Document9 pagini
    Laborator NR.2
    Daniil
    Încă nu există evaluări
  • Raport 5 CDE
    Raport 5 CDE
    Document7 pagini
    Raport 5 CDE
    crismaruion
    Încă nu există evaluări
  • Lucrare de Laborator Nr.2 CDE
    Lucrare de Laborator Nr.2 CDE
    Document4 pagini
    Lucrare de Laborator Nr.2 CDE
    Dan
    Încă nu există evaluări
  • ASDN2
    ASDN2
    Document6 pagini
    ASDN2
    Viktor Dobrovolschi
    Încă nu există evaluări
  • Lab 7 Somipp
    Lab 7 Somipp
    Document5 pagini
    Lab 7 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • PPE Lab4-5
    PPE Lab4-5
    Document8 pagini
    PPE Lab4-5
    danielploaia
    Încă nu există evaluări
  • LL3 (Amoo)
    LL3 (Amoo)
    Document6 pagini
    LL3 (Amoo)
    Eric Semeniuc
    Încă nu există evaluări
  • Lab 4 Apa
    Lab 4 Apa
    Document21 pagini
    Lab 4 Apa
    crismaruion
    Încă nu există evaluări
  • MMC Laborator 1 UTM
    MMC Laborator 1 UTM
    Document12 pagini
    MMC Laborator 1 UTM
    StasLuchianciuc
    Încă nu există evaluări
  • LFA Lab 1
    LFA Lab 1
    Document8 pagini
    LFA Lab 1
    Valeria Cebanu
    Încă nu există evaluări
  • SarcinaLaborator 2
    SarcinaLaborator 2
    Document2 pagini
    SarcinaLaborator 2
    Amarfii Sergiu
    Încă nu există evaluări
  • AMOO - Proiect de An
    AMOO - Proiect de An
    Document4 pagini
    AMOO - Proiect de An
    Dan
    Încă nu există evaluări
  • AMOO Lab2.Use Case
    AMOO Lab2.Use Case
    Document5 pagini
    AMOO Lab2.Use Case
    Dorin Gribincea
    Încă nu există evaluări
  • Somipp Linux 2 UTM
    Somipp Linux 2 UTM
    Document7 pagini
    Somipp Linux 2 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • Examen SAV
    Examen SAV
    Document24 pagini
    Examen SAV
    Vitalie Nastasiu
    Încă nu există evaluări
  • MMC Lab3 Rap
    MMC Lab3 Rap
    Document4 pagini
    MMC Lab3 Rap
    I LOVE ME
    Încă nu există evaluări
  • Lab6 AMOO - Diagrame de Stari Si Activitati
    Lab6 AMOO - Diagrame de Stari Si Activitati
    Document10 pagini
    Lab6 AMOO - Diagrame de Stari Si Activitati
    Dan
    Încă nu există evaluări
  • Examen, TS, Bilet 75
    Examen, TS, Bilet 75
    Document1 pagină
    Examen, TS, Bilet 75
    Никита Баранов
    Încă nu există evaluări
  • Lab 3 LFA Doc
    Lab 3 LFA Doc
    Document11 pagini
    Lab 3 LFA Doc
    Jenya Matevosean
    Încă nu există evaluări
  • BDC Lucrare de Curs
    BDC Lucrare de Curs
    Document37 pagini
    BDC Lucrare de Curs
    Vladislav Crivenco
    Încă nu există evaluări
  • Lab NR 4 MMC2 Duca Dumitru TI 194
    Lab NR 4 MMC2 Duca Dumitru TI 194
    Document11 pagini
    Lab NR 4 MMC2 Duca Dumitru TI 194
    Santa Claus
    Încă nu există evaluări
  • Lab1 CDE
    Lab1 CDE
    Document3 pagini
    Lab1 CDE
    Tudor Domenti
    Încă nu există evaluări
  • Lab2 Somipp
    Lab2 Somipp
    Document6 pagini
    Lab2 Somipp
    Iov Albu
    Încă nu există evaluări
  • TW Lab5
    TW Lab5
    Document3 pagini
    TW Lab5
    Dan
    Încă nu există evaluări
  • TAP Lab6 Popov Biatrice - CR 191
    TAP Lab6 Popov Biatrice - CR 191
    Document6 pagini
    TAP Lab6 Popov Biatrice - CR 191
    Alina Axenti
    Încă nu există evaluări
  • IoT LL7
    IoT LL7
    Document4 pagini
    IoT LL7
    Anya Mr
    Încă nu există evaluări
  • Laborator-2mmc Balan Ion
    Laborator-2mmc Balan Ion
    Document12 pagini
    Laborator-2mmc Balan Ion
    Ion Bn
    Încă nu există evaluări
  • Lab 5 BTD Axenti
    Lab 5 BTD Axenti
    Document6 pagini
    Lab 5 BTD Axenti
    Alina Axenti
    100% (1)
  • AI-191 Medinschi Ion SO4
    AI-191 Medinschi Ion SO4
    Document5 pagini
    AI-191 Medinschi Ion SO4
    Carolin
    Încă nu există evaluări
  • LFA Lab - 1
    LFA Lab - 1
    Document10 pagini
    LFA Lab - 1
    RoscaFlorin
    100% (1)
  • Lab1 GC
    Lab1 GC
    Document8 pagini
    Lab1 GC
    Andrei Barbalat
    Încă nu există evaluări
  • Iepuras Daniel Lab 1 TS
    Iepuras Daniel Lab 1 TS
    Document4 pagini
    Iepuras Daniel Lab 1 TS
    DanuIepuras
    Încă nu există evaluări
  • IoT2 Raport
    IoT2 Raport
    Document10 pagini
    IoT2 Raport
    crismaruion
    Încă nu există evaluări
  • IoT Laborator NR 2
    IoT Laborator NR 2
    Document10 pagini
    IoT Laborator NR 2
    crismaruion
    Încă nu există evaluări
  • LL1 IoT ECiobanu
    LL1 IoT ECiobanu
    Document9 pagini
    LL1 IoT ECiobanu
    Ecaterina Ciobanu
    Încă nu există evaluări
  • Si LL2
    Si LL2
    Document6 pagini
    Si LL2
    Anya Mr
    Încă nu există evaluări
  • IoT LL6
    IoT LL6
    Document8 pagini
    IoT LL6
    Anya Mr
    Încă nu există evaluări
  • Si LL1
    Si LL1
    Document12 pagini
    Si LL1
    Anya Mr
    Încă nu există evaluări
  • IoT LL7
    IoT LL7
    Document4 pagini
    IoT LL7
    Anya Mr
    Încă nu există evaluări
  • LL3 PS ECiobanu TI192
    LL3 PS ECiobanu TI192
    Document14 pagini
    LL3 PS ECiobanu TI192
    Ecaterina Ciobanu
    Încă nu există evaluări
  • FileMaker Pro - Mereuta - Ana - TI - 192
    FileMaker Pro - Mereuta - Ana - TI - 192
    Document4 pagini
    FileMaker Pro - Mereuta - Ana - TI - 192
    Anya Mr
    Încă nu există evaluări
  • Proiect Baze de Date
    Proiect Baze de Date
    Document26 pagini
    Proiect Baze de Date
    Anya Mr
    Încă nu există evaluări
  • LL6 PS
    LL6 PS
    Document5 pagini
    LL6 PS
    Anya Mr
    Încă nu există evaluări
  • LL1 Prelucrarea Semnalelor
    LL1 Prelucrarea Semnalelor
    Document20 pagini
    LL1 Prelucrarea Semnalelor
    Anya Mr
    Încă nu există evaluări
  • LL5 Baze de Date
    LL5 Baze de Date
    Document3 pagini
    LL5 Baze de Date
    Anya Mr
    Încă nu există evaluări
  • Testarea1 IOC Mereuta Ana TI-192
    Testarea1 IOC Mereuta Ana TI-192
    Document3 pagini
    Testarea1 IOC Mereuta Ana TI-192
    Anya Mr
    Încă nu există evaluări
  • LL5 PS
    LL5 PS
    Document11 pagini
    LL5 PS
    Anya Mr
    Încă nu există evaluări
  • LL2 Baze de Date
    LL2 Baze de Date
    Document15 pagini
    LL2 Baze de Date
    Anya Mr
    Încă nu există evaluări
  • LL
    LL
    Document7 pagini
    LL
    Anya Mr
    Încă nu există evaluări
  • LL4 PS
    LL4 PS
    Document12 pagini
    LL4 PS
    Anya Mr
    100% (1)
  • LL8 Mereuta Ana TI-192
    LL8 Mereuta Ana TI-192
    Document6 pagini
    LL8 Mereuta Ana TI-192
    Anya Mr
    Încă nu există evaluări
  • LL3
    LL3
    Document6 pagini
    LL3
    Anya Mr
    Încă nu există evaluări
  • NiveledeTestare Referat
    NiveledeTestare Referat
    Document10 pagini
    NiveledeTestare Referat
    Anya Mr
    Încă nu există evaluări
  • LL6 Baze de Date
    LL6 Baze de Date
    Document7 pagini
    LL6 Baze de Date
    Anya Mr
    Încă nu există evaluări
  • LL3 BD
    LL3 BD
    Document4 pagini
    LL3 BD
    Anya Mr
    Încă nu există evaluări
  • LL4 BD
    LL4 BD
    Document6 pagini
    LL4 BD
    Anya Mr
    Încă nu există evaluări
  • LL3 TS Final A TI-192
    LL3 TS Final A TI-192
    Document8 pagini
    LL3 TS Final A TI-192
    Anya Mr
    Încă nu există evaluări
  • LL1 Testarea Software
    LL1 Testarea Software
    Document4 pagini
    LL1 Testarea Software
    Anya Mr
    Încă nu există evaluări
  • LL1 Prelucrarea Semnalelor
    LL1 Prelucrarea Semnalelor
    Document20 pagini
    LL1 Prelucrarea Semnalelor
    Anya Mr
    Încă nu există evaluări
  • LL7 Baze de Date
    LL7 Baze de Date
    Document5 pagini
    LL7 Baze de Date
    Anya Mr
    Încă nu există evaluări
  • LL6 Baze de Date
    LL6 Baze de Date
    Document7 pagini
    LL6 Baze de Date
    Anya Mr
    Încă nu există evaluări
  • LL4 Baze de Date
    LL4 Baze de Date
    Document6 pagini
    LL4 Baze de Date
    Anya Mr
    Încă nu există evaluări