Laboratorul 04 - Aplicații

Scop

  • aprofundarea cunoștințelor parcurse în primele 3 cursuri și laboratoare

I. Casă inteligentă

În cadrul acestui proiect vom simula funcționalitatea unei case inteligente. Facilitățile principale pe care ni le dorim sunt:

  • Iluminare inteligentă: în funcție de nivelul de luminozitate se vor aprinde treptat linii de led-uri (Lumină puternică → toate led-urile stinse, Întuneric → toate led-urile aprinse)
  • Muzică ambientală: setați 3 intervale de nivel de luminozitate în cadrul cărora se va reda câte o melodie o singură dată. Melodiile trebuie să fie create de voi din note (puteți alege orice melodie pe care să o generați).
  • Iluminare controlată sonor: pentru fiecare bătaie din palme (sau zgomot puternic) se va aprinde o linie de led-uri.
  • Afișarea parametrilor ambientali: la apăsări repetate pe logo, se vor afișa pe ecranul din led-uri valorile parametrilor ambientali (temperatură, luminozitate, nivelul de zgomot), dar și celelalte valori de la senzori: accelerație și busolă.
  • În caz de cutremur (la scuturarea plăcii), se va reda o sirenă de poliție.
  • Grafic de variație a temperaturii: afișați în consolă folosind print valoarea temperaturii o dată pe secundă.
  • Afișaj aleator: La începutul programului, creați manual un vector din minim 10 Icon-uri preferate (precum HEART). În bucla principală de rulare a programului, verificați regulat cât timp a trecut de la pornirea plăcii (running_time din Input). La fiecare multiplu de 5 secunde de cand a pornit execuția codului pe placa, afișați un Icon aleator din vectorul creat.

II. Ecran interactiv desenabil

În cadrul acestui proiect vom crea o tablă pe care putem desena folosind puncte. În momentul în care apăsăm logo-ul (senzorul de atingere), se va genera un led aprins în colțul de stânga jos. Folosind butonul A, putem “mișca” led-ul aprins în sus pe coloana pe care acesta se află în acest moment. Folosind butonul B, putem “mișca” led-ul la dreapta pe linia pe care acesta se află acum. Odată ce am ajuns pe poziția pe care vrem să lăsăm led-ul aprins, apăsăm încă o dată logo-ul. Pentru a genera un nou “led aprins”, se va apăsa încă o dată logo-ul.

Cerințe adiționale:

  • Coloanele și liniile sunt considerate circulare: odată ce am ajuns la capăt de coloană/linie, led-ul va reveni la începutul coloanei/liniei
  • Nu putem avea două led-uri aprinse pe aceeași poziție; când mut un led aprins peste un led deja aprins, acesta “va sări” la prima poziție liberă în direcția de mișcare

Cerințe avansate:

  • Dacă în momentul generării punctului, se află deja un punct în colțul din stânga jos al ecranului, acesta se va genera pe prima poziție liberă de pe prima linie. Dacă linia este ocupată complet, se va trece la linia următoare.
  • Stingerea unui led: Dacă pe poziția pe care am “mutat” un led se află deja un led aprins, acesta se va aprinde și stinge repetat (o dată la 100 ms). Utilizatorul va avea la dispoziție două acțiuni:
    1. Fie apasă logo-ul, iar led-ul se va stinge.
    2. Fie apasă unul din cele doua butoane (A sau B), iar led-ul se va mișca pe poziția noua. Astfel led-ul “suprapus anterior” va rămâne aprins.
info2/laboratoare/04.txt · Last modified: 2021/03/23 09:19 by alexandru.vochescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0