Differences

This shows you the differences between two versions of the page.

Link to this comparison view

info2:laboratoare:04 [2019/03/26 14:57]
george.stoica0310
info2:laboratoare:04 [2021/03/23 09:19] (current)
alexandru.vochescu [II. Ecran interactiv desenabil]
Line 1: Line 1:
-===== Laboratorul 04 - Citire de pe pini =====+===== Laboratorul 04 - Aplicații ​=====
  
 ===== Scop ===== ===== Scop =====
-  * familiarizarea cu citirea datelor de la senzori +  * aprofundarea cunoștințelor parcurse în primele 3 cursuri și laboratoare
-  * familiarizarea cu butoane +
-  * măsurarea voltajului de intrare pe pini+
  
-===== Cuvinte cheie ===== 
-  * pinMode, digitalRead,​ analogRead, INPUT 
-  * buton, senzor, pullup, pulldown 
  
-===== Utilizarea serialei ​===== +===== I. Casă inteligentă ​=====
-Pentru a afișa datele citite de pe pini de la senzori ne dorim să utilizăm Seriala de pe Arduino. Seriala este un utilitar similar cu **cout** din C+++
  
-====== Mod utilizare Seriala ====== +În cadrul acestui proiect vom simula funcționalitatea unei case inteligente. Facilitățile principale pe care ni le dorim sunt
-**Funcții:** +  * 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) 
-  * Serial.print(cuvânt) ​Afișează cuvânt fără spațiul +  * 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). 
-  * Serial.println(cuvânt) - Printează cuvânt iar următorul print se va face pe linia următoare  +  * Iluminare controlată sonor: pentru fiecare bătaie din palme (sau zgomot puternicse va aprinde o linie de led-uri. 
-<code arduino.c> +  * 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ă. 
-void setup() +  * Î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ă. 
-  ​Serial.begin(9600); // Setăm frecvența pentru Serial Monitor +  * 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 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.
-  Serial.println("Am început programul"​)+
-}+
  
-void loop() +====== IIEcran interactiv desenabil ======
-+
-  Serial.print("​Salut"​);​ // Printează Salut la infinit111 +
-+
-</​code>​+
  
-La rularea codului ​de mai susîn Serial Monitor ​se va afișa Salut la infinit fără spații între cuvinte: "​SalutSalutSalutSalutSalutSalut"​+Î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.
  
-<code arduino.c>​ +Cerințe adiționale:​ 
-int buton = 2; +  ​* Coloanele și liniile sunt considerate circulare: odată ce am ajuns la capăt de coloană/linie, led-ul va reveni la începutul coloanei/liniei 
-void setup() +  * **Nu** putem avea două led-uri aprinse pe aceeași pozițiecând mut un led aprins peste un led deja aprinsacesta “va sări” la prima poziție liberă în direcția de mișcare
-{ +
-  ​Serial.begin(9600); ​// Setăm frecvența pentru Serial Monitor +
-  Serial.println("​Am început programul"​); +
-  pinMode(butonINPUT); +
-+
-int buttonState = 0; +
-void loop() +
-+
-  buttonState = digitalRead(buton);​ +
-  Serial.print("​Starea butonului este: "); // Mesaj ce precedează valoarea +
-  Serial.println(buttonState);​ +
-}+
  
- +Cerințe avansate
-</​code>​ +  * 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: 
-Outputul codului de mai sus va vi+     - Fie apasă logo-ul, iar led-ul se va stinge. 
- +     - 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.
-Am început programul +
- +
-Starea butonului este 0 +
- +
-Starea butonului este 0 +
- +
-Starea butonului este 0 +
- +
-//Am apăsat pe buton// +
- +
-Starea butonului este 1 +
- +
-Starea butonului este 1 +
- +
-Starea butonului este 1 +
- +
-===== Folosirea unui buton ===== +
-Veți avea nevoie ​de: +
-  * Un Arduino Uno +
-  * Un button +
-  * O rezistență de 1k ohmi +
- +
-Modul de folosire a butonului:​ +
-{{:​info2:​laboratoare:​arduino_button.png?​400|200}} +
- +
-În situația de mai sus, pinul 4 trebuie setat pe INPUT +
-iar citirea datelor de la buton se face folosind ** int date = digitalRead(4** +
- +
-===== analogRead vs digitalRead ===== +
- +
-  * digitalRead funcționează pe toți pinii, rezultatele sale sunt fie **HIGH** fie **LOW**. +
-  * analogRead returnează valori între 0 1023, iar analogRead poate fi folosit doar pe pinii **analogici**:​ A0 A5Exemplu: pinMode(A0INPUT) +
- +
-===== Senzor de lumina ===== +
-Mod de utilizare:​ +
-{{:​info2:​laboratoare:​photoresistor_arduino.png?​400|200}}+
info2/laboratoare/04.1553605041.txt.gz · Last modified: 2019/03/26 14:57 by george.stoica0310
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