This shows you the differences between two versions of the page.
|
pm:prj2026:vlad.radulescu2901:viorel_cosmin.cucu [2026/05/23 22:06] viorel_cosmin.cucu |
pm:prj2026:vlad.radulescu2901:viorel_cosmin.cucu [2026/05/23 22:37] (current) viorel_cosmin.cucu |
||
|---|---|---|---|
| Line 129: | Line 129: | ||
| * **IDE:** PlatformIO (VS Code) | * **IDE:** PlatformIO (VS Code) | ||
| * **Language:** C++ (Arduino framework) | * **Language:** C++ (Arduino framework) | ||
| - | * **Libraries Motivation:** I wrote almost all the code from scratch using direct register manipulation for Timers and PWM. This ensures maximum speed and non-blocking execution. The only external library used is ''LiquidCrystal_I2C'', because writing a custom I2C software driver for the LCD would be redundant when a highly optimized standard library already exists. | + | * **AI Assistance:** I used Claude Opus AI to assist with writing the code, structuring the non-blocking logic, and debugging hardware timer issues. |
| + | * **Libraries Motivation:** | ||
| + | * ''<Arduino.h>'': The core framework library. I used it for essential built-in functions like ''millis()'' (crucial for my non-blocking state machines), ''pulseIn()'' (to safely read ultrasonic sensors with a strict timeout), and basic GPIO control (''pinMode'', ''digitalWrite'', ''analogRead''). | ||
| + | * ''<Wire.h>'': The standard I2C library. Used to abstract the low-level TWI (Two-Wire Interface) hardware registers of the ATmega328P, providing robust communication with I2C devices. | ||
| + | * ''<LiquidCrystal_I2C.h>'': An external library that relies on ''<Wire.h>''. It handles the complex data formatting required by the PCF8574 I2C expander attached to the 1602 LCD. I chose to use this library because writing a custom I2C LCD driver from scratch would be redundant and reinventing the wheel, allowing me to easily display custom animated characters. Everything else (like PWM and Timers) was implemented using direct register manipulation. | ||
| ==== Justification of Laboratory Functionalities ==== | ==== Justification of Laboratory Functionalities ==== | ||