Descărcați ca docx, pdf sau txt
Descărcați ca docx, pdf sau txt
Sunteți pe pagina 1din 5

MINISTERUL EDUCAȚIEI ȘI CERCETĂRII

AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Microelectronică și Inginerie Biomedicală

Raport
pentru lucrarea de laborator Nr.1.1

la cursul de “ Sisteme electronice incorporate”

A efectuat st. gr.:

A verificat:

Chișinău – 2024
Tema: Interacțiunea cu utilizatorul - Serial STDIO
Definire problemă:

1. Sa se configureze aplicatia pentru lucrul cu libraia STDIO prin interfata seriala pentru schimbul de text prin terminal.
2. Sa se proiecteze o aplicate in baza de MCU care ar receptiona comenzi de la terminal prin interfata seriala pentru a seta starea
unui LED.
- led on pentru aprindere si
- led off pentru stingere.,
- sistemul trebuie sa raspunda cu mesaje text despre confirmarea comenzii
- pentru schimbul de text prin terminal a se utiliza libraia STDIO

Testarea
Concluzie:

Laboratorul a evidențiat abilitățile de configurare a comunicatiei seriale, redirecționare a fluxurilor standard


de intrare și ieșire, citire a comenzilor de la utilizator, controlul unui LED și afișarea mesajelor de confirmare.

Rezultatele obținute confirmă înțelegerea conceptelor de bază ale interacțiunii cu utilizatorul prin interfața
serială și abilitatea de a implementa o aplicație funcțională cu ajutorul bibliotecii STDIO.

Anexă
systtem_io.h

#ifndef _SYSTTEM_IO_H
#define _SYSTTEM_IO_H

#include <Arduino.h>
#include <stdio.h>
#define BAUD_RATE 9600

void system_io_init();
#endif

systtem_io.cpp

#include "systtem_io.h"

static FILE stream_io = {0};

int serial_putchar(char c, FILE *stream)


{
Serial.write(c);
return 0;
}

int serial_getchar(FILE *steam)


{
while (!Serial.available());
return Serial.read();
}

void system_io_init()
{
Serial.begin(BAUD_RATE);
fdev_setup_stream (&stream_io, serial_putchar, serial_getchar, _FDEV_SETUP_RW);
stdout = &stream_io;
stdin = &stream_io;
}
main.c

#include <Arduino.h>
#include <systtem_io.h>

enum Pin
{
LED_PIN = 13,
BUTTON_PIN = 5
};

void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);

system_io_init();
printf("Sistemul este pornit\r\n");
printf("Pentru a controla ledul introduceti comanda \"led_on\" sau \"led_off\" \r\n");

void loop()
{
char string[100] = {0};
printf("Introduceti o comanda:");
scanf("%100s", string);
printf("Ati intodus comanda: %s\r\n", string);

if (strcmp(string, "led_on") == 0 )
{
digitalWrite(LED_PIN, HIGH);
printf("\fLED-ul a fost aprins\r\n");
}
else if (strcmp(string, "led_off") == 0 )
{
digitalWrite(LED_PIN, LOW);
printf("\fLED-ul a fost stins\r\n");
}
else
{
printf("\fComanda necunoscuta\r\n");
}

delay(100);

}
diagram.json

{
"version": 1,
"author": "Владик К",
"editor": "wokwi",
"parts": [
{
"type": "wokwi-arduino-uno",
"id": "uno",
"top": -12.6,
"left": -17.8,
"rotate": 90,
"attrs": {}
},
{ "type": "wokwi-led", "id": "led1", "top": 6, "left": 272.6, "attrs": { "color": "red"
} }
],
"connections": [ [ "led1:C", "uno:GND.1", "black", [ "v0" ] ], [ "led1:A", "uno:13",
"red", [ "v0" ] ] ],
"dependencies": {}
}

wokwi.toml
[wokwi]
version = 1
firmware = '.pio\build\uno\firmware.hex'
elf = '.pio\build\uno\firmware.elf'

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