This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:mihnea_andrei.cazan [2026/05/08 00:36] mihnea_andrei.cazan [Descriere generală] |
pm:prj2026:bianca.popa1106:mihnea_andrei.cazan [2026/05/10 00:10] (current) mihnea_andrei.cazan [Descriere generală] |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| * **The idea** originated from the desire to recreate the experience of 80s/90s arcade games on a minimal hardware platform, demonstrating how limited memory resources (32KB Flash, 2KB RAM) can provide a complete interactive experience. | * **The idea** originated from the desire to recreate the experience of 80s/90s arcade games on a minimal hardware platform, demonstrating how limited memory resources (32KB Flash, 2KB RAM) can provide a complete interactive experience. | ||
| * **This project is highly useful** from an educational standpoint, as it deepens the understanding of fundamental concepts (I2C communication protocols, ADCs, Timers, PWM, and Hardware Interrupts), while also resulting in a functional and entertaining gadget. | * **This project is highly useful** from an educational standpoint, as it deepens the understanding of fundamental concepts (I2C communication protocols, ADCs, Timers, PWM, and Hardware Interrupts), while also resulting in a functional and entertaining gadget. | ||
| - | ===== Descriere generală ===== | + | ===== General Description ===== |
| The console is structured into three main blocks: input, processing, and output. | The console is structured into three main blocks: input, processing, and output. | ||
| Line 19: | Line 19: | ||
| - | {{ :pm:prj2026:bianca.popa1106:project_block_diagram.png?300 |}} | + | {{ :pm:prj2026:bianca.popa1106:project_block_diagram.png?700x500 |}} |
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | <note tip> | + | List of components used for the project (Bill of Materials): |
| - | Aici puneţi tot ce ţine de hardware design: | + | * **ATmega328P Xplained Mini** Development Board (8-bit AVR Microcontroller) |
| - | * listă de piese | + | * **0.96" OLED Display** (SSD1306 Controller, I2C Interface, 128x64 resolution) |
| - | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | * **Biaxial Analog Joystick Module** (KY-023 type) with integrated push button (SW) |
| - | * diagrame de semnal | + | * **Passive Buzzer 3.3V** (for generating sound effects) |
| - | * rezultatele simulării | + | * **5mm RGB LED** (Common Cathode, for visual state indication) |
| - | </note> | + | * **2 x Tact Switch Buttons 6x6mm** (For START and PAUSE functions) |
| + | * **4 x 220Ω Resistors** (3 for RGB LED current limiting, 1 for buzzer protection) | ||
| + | * **830 Tie-Points Breadboard** (for solderless assembly) | ||
| + | * **Dupont Wire Set** (Male-to-Male and Female-to-Male) | ||
| + | |||
| + | **Electrical Scheme:** | ||
| + | |||
| + | {{:pm:prj2026:bianca.popa1106:mihnea-andrei_cazan_schema_electrica.png?700x500 | Mini Console Electrical Schematic}} | ||
| + | |||
| + | ==== Connection Table ==== | ||
| + | |||
| + | ^ Component ^ Component Pin ^ ATmega328P Pin ^ Details / Functionality ^ | ||
| + | | **RGB LED** | Red Anode | PD6 (D6) | PWM controlled (Timer0 OC0A) | | ||
| + | | ::: | Green Anode | PD5 (D5) | PWM controlled (Timer0 OC0B) | | ||
| + | | ::: | Blue Anode | PB3 (D11) | PWM controlled (Timer2 OC2A) | | ||
| + | | ::: | Cathode | GND | Common Ground | | ||
| + | | **Joystick** | VRx | PC0 (ADC0) | Analog read (X-axis) | | ||
| + | | ::: | VRy | PC1 (ADC1) | Analog read (Y-axis) | | ||
| + | | ::: | SW | PD2 (D2) | Hardware Interrupt (INT0, Internal Pull-up) | | ||
| + | | ::: | VCC | 5V | Power Supply | | ||
| + | | ::: | GND | GND | Ground | | ||
| + | | **OLED Display**| SDA | PC4 (A4) | I2C Data line (TWI) | | ||
| + | | ::: | SCL / SCK | PC5 (A5) | I2C Clock line (Fast Mode 400kHz) | | ||
| + | | ::: | VCC | 5V | Power Supply | | ||
| + | | ::: | GND | GND | Ground | | ||
| + | | **Buzzer** | Pin (+) | PB1 (D9) | Through 220Ω resistor (Timer1 OC1A) | | ||
| + | | ::: | Pin (-) | GND | Ground | | ||
| + | | **Buttons** | START | PD3 (D3) | Hardware Interrupt (INT1, Internal Pull-up) | | ||
| + | | ::: | PAUSE | PB0 (D8) | Pin Change Int (PCINT0, Internal Pull-up) | | ||
| + | |||
| + | ==== Communication Protocols and Hardware Peripherals ==== | ||
| + | |||
| + | To seamlessly manage the display, analog input, and visual/audio effects concurrently without blocking the main loop, the system heavily utilizes the microcontroller's hardware peripherals: | ||
| + | * **I2C (TWI):** Enabled on pins PC4/PC5. Configured in **Fast Mode (400 kHz)** to ensure rapid transfer of the frame buffer to the OLED display (maintaining ~30 FPS). | ||
| + | * **ADC:** ADC0 and ADC1 channels are used for smooth joystick reading, utilizing a 128 prescaler for signal stability. | ||
| + | * **PWM Signals:** Timers 0 and 2 generate hardware PWM signals on 3 independent pins to finely control the brightness and color mixing of the RGB LED. | ||
| + | * **Timer1 (CTC Mode):** Generates precise hardware frequencies for musical notes sent to the buzzer, offloading the CPU from using blocking delay functions. | ||
| ===== Software Design ===== | ===== Software Design ===== | ||