This is an old revision of the document!
What it does: The project is a functional, portable pocket calculator capable of evaluating basic arithmetic expressions (addition, subtraction, multiplication, and division). It takes input from a 4×4 matrix keypad, displays the operations and results on an LCD screen, and uses a passive buzzer to provide audio feedback for key presses and errors.
Its purpose: To create a reliable and user-friendly calculation tool while demonstrating the practical integration of multiple hardware peripherals and essential software concepts (such as debouncing, state machines, and I2C communication).
The starting idea: Standard breadboard calculators or simple digital projects often lack tactile or audio feedback, leading to missed inputs or double-presses. We wanted to solve this by adding an auditory layer that confirms user actions, making the device feel more like a finished commercial product.
Why it is useful: For us, it provides a great learning platform for handling matrix inputs, string parsing, and hardware timers on a microcontroller. For the user, the audio feedback drastically reduces input errors, making it more reliable than a silent keypad interface.
The system is built around a central microcontroller unit (MCU). The architecture consists of three main external modules interacting with the processing unit:
Input Module (4×4 Keypad): Connected via GPIO pins. It sends raw row/column data to the microcontroller when a key is pressed.
Visual Output Module (I2C LCD): Connected via the I2C bus (SDA/SCL pins). It receives parsed strings from the MCU to display the current operands, mathematical operators, and the final result.
Audio Output Module (Passive Buzzer): Connected via a PWM-capable pin. The MCU uses timers to generate specific frequencies (tones) depending on the context: a short beep for a valid key press, and a longer, distinct tone for invalid operations (e.g., division by zero).
[Insert Block Diagram Here]
List of Components:
1x Microcontroller Board (e.g., Arduino Nano / Uno or ATmega324A/328P)
1x 4×4 Matrix Keypad
1x 1602 LCD Display with I2C Module adapter
1x Passive Buzzer
1x Breadboard
Jumper wires (Male-to-Male and Male-to-Female)
1x Resistor (approx. 220Ω - 1kΩ) for the buzzer (optional)
Schematics and Signal Diagrams: [Insert Schematic Image Here] [Insert Picture of the Breadboard setup Here]
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.