Differences

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

Link to this comparison view

pm:prj2025:atoader:sanda_elena.neculau [2025/05/27 20:14]
sanda_elena.neculau [Bibliografie/Resurse]
pm:prj2025:atoader:sanda_elena.neculau [2025/05/27 21:15] (current)
sanda_elena.neculau [Bibliografie/Resurse]
Line 8: Line 8:
  
 ===== Descriere generală ===== ===== Descriere generală =====
-{{ :​pm:​prj2025:​atoader:​schema_finala_lampa.png?​700 |}} 
  
 +{{:​pm:​prj2025:​atoader:​schema_finala_sanda.png?​700|}}
 +===== Hardware Design =====
 +** Placuta este MEGA 2560, eroare de scriere **
  
- 
-===== Hardware Design ===== 
 {{:​pm:​prj2025:​atoader:​schema_sanda_har.png?​700|}} {{:​pm:​prj2025:​atoader:​schema_sanda_har.png?​700|}}
  
Line 18: Line 18:
 == Bill of materials == == Bill of materials ==
 ^ Nume componenta ​    ^ Cantitate ​      ^ Link         ^ ^ Nume componenta ​    ^ Cantitate ​      ^ Link         ^
-|Arduino ​mega2650 ​  |    1     | [[https://​www.emag.ro/​kit-complet-incepatori-arduino-issnw-peste-180-componente-senzori-si-motor-servo-91f71c/​pd/​DZGWRJYBM/?​ref=other_customers_viewed_go_3_1&​provider=rec&​recid=rec_52_5d77c09376d0207bf583dc66a6a9e521ea1ede314ad2b1d392844500d66c98af_1745512962&​scenario_ID=52|KIT ARDUINO]] ​ |+|Arduino ​mega2560 ​  |    1     | [[https://​www.emag.ro/​kit-complet-incepatori-arduino-issnw-peste-180-componente-senzori-si-motor-servo-91f71c/​pd/​DZGWRJYBM/?​ref=other_customers_viewed_go_3_1&​provider=rec&​recid=rec_52_5d77c09376d0207bf583dc66a6a9e521ea1ede314ad2b1d392844500d66c98af_1745512962&​scenario_ID=52|KIT ARDUINO]] ​ |
 |Senzor touch TTP223B ​  | 1 | [[https://​sigmanortec.ro/​Senzor-capacitiv-TTP223B-p125686287?​SubmitCurrency=1&​id_currency=2&​gad_source=1&​gbraid=0AAAAAC3W72Pc30vXqZc1BLC6SMvHq5tlc&​gclid=CjwKCAjwwqfABhBcEiwAZJjC3jjeQ8szrTRNkGQFz0lntxHr1nIPBVQOatHbwJnLHBGXUQwTAIBINRoC4_oQAvD_BwE |Senzor touch TTP223B ​  | 1 | [[https://​sigmanortec.ro/​Senzor-capacitiv-TTP223B-p125686287?​SubmitCurrency=1&​id_currency=2&​gad_source=1&​gbraid=0AAAAAC3W72Pc30vXqZc1BLC6SMvHq5tlc&​gclid=CjwKCAjwwqfABhBcEiwAZJjC3jjeQ8szrTRNkGQFz0lntxHr1nIPBVQOatHbwJnLHBGXUQwTAIBINRoC4_oQAvD_BwE
 |senzor]]| |senzor]]|
Line 46: Line 46:
  
 == Biblioteci == == Biblioteci ==
-* LiquidCrystal_I2C.h+  ​* LiquidCrystal_I2C.h 
 + 
 +  * DFRobotDFPlayerMini.h 
 +  * stream.h
  
-* DFRobotDFPlayerMini.h 
  
 == Componente conectate ==  == Componente conectate == 
Line 65: Line 67:
  
 == Structura software == == Structura software ==
 +
 +  * ** Serial 0 manual**
 +    * Initializare serial0
 + <​code>​ void manualSerialInit(long baud) {
 +  // Setare registri pentru UART0 (Serial)
 +  // calculare viteza de comunicare, F_CPU(viteza procesorului)
 +  uint16_t ubrr = F_CPU/​16/​baud-1;​
 +  // impartim valoare pe 2 registri primi 8 biti si restul
 +  UBRR0H = (unsigned char)(ubrr>>​8);​
 +  UBRR0L = (unsigned char)ubrr;
 +  // Activeaza receptorul (RXEN0) si transmisorul (TXEN0) pentru UART0
 +  UCSR0B = (1<<​RXEN0)|(1<<​TXEN0);​
 +  // seteaza marimea datelor transmise la 8 biti 
 +  UCSR0C = (1<<​UCSZ01)|(1<<​UCSZ00);​
 +} </​code>​
 +
 +    * Scriere date pe UART0
 +    <​code>​void manualSerialWrite(unsigned char data) {
 +  // Asteaptam ca buffer-ul UDRE0 de transmisie sa se goleasca
 +  // verifica daca bitul UDRE0 e activ
 +  while (!(UCSR0A & (1<<​UDRE0)));​
 +  // Scrie un caracter in registrul de date pentru al transmite
 +  UDR0 = data;
 +}
 +</​code>​
 +    * trimitere caractere
 +<​code>​
 +// trimite caracter cu caracter pana ajunge la final
 +void manualSerialPrint(const char* str) {
 +  while (*str) {
 +    manualSerialWrite(*str++);​
 +  }
 +}
 + </​code>​
 +    * transformarea numerelor in caractere ​
 +    <​code>//​ transforma numar intreg in caracter ascii si il transmite caracter cu caracter
 +void manualSerialPrintNumber(int num) {
 +  if (num == 0) {
 +    manualSerialWrite('​0'​);​
 +    return;
 +  }
 +  ​
 +  char buffer[10];
 +  int i = 0;
 +  bool negative = false;
 +  ​
 +  if (num < 0) {
 +    negative = true;
 +    num = -num;
 +  }
 +  ...
 +}</​code>​
 +  * **Serial 1**
 +    * asemanator ca la serial 0 (UART1), insa la registri se schimba numarul in 1
 +    * initializare
 +<​code>​void manualSerial1Init(long baud) {
 +  // Setare registri pentru UART1 (Serial1)
 +  // calculare viteza de comunicare, F_CPU(viteza procesorului)
 +  uint16_t ubrr = F_CPU/​16/​baud-1;​
 +  // impartim pe 2 registri valoarea
 +  UBRR1H = (unsigned char)(ubrr>>​8);​
 +  UBRR1L = (unsigned char)ubrr;
 +  // Activeaza receptorul (RXEN1) si transmisorul (TXEN1) pentru UART0
 +  UCSR1B = (1<<​RXEN1)|(1<<​TXEN1);​
 +  // setez marimea datelor la 8 biti
 +  UCSR1C = (1<<​UCSZ11)|(1<<​UCSZ10);​
 +}</​code>​
 +   
 +<​code>​void manualSerial1Write(unsigned char data){
 +...
 +}</​code>​
 +    * Citire de date pe UART1
 +<​code>​
 +unsigned char manualSerial1Read() {
 +  // Asteapta sa se primeasca date pe uart1 apoi il citeste, RXC1 = activ => date disponibile
 +  while (!(UCSR1A & (1<<​RXC1)));​
 +  return UDR1;
 +}</​code>​
 +    * Verificare dacă sunt date primite
 +<​code>​bool manualSerial1Available() {
 +  // Verifica daca exista date primite in buffer-ul UART1
 +  return (UCSR1A & (1<<​RXC1));​
 +}</​code>​
 +    * **clasa pentru serial1 care extinde stream **
  
   * **setup()**   * **setup()**
Line 75: Line 161:
        
 <​code>​ <​code>​
-  ​void setup() {+void setup() {
   // setare pini rgb pentru iesire   // setare pini rgb pentru iesire
   int pins[] = {led1R, led1G, led1B, led2R, led2G, led2B};   int pins[] = {led1R, led1G, led1B, led2R, led2G, led2B};
Line 87: Line 173:
   attachInterrupt(digitalPinToInterrupt(touchPin),​ schimbareMod,​ RISING);   attachInterrupt(digitalPinToInterrupt(touchPin),​ schimbareMod,​ RISING);
  
-  // initializare ​comunicati ​seriale +  // initializare ​comunicatii ​seriale ​manual 
-  ​Serial.begin(9600); +  ​manualSerialInit(9600); 
-  ​Serial1.begin(9600);​ //dfplayer+  ​manualSerial1.begin(9600);​ //​dfplayer ​manual
   ​   ​
   // pornire lcd   // pornire lcd
Line 95: Line 181:
   lcd.backlight();​   lcd.backlight();​
  
-  if (!player.begin(Serial1)) { +  if (!player.begin(manualSerial1)) { 
-    ​Serial.println("​DFPlayer nu a fost gasit!"​);​+    ​manualSerialPrintln("​DFPlayer nu a fost gasit!"​);​
     while (true);     while (true);
   }   }
Line 153: Line 239:
  
  
 +**Cod github**
  
 +[[https://​github.com/​NeculauSanda/​Lampa_interactiva/​blob/​main/​mod_leduri/​mod_leduri.ino|Proiect IP]]
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 166: Line 254:
 Arhiva contine: poze cu schema, biblioteca de la lcd+i2c si codul. Arhiva contine: poze cu schema, biblioteca de la lcd+i2c si codul.
  
-{{:​pm:​prj2025:​atoader:​lampa_interactiva_sanda.zip|}} +{{:​pm:​prj2025:​atoader:​lampa_interactiva_neculau_sanda.zip|}}
- +
  
  
Line 174: Line 260:
  
 Pentru a afla registri pentru scrierea sriala m-am documentat din urmatoarele resurse Pentru a afla registri pentru scrierea sriala m-am documentat din urmatoarele resurse
-[[https://​ww1.microchip.com/​downloads/​en/​devicedoc/​atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf|documentatie placuta artmega ​2650]], pagina 400(tabel cu registri descrisi)+[[https://​ww1.microchip.com/​downloads/​en/​devicedoc/​atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf|documentatie placuta artmega ​2560]], pagina 400(tabel cu registri descrisi)
  
  
 Pentru a implementa functiile de scriere citire si transmitere pe serial [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|datasheet]],​ paginile 149, 150, 151, 152 Pentru a implementa functiile de scriere citire si transmitere pe serial [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|datasheet]],​ paginile 149, 150, 151, 152
 <​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/atoader/sanda_elena.neculau.1748366063.txt.gz · Last modified: 2025/05/27 20:14 by sanda_elena.neculau
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