This shows you the differences between two versions of the page.
pm:prj2024:azamfir:ioana.patrascu [2024/05/25 23:13] ioana.patrascu [Software Design] |
pm:prj2024:azamfir:ioana.patrascu [2024/05/27 16:36] (current) ioana.patrascu [Download] |
||
---|---|---|---|
Line 61: | 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 73: | Line 73: | ||
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 111: | 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 139: | 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 | |
- | X_out = event.acceleration.x; // X-axis value | + | Y_out = event.acceleration.y; // valoarea inregistrata de accelerometru pe axa Y |
- | 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 212: | 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 229: | 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 246: | Line 253: | ||
**25-26 mai** | **25-26 mai** | ||
- | * finalizare documentație | + | * finalizare documentație: rezultate, concluzii și alte informații suplimentare |
**Probleme întâmpinate:** | **Probleme întâmpinate:** | ||
Line 257: | Line 264: | ||
__**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:**__ |