Differences

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

Link to this comparison view

pm:prj2025:iivasciuc:andrei_razvan.stan [2025/05/20 22:29]
andrei_razvan.stan
pm:prj2025:iivasciuc:andrei_razvan.stan [2025/05/21 20:58] (current)
andrei_razvan.stan
Line 164: Line 164:
     * **timeButtonPressed**     * **timeButtonPressed**
     * **historyButtonPressed**     * **historyButtonPressed**
 +===Cum se realizeaza evaluarea unei expresii===
 +Calculul expresiei introduse de utilizator prin tastatura se face manual, fara a folosi o biblioteca de evaluare matematica. In schimb, am ales sa folosesc un **algoritm clasic bazat pe doua stive** – una pentru numere si una pentru operatori – pentru a respecta **ordinea efectuarii operatiilor**.
  
-===== Rezultate Obţinute =====+Practic, functia **evaluateExpression** primeste un sir de caractere pe care le parcurge rand pe rand, in urmatorul mod: 
 +  - Se definesc doua stive: 
 +     * ''​values''​ – stiva pentru numere (''​float''​) 
 +     * ''​ops''​ – stiva pentru operatori (''​char''​) 
 +  - Cat timp intalnim un numar sau un '​.'​ acesta este adaugat in buffer-ul num 
 +  - Cand se intalneste un operator, buffer-ul num este transformat in float si este adaugat pe stiva de valori 
 +  - Se compara valoarea de "​precedenta"​ a operatului curent cu cea a operatorului din varful stivei de operatori 
 +     * daca operatorul din stiva are o **valoare mai mare sau egala** se aplica ultimelor doua valori din stiva de valori 
 +     * se repeta acest proces pana cand stiva de operatori este goala sau operatorul curent are o valoare mai mare 
 +  - Rezultatul final este ultimul element din stiva de valori.
  
-<note tip> +=== Intreruperi ===
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+  * ISR-urile sunt folosite pentru: 
 +    * Butonul ''​Time''​ (pin 2) 
 +    * Butonul ''​History''​ (pin 3) 
 +  * Seteaza flag-uri volatile care sunt procesate in ''​loop()''​
  
-===== Download =====+=== Alte functii importante ​===
  
-<note warning>​ +  * **saveToHistory(result)**: 
-O arhivă ​(sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectuluisurse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+    * Salveaza rezultatul in EEPROM 
 +    * Actualizeaza indexul circular în EEPROM
  
-Fişierele se încarcă pe wiki folosind facilitatea ​**Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul)**Exemplu:** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +  ​* **loadFromHistory(index)**: 
-</​note>​+    ​Recupereaza un rezultat salvat din EEPROM
  
-===== Bibliografie/​Resurse =====+  * **printTime()**:​ 
 +    * Afisează ora curenta citită din RTC
  
-<​note>​ +  * **showHistory()**:​ 
-Listă cu documentedatasheet-uriresurse Internet folositeeventual grupate ​pe **Resurse Software** şi **Resurse Hardware**.+    * Afiseaza rezultatul curent din istoricindexat de ''​currentHistoryView''​ 
 + 
 +  * **clearCalculator()**:​ 
 +    * Goleste expresiacurata ecranul si revine în modul calculator 
 + 
 +=== Observatii === 
 + 
 +  * Pentru setarea orei initialese poate decomenta linia cu ''​rtc.set(...)''​ din ''​setup()'',​ se incarca codul pe placuta, se comenteaza inapoi linia si se incarca din nou codul (pentru ca RTC-ul are o baterie si va '​incrementa'​ singur timpul). Timpul este calculat folosind macro-ul ​**__TIME__**, care ia ora de pe PC.  
 +  ​Sistemul gestionează doar expresii fără paranteze deoarece nu mai aveam destui pini digitali pe Arduino sa mai adaug si butoane pentru paranteze. 
 +  ​Istoricul este ciclic – la mai mult de 10 calcule, cele vechi sunt suprascrise 
 + 
 +==== Download cod ==== 
 +{{:​pm:​prj2025:​iivasciuc:​proiect_pm_stan_andrei_razvan.zip|}} 
 +===== Rezultate Obţinute ===== 
 + 
 + 
 +<note tip> 
 +Care au fost rezultatele obţinute în urma realizării proiectului vostru.
 </​note>​ </​note>​
 +
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2025/iivasciuc/andrei_razvan.stan.1747769345.txt.gz · Last modified: 2025/05/20 22:29 by andrei_razvan.stan
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