Differences

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

Link to this comparison view

pm:prj2024:azamfir:ioana.patrascu [2024/05/25 20:48]
ioana.patrascu [Software Design]
pm:prj2024:azamfir:ioana.patrascu [2024/05/27 16:36] (current)
ioana.patrascu [Download]
Line 55: Line 55:
  
 ===== Software Design ===== ===== Software Design =====
- 
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 __**Mediu de dezvoltare:​**__ Visual Studio Code + PlatformIO __**Mediu de dezvoltare:​**__ Visual Studio Code + PlatformIO
Line 69: Line 61:
   * **Arduino** pentru Arduino Nano   * **Arduino** pentru Arduino Nano
   * **LiquidCrystal** pentru a putea cotrola display-ul, folosind o plăcuță Arduino   * **LiquidCrystal** pentru a putea cotrola display-ul, folosind o plăcuță Arduino
-  * **Adafruit_Sensor** și **Adafruit_ADXL345_U**+  * **Adafruit_Sensor** și **Adafruit_ADXL345_U** ​pentru accelerometru
  
 <code cpp> <code cpp>
Line 78: Line 70:
 </​code>​ </​code>​
  
-__**Configurări componente ​și inițializări de variabile:**__+__**Configurări componente:​**__
  
 Pentru a folosi display-ul și accelerometrul,​ trebuie să le configurăm mai întâi (folosind I2C pentru amândouă). Acest lucru se face mai simplu folosind LiquidCrystal pentru display (**lcd**) și Adafruit_ADXL345_Unified() pentru accelerometru (**accelerometer**). Setăm și backlight-ul display-ului. Pentru a folosi display-ul și accelerometrul,​ trebuie să le configurăm mai întâi (folosind I2C pentru amândouă). Acest lucru se face mai simplu folosind LiquidCrystal pentru display (**lcd**) și Adafruit_ADXL345_Unified() pentru accelerometru (**accelerometer**). Setăm și backlight-ul display-ului.
 +
  
 <code cpp> <code cpp>
Line 91: Line 84:
 // configurare accelerometru // configurare accelerometru
 Adafruit_ADXL345_Unified accelerometer = Adafruit_ADXL345_Unified();​ Adafruit_ADXL345_Unified accelerometer = Adafruit_ADXL345_Unified();​
-int ADXL345 = 0x53; // The ADXL345 sensor ​I2C address+int ADXL345 = 0x53; // adresa ​I2C a senzorului ADXL345
 </​code>​ </​code>​
  
 Inițializăm alte variabile folosite: Inițializăm alte variabile folosite:
   * coordonatele pe care le înregistrează accelerometrul:​ X_out, Y_out, Z_out   * coordonatele pe care le înregistrează accelerometrul:​ X_out, Y_out, Z_out
-  * +  * pinii folosiți pentru butoane, corespunzători pinilor de pe Arduino la care sunt legate
  
 <code cpp> <code cpp>
-float X_out, Y_out, Z_out; ​// Outputs +float X_out, Y_out, Z_out; 
-int selectPin = 4; +int selectPin = 4; // pinul butonului de selectare a zarului 
-int startShakePin = 5;+int startShakePin = 5; // pinul butonului start_shaking
 </​code>​ </​code>​
  
Line 111: Line 104:
   Serial.println("​Hello!"​);​   Serial.println("​Hello!"​);​
   delay(200);   delay(200);
-  if (!accelerometer.begin(0x53)) {+  ​ 
 +  // mesaj de eroare dacă nu avem conexiune la acelerometru 
 +  ​if (!accelerometer.begin(ADXL345)) {
     Serial.println("​Ooops,​ no ADXL345 detected ... Check your wiring!"​);​     Serial.println("​Ooops,​ no ADXL345 detected ... Check your wiring!"​);​
     while (1);     while (1);
Line 117: Line 112:
   accelerometer.setRange(ADXL345_RANGE_2_G);​   accelerometer.setRange(ADXL345_RANGE_2_G);​
   ​   ​
-  // set up the LCD's number of columns and rows:+  // setam numarul de linii si coloane ale LCD-ului
   pinMode(LCD_Backlight,​ OUTPUT);   pinMode(LCD_Backlight,​ OUTPUT);
   lcd.begin(16,​ 2);   lcd.begin(16,​ 2);
 +  ​
 +  // setam contrast pentru textul de pe display
   analogWrite(LCD_Backlight,​ 128);   analogWrite(LCD_Backlight,​ 128);
   ​   ​
-  // Print a message to the LCD+  // afisam un mesaj de inceput
   lcd.print("​Let'​s play D&​D!"​);​   lcd.print("​Let'​s play D&​D!"​);​
 +  ​
 +  // configuram pinii butoanelor
   pinMode(selectPin,​ INPUT);   pinMode(selectPin,​ INPUT);
   pinMode(startShakePin,​ INPUT);   pinMode(startShakePin,​ INPUT);
Line 145: Line 144:
 void loop() { void loop() {
   randomSeed(millis());​   randomSeed(millis());​
 +  ​
 +  // informatiile date de accelerometru sunt salvate in event
   sensors_event_t event;   sensors_event_t event;
   accelerometer.getEvent(&​event);​   accelerometer.getEvent(&​event);​
  
 +  // setam cursorul de pe display la linia 0, coloana 1
   lcd.setCursor(0,​ 1);   lcd.setCursor(0,​ 1);
 +   
 +  // determinam daca accelerometrul mai este agitat
   prev_x = X_out;   prev_x = X_out;
   prev_y = Y_out;   prev_y = Y_out;
   prev_z = Z_out;   prev_z = Z_out;
- +  ​X_out = event.acceleration.x;​ // valoarea inregistrata de accelerometru pe axa 
-  ​X_out = event.acceleration.x;​ // X-axis value +  Y_out = event.acceleration.y;​ // valoarea inregistrata de accelerometru pe axa 
-  Y_out = event.acceleration.y;​ // Y-axis value +  Z_out = event.acceleration.z;​ // valoarea inregistrata de accelerometru pe axa Z
-  Z_out = event.acceleration.z;​ // Z-axis value +
   shaking = (abs(X_out - prev_x) >= 1 || abs(Y_out - prev_y) >= 1 || abs(Z_out - prev_z) >= 1);   shaking = (abs(X_out - prev_x) >= 1 || abs(Y_out - prev_y) >= 1 || abs(Z_out - prev_z) >= 1);
  
 +  // functionalitate propriu-zisa
   if(!diceSelected) {   if(!diceSelected) {
     lcd.print("​Select dice: D");     lcd.print("​Select dice: D");
Line 218: Line 220:
 ===== Concluzii ===== ===== Concluzii =====
  
 +Până acum am mai lucrat la un astfel de proiect doar în cadrul laboratoarelor de la DEEA, ED sau PM, sub supraveghere și folosind componente oferite de facultate. A fost o experiență interesantă,​ care mi-a arătat câte erori și probleme pot să apară într-un proiect de acest tip și cât de ușor ar putea fi rezolvate dacă ai avea mai multă experiență în domeniu.
 ===== Download ===== ===== Download =====
  
-<note warning>​ +Toate fișierele ​vizibile deja în această documentație ​se regăsesc în arhiva ​de mai jos.
-O arhivă (sau mai multe dacă este cazul) cu fişierele ​obţinute ​în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +
- +
-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**. +
-</​note>​+
  
 +{{:​pm:​prj2024:​azamfir:​d_d_dice.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
  
Line 235: Line 235:
 **10-12 mai** **10-12 mai**
   * analiza componentelor necesare pentru realizarea proiectului   * analiza componentelor necesare pentru realizarea proiectului
 +  * schema electrică
   * achiziționarea componentelor   * achiziționarea componentelor
  
Line 250: Line 251:
   * documentație software   * documentație software
   * demo   * demo
 +
 +**25-26 mai**
 +  * finalizare documentație:​ rezultate, concluzii și alte informații suplimentare
  
 **Probleme întâmpinate:​** **Probleme întâmpinate:​**
Line 258: Line 262:
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
- 
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​note>​ 
  
 __**Resurse Software:​**__ __**Resurse Software:​**__
-// +  * [[https://www.youtube.com/​watch?​v=g_6OJDyUw1w|Arduino Display Integration Video Tutorial]] 
-TBA//+  * [[https://www.youtube.com/watch?​v=vOZEwe_o20Y|Arduino Accelerometer using the ADXL345]]
  
 __**Resurse Hardware:​**__ __**Resurse Hardware:​**__
pm/prj2024/azamfir/ioana.patrascu.1716659314.txt.gz · Last modified: 2024/05/25 20:48 by ioana.patrascu
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