This shows you the differences between two versions of the page.
pm:prj2025:vstoica:florin.ionita3007 [2025/05/26 13:28] florin.ionita3007 [Bill of Materials] |
pm:prj2025:vstoica:florin.ionita3007 [2025/05/26 13:49] (current) florin.ionita3007 [Jurnal] |
||
---|---|---|---|
Line 79: | Line 79: | ||
- | <note tip> | + | === Descrierea codului aplicatiei === |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Codul aplicatiei controleaza un robot autonom capabil sa urmeze o linie folosind patru senzori IR analogici si un accelerometru ADXL345 pentru a ajusta viteza in functie de inclinarea terenului. Motorul stang si cel drept sunt controlate printr-un driver L298N conectat la pinii digitali ai microcontrolerului, folosind semnale PWM pentru ajustarea vitezei. |
- | * 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 si functii implementate === |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | Fisierul principal al aplicatiei este '''main.c''', care contine codul firmware-ului pentru controlul robotului line follower. Toate functiile periferice sunt implementate direct, fara librarii externe, folosind registrele microcontrolerului ATmega328P. Programul este organizat modular, cu functii separate pentru fiecare componenta hardware: motoare, UART, I2C, ADC si accelerometru. |
+ | |||
+ | === Functiile implementate: === | ||
+ | |||
+ | pwm_init() | ||
+ | motor_forward() | ||
+ | motor_left() | ||
+ | motor_right() | ||
+ | motor_stop() | ||
+ | uart_init(ubrr) | ||
+ | uart_putchar() | ||
+ | i2c_init() | ||
+ | i2c_start(), i2c_stop(), i2c_write(), i2c_read_ack(), i2c_read_nack()4 | ||
+ | adxl345_write(reg, value) | ||
+ | adxl345_read_xyz(x, y, z) | ||
+ | adxl345_init() | ||
+ | adc_init() | ||
+ | read_adc(channel) | ||
+ | follow_line() | ||
+ | main() | ||
+ | |||
+ | |||
+ | === Mediu de dezvoltare === | ||
+ | |||
+ | Aplicatia a fost dezvoltata pe WSL si programul a fost incarcat prin sistem de operare Windows folosind toolchain-ul GNU AVR. Am utilizat un editor de text (VS Code) impreună cu urmatoarele unelte: | ||
+ | |||
+ | * '''Compilator''': avr-gcc | ||
+ | * '''Uploader''': avrdude | ||
+ | * '''Platforma hardware''': Arduino Uno R3 cu microcontroler ATmega328P | ||
+ | * '''Terminal serial pentru debugging''': Serial Monitor Arduino IDE | ||
+ | |||
+ | Compilarea si programarea s-au realizat prin urmatoarele comenzi: | ||
+ | |||
+ | <code> | ||
+ | avr-gcc -mmcu=atmega328p -DF_CPU=16000000UL -Os -o main.elf main.c -Wl,-u,vfprintf -lprintf_flt -lm | ||
+ | |||
+ | avr-objcopy -O ihex -R .eeprom main.elf main.hex | ||
+ | |||
+ | avrdude -c arduino -p m328p -P COM5 -b 115200 -U flash:w:C:\Users\40731\Desktop\main.hex:i | ||
+ | </code> | ||
+ | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 96: | Line 137: | ||
===== Download ===== | ===== Download ===== | ||
+ | |||
+ | {{:pm:prj2025:vstoica:cd:florin.ionita3007:main.rar|}} | ||
<note warning> | <note warning> | ||
Line 112: | Line 155: | ||
5/18 ora 15:00 - ultimele retusuri pe hardware | 5/18 ora 15:00 - ultimele retusuri pe hardware | ||
+ | |||
+ | 5/26 ora 1:49 - am schimbat pinii pe schema hardware, adaugat software-ul, retusat facut putin mai dragut si adaugat codul in download | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||