Differences

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

Link to this comparison view

pm:prj2026:jan.vaduva:33160 [2026/05/09 22:32]
tudor_mihai.petcu
— (current)
Line 1: Line 1:
-====== Smart Puzzle Game ====== 
- 
-===== Introduction ===== 
- 
-The purpose of this project is to build an interactive puzzle box based on the ATmega328P Xplained Mini microcontroller. When the user presses the start button, the box opens using a servo motor and starts a timed puzzle challenge. The system displays the current level and the remaining time on an LCD, and it uses LEDs and a buzzer to signal success or failure. 
- 
-The main idea behind the project is to combine a simple game-like experience with embedded control, timing, sound feedback, and multiple difficulty levels. The project started from the idea of a simple access system, but it later evolved into a puzzle-based interactive system, which is more interesting from both the hardware and software point of view. 
- 
-We chose this idea because it is interactive,​ easy to demonstrate,​ and allows us to combine several topics studied during the laboratory sessions, especially interrupts, timers/PWM, and UART for debugging. We think the project is useful for us because it gives us practical experience with both hardware and software integration. 
- 
-===== General Description ===== 
- 
-The project is built around the ATmega328P Xplained Mini, which controls all the hardware components. The system has the following main modules: 
- 
-  * **Main control unit** – the ATmega328P Xplained Mini microcontroller coordinates the entire system. 
-  * **Input module** – one button starts the game, one button confirms the end of the round, and one reset/next button can be used to restart or move to the next level. 
-  * **Display module** – a 16x2 LCD shows the current level, remaining time, and result messages. 
-  * **Actuation module** – a servo motor opens the box when the game starts. 
-  * **Feedback module** – LEDs and a buzzer indicate game status, success, timeout, or errors. 
-  * **Game logic module** – software manages the countdown, level difficulty, state transitions,​ and result validation. 
- 
-A simple logical flow of the system is the following: 
- 
-  * the system waits in an idle state 
-  * the user presses the **Start** button 
-  * the servo opens the box 
-  * the LCD shows the current level and the countdown timer 
-  * the user completes the challenge 
-  * the user presses the **Finish** button 
-  * if the challenge is completed before timeout, the system shows success and moves to the next level 
-  * if the timer reaches zero first, the system signals failure 
- 
-The project can be described using the following software states: 
- 
-  * **Idle** 
-  * **Opening Box** 
-  * **Game Running** 
-  * **Success** 
-  * **Fail / Timeout** 
-  * **Next Level / Reset** 
- 
-==== Block Diagram ==== 
- 
-The following block diagram presents the main hardware modules of the system and the way they interact. The ATmega328P Xplained Mini is the central control unit. It receives input from the buttons, controls the LCD, drives the servo motor, activates the buzzer and LEDs, and can optionally communicate with a PC through UART for debugging. 
- 
-<​html>​ 
-<​!DOCTYPE html> 
-<​html>​ 
-<​head>​ 
-<​title>​Untitled Diagram.drawio.html</​title>​ 
-<meta charset="​utf-8"/>​ 
-</​head>​ 
-<​body>​ 
-<div class="​mxgraph"​ style="​max-width:​100%;​border:​1px solid transparent;"​ data-mxgraph="​{&​quot;​highlight&​quot;:&​quot;#​0000ff&​quot;,&​quot;​nav&​quot;:​true,&​quot;​resize&​quot;:​true,&​quot;​xml&​quot;:&​quot;&​lt;​mxfile host=\&​quot;​app.diagrams.net\&​quot;&​gt;&​lt;​diagram name=\&​quot;​Page-1\&​quot;​ id=\&​quot;​ISBjk71iAZlT5E4kvOMc\&​quot;&​gt;&​lt;​mxGraphModel dx=\&​quot;​814\&​quot;​ dy=\&​quot;​616\&​quot;​ grid=\&​quot;​1\&​quot;​ gridSize=\&​quot;​10\&​quot;​ guides=\&​quot;​1\&​quot;​ tooltips=\&​quot;​1\&​quot;​ connect=\&​quot;​1\&​quot;​ arrows=\&​quot;​1\&​quot;​ fold=\&​quot;​1\&​quot;​ page=\&​quot;​1\&​quot;​ pageScale=\&​quot;​1\&​quot;​ pageWidth=\&​quot;​850\&​quot;​ pageHeight=\&​quot;​1100\&​quot;​ math=\&​quot;​0\&​quot;​ shadow=\&​quot;​0\&​quot;&​gt;&​lt;​root&​gt;&​lt;​mxCell id=\&​quot;​0\&​quot;/&​gt;&​lt;​mxCell id=\&​quot;​1\&​quot;​ parent=\&​quot;​0\&​quot;/&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-1\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​rounded=1;​whiteSpace=wrap;​html=1;​fillColor=#​fff2cc;​strokeColor=#​d6b656;​\&​quot;​ value=\&​quot;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​60\&​quot;​ width=\&​quot;​150\&​quot;​ x=\&​quot;​350\&​quot;​ y=\&​quot;​140\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-2\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​fontSize=16;​fontColor=#​FFB366;​\&​quot;​ value=\&​quot;​Power Supply\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​110\&​quot;​ x=\&​quot;​370\&​quot;​ y=\&​quot;​155\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-4\&​quot;​ edge=\&​quot;​1\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​endArrow=classic;​html=1;​rounded=0;​\&​quot;​ value=\&​quot;​\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​50\&​quot;​ relative=\&​quot;​1\&​quot;​ width=\&​quot;​50\&​quot;​ as=\&​quot;​geometry\&​quot;&​gt;&​lt;​mxPoint x=\&​quot;​424\&​quot;​ y=\&​quot;​200\&​quot;​ as=\&​quot;​sourcePoint\&​quot;/&​gt;&​lt;​mxPoint x=\&​quot;​424\&​quot;​ y=\&​quot;​270\&​quot;​ as=\&​quot;​targetPoint\&​quot;/&​gt;&​lt;/​mxGeometry&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-5\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​rounded=1;​whiteSpace=wrap;​html=1;​fillColor=#​dae8fc;​strokeColor=#​6c8ebf;​\&​quot;​ value=\&​quot;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​60\&​quot;​ width=\&​quot;​190\&​quot;​ x=\&​quot;​330\&​quot;​ y=\&​quot;​270\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-6\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​fontSize=20;​fontColor=#​7EA6E0;​\&​quot;​ value=\&​quot;​ATmega328P Xplained Mini\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​395\&​quot;​ y=\&​quot;​285\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-8\&​quot;​ edge=\&​quot;​1\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​endArrow=classic;​html=1;​rounded=0;​\&​quot;​ value=\&​quot;​\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​50\&​quot;​ relative=\&​quot;​1\&​quot;​ width=\&​quot;​50\&​quot;​ as=\&​quot;​geometry\&​quot;&​gt;&​lt;​Array as=\&​quot;​points\&​quot;&​gt;&​lt;​mxPoint x=\&​quot;​220\&​quot;​ y=\&​quot;​300\&​quot;/&​gt;&​lt;/​Array&​gt;&​lt;​mxPoint x=\&​quot;​220\&​quot;​ y=\&​quot;​200\&​quot;​ as=\&​quot;​sourcePoint\&​quot;/&​gt;&​lt;​mxPoint x=\&​quot;​330\&​quot;​ y=\&​quot;​300\&​quot;​ as=\&​quot;​targetPoint\&​quot;/&​gt;&​lt;/​mxGeometry&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-10\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​rounded=1;​whiteSpace=wrap;​html=1;​fillColor=#​d5e8d4;​strokeColor=#​82b366;​\&​quot;​ value=\&​quot;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​60\&​quot;​ width=\&​quot;​120\&​quot;​ x=\&​quot;​160\&​quot;​ y=\&​quot;​140\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-11\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​fontSize=20;​fontColor=#​97D077;​\&​quot;​ value=\&​quot;​Buttons\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​190\&​quot;​ y=\&​quot;​155\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-13\&​quot;​ edge=\&​quot;​1\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​endArrow=classic;​html=1;​rounded=0;​\&​quot;​ value=\&​quot;​\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​50\&​quot;​ relative=\&​quot;​1\&​quot;​ width=\&​quot;​50\&​quot;​ as=\&​quot;​geometry\&​quot;&​gt;&​lt;​Array as=\&​quot;​points\&​quot;&​gt;&​lt;​mxPoint x=\&​quot;​610\&​quot;​ y=\&​quot;​300\&​quot;/&​gt;&​lt;/​Array&​gt;&​lt;​mxPoint x=\&​quot;​520\&​quot;​ y=\&​quot;​300\&​quot;​ as=\&​quot;​sourcePoint\&​quot;/&​gt;&​lt;​mxPoint x=\&​quot;​610\&​quot;​ y=\&​quot;​200\&​quot;​ as=\&​quot;​targetPoint\&​quot;/&​gt;&​lt;/​mxGeometry&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-14\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​rounded=1;​whiteSpace=wrap;​html=1;​fillColor=#​e1d5e7;​strokeColor=#​9673a6;​\&​quot;​ value=\&​quot;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​60\&​quot;​ width=\&​quot;​120\&​quot;​ x=\&​quot;​550\&​quot;​ y=\&​quot;​140\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-15\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​fontSize=16;​fontColor=#​B5739D;​\&​quot;​ value=\&​quot;​LCD 16x2 Display\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​100\&​quot;​ x=\&​quot;​560\&​quot;​ y=\&​quot;​155\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-16\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​\&​quot;​ value=\&​quot;​5V Power\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​425\&​quot;​ y=\&​quot;​220\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-17\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​\&​quot;​ value=\&​quot;​GPIO/​Interrupts\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​220\&​quot;​ y=\&​quot;​240\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-18\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​\&​quot;​ value=\&​quot;​GPIO\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​600\&​quot;​ y=\&​quot;​240\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-19\&​quot;​ edge=\&​quot;​1\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​endArrow=classic;​html=1;​rounded=0;​\&​quot;​ value=\&​quot;​\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​50\&​quot;​ relative=\&​quot;​1\&​quot;​ width=\&​quot;​50\&​quot;​ as=\&​quot;​geometry\&​quot;&​gt;&​lt;​mxPoint x=\&​quot;​424\&​quot;​ y=\&​quot;​330\&​quot;​ as=\&​quot;​sourcePoint\&​quot;/&​gt;&​lt;​mxPoint x=\&​quot;​424\&​quot;​ y=\&​quot;​520\&​quot;​ as=\&​quot;​targetPoint\&​quot;/&​gt;&​lt;/​mxGeometry&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-20\&​quot;​ edge=\&​quot;​1\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​endArrow=classic;​html=1;​rounded=0;​\&​quot;​ value=\&​quot;​\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​50\&​quot;​ relative=\&​quot;​1\&​quot;​ width=\&​quot;​50\&​quot;​ as=\&​quot;​geometry\&​quot;&​gt;&​lt;​Array as=\&​quot;​points\&​quot;&​gt;&​lt;​mxPoint x=\&​quot;​220\&​quot;​ y=\&​quot;​420\&​quot;/&​gt;&​lt;/​Array&​gt;&​lt;​mxPoint x=\&​quot;​425\&​quot;​ y=\&​quot;​420\&​quot;​ as=\&​quot;​sourcePoint\&​quot;/&​gt;&​lt;​mxPoint x=\&​quot;​220\&​quot;​ y=\&​quot;​520\&​quot;​ as=\&​quot;​targetPoint\&​quot;/&​gt;&​lt;/​mxGeometry&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-21\&​quot;​ edge=\&​quot;​1\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​endArrow=classic;​html=1;​rounded=0;​\&​quot;​ value=\&​quot;​\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​50\&​quot;​ relative=\&​quot;​1\&​quot;​ width=\&​quot;​50\&​quot;​ as=\&​quot;​geometry\&​quot;&​gt;&​lt;​Array as=\&​quot;​points\&​quot;&​gt;&​lt;​mxPoint x=\&​quot;​610\&​quot;​ y=\&​quot;​420\&​quot;/&​gt;&​lt;/​Array&​gt;&​lt;​mxPoint x=\&​quot;​425\&​quot;​ y=\&​quot;​420\&​quot;​ as=\&​quot;​sourcePoint\&​quot;/&​gt;&​lt;​mxPoint x=\&​quot;​610\&​quot;​ y=\&​quot;​520\&​quot;​ as=\&​quot;​targetPoint\&​quot;/&​gt;&​lt;/​mxGeometry&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-22\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​rounded=1;​whiteSpace=wrap;​html=1;​fillColor=#​e3c800;​fontColor=#​000000;​strokeColor=#​B09500;​\&​quot;​ value=\&​quot;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​60\&​quot;​ width=\&​quot;​120\&​quot;​ x=\&​quot;​160\&​quot;​ y=\&​quot;​520\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-23\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​fontSize=16;​fontColor=#​FFFF99;​\&​quot;​ value=\&​quot;​SERVO\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​190\&​quot;​ y=\&​quot;​535\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-24\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​rounded=1;​whiteSpace=wrap;​html=1;​fillColor=#​e51400;​fontColor=#​ffffff;​strokeColor=#​B20000;​\&​quot;​ value=\&​quot;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​60\&​quot;​ width=\&​quot;​120\&​quot;​ x=\&​quot;​550\&​quot;​ y=\&​quot;​520\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-25\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​fontColor=#​00FF00;​fontSize=16;​\&​quot;​ value=\&​quot;​LEDS\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​580\&​quot;​ y=\&​quot;​535\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-26\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​rounded=1;​whiteSpace=wrap;​html=1;​fillColor=#​76608a;​fontColor=#​ffffff;​strokeColor=#​432D57;​\&​quot;​ value=\&​quot;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​60\&​quot;​ width=\&​quot;​120\&​quot;​ x=\&​quot;​365\&​quot;​ y=\&​quot;​520\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-27\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​fontSize=16;​fontColor=light-dark(#​c01c28,​ #​ededed);​\&​quot;​ value=\&​quot;&​amp;​lt;​div&​amp;​gt;​Buzzer&​amp;​lt;/​div&​amp;​gt;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​395\&​quot;​ y=\&​quot;​535\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-28\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​\&​quot;​ value=\&​quot;&​amp;​lt;​div&​amp;​gt;​GPIO&​amp;​lt;/​div&​amp;​gt;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​210\&​quot;​ y=\&​quot;​460\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-29\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​\&​quot;​ value=\&​quot;​GPIO\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​420\&​quot;​ y=\&​quot;​460\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-31\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​\&​quot;​ value=\&​quot;​GPIO\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​600\&​quot;​ y=\&​quot;​460\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-32\&​quot;​ edge=\&​quot;​1\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​endArrow=classic;​html=1;​rounded=0;​\&​quot;​ value=\&​quot;​\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​50\&​quot;​ relative=\&​quot;​1\&​quot;​ width=\&​quot;​50\&​quot;​ as=\&​quot;​geometry\&​quot;&​gt;&​lt;​mxPoint x=\&​quot;​424\&​quot;​ y=\&​quot;​580\&​quot;​ as=\&​quot;​sourcePoint\&​quot;/&​gt;&​lt;​mxPoint x=\&​quot;​424\&​quot;​ y=\&​quot;​720\&​quot;​ as=\&​quot;​targetPoint\&​quot;/&​gt;&​lt;/​mxGeometry&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-33\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​rounded=1;​whiteSpace=wrap;​html=1;​fillColor=#​f5f5f5;​gradientColor=#​b3b3b3;​strokeColor=#​666666;​\&​quot;​ value=\&​quot;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​60\&​quot;​ width=\&​quot;​120\&​quot;​ x=\&​quot;​365\&​quot;​ y=\&​quot;​720\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-34\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​fontColor=#​666666;​fontSize=16;​\&​quot;​ value=\&​quot;&​amp;​lt;​div&​amp;​gt;​UART&​amp;​lt;/​div&​amp;​gt;​\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​395\&​quot;​ y=\&​quot;​735\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;​mxCell id=\&​quot;​eeTA-m969tc2DToLa9s2-35\&​quot;​ parent=\&​quot;​1\&​quot;​ style=\&​quot;​text;​html=1;​whiteSpace=wrap;​strokeColor=none;​fillColor=none;​align=center;​verticalAlign=middle;​rounded=0;​\&​quot;​ value=\&​quot;​UART\&​quot;​ vertex=\&​quot;​1\&​quot;&​gt;&​lt;​mxGeometry height=\&​quot;​30\&​quot;​ width=\&​quot;​60\&​quot;​ x=\&​quot;​420\&​quot;​ y=\&​quot;​630\&​quot;​ as=\&​quot;​geometry\&​quot;/&​gt;&​lt;/​mxCell&​gt;&​lt;/​root&​gt;&​lt;/​mxGraphModel&​gt;&​lt;/​diagram&​gt;&​lt;/​mxfile&​gt;&​quot;,&​quot;​toolbar&​quot;:&​quot;​pages zoom layers lightbox&​quot;,&​quot;​page&​quot;:​0}"></​div>​ 
-<script type="​text/​javascript"​ src="​https://​app.diagrams.net/​js/​viewer-static.min.js"></​script>​ 
-</​body>​ 
-</​html>​ 
- 
-===== Hardware Design ===== 
- 
-==== Components list ==== 
- 
-  * 1 x ATmega328P Xplained Mini microcontroller 
-  * 1 x USBasp programmer 
-  * 1 x 16 MHz crystal 
-  * 2 x 22 pF ceramic capacitors 
-  * 2-3 x 100 nF capacitors 
-  * 1 x 10 uF electrolytic capacitor 
-  * 1 x 100 uF electrolytic capacitor 
-  * 1 x 10 kOhm resistor 
-  * 2 x 220 Ohm resistors 
-  * 1 x reset button 
-  * 2-3 x push buttons for game control 
-  * 1 x 16x2 LCD, 5V 
-  * 1 x SG90 micro servo motor 
-  * 1 x active 5V buzzer 
-  * 1 x green LED 
-  * 1 x red LED 
-  * 1 x breadboard 
-  * jumper wires 
-  * 1 x box used as the main game enclosure 
- 
-==== Hardware description ==== 
- 
-The ATmega328P Xplained Mini is the main controller and will be placed on a breadboard together with the supporting passive components. A 16 MHz crystal and two 22 pF capacitors will be used for stable clock generation. The reset pin will use a push button and a 10 kOhm pull-up resistor. 
- 
-The LCD will display the current level, the timer, and game messages such as: 
-  * "Press Start" 
-  * "Level 1" 
-  * "Time left: 45 s" 
-  * "​Success"​ 
-  * "Time over" 
- 
-The servo motor will be used to physically open the box. Because the servo may create small voltage fluctuations,​ a larger capacitor (100 uF) will be placed on the power rail for stabilization. 
- 
-The buzzer will provide sound notifications:​ 
-  * game start 
-  * warning near timeout 
-  * success 
-  * failure 
- 
-The LEDs will provide simple visual feedback: 
-  * green LED = success 
-  * red LED = failure or timeout 
- 
-The buttons will be used as follows: 
-  * **Start** button – starts the round and opens the box 
-  * **Finish** button – confirms the end of the round 
-  * **Reset / Next** button – moves to the next level or restarts the game 
- 
-==== Covered laboratory topics ==== 
- 
-The project is designed to cover at least three laboratory topics from the course, not counting Lab 0. 
- 
-  * **Lab 1 – UART** 
-    * sending debug messages to a PC terminal 
-    * printing the current state of the system 
-    * displaying information such as level, remaining time, success, or failure 
- 
-  * **Lab 2 – Interrupts** 
-    * handling button events 
-    * reacting to time-based events more efficiently 
-    * improving responsiveness of the game logic 
- 
-  * **Lab 3 – Timers / PWM** 
-    * implementing the countdown timer 
-    * generating the PWM signal for servo control 
-    * controlling timing for buzzer and visual feedback 
- 
-Optionally, the project may also include: 
- 
-  * **Lab 6 – I2C** 
-    * if an I2C LCD adapter is used, the display can be controlled through the I2C interface 
- 
-Although GPIO is naturally used in the project for buttons, LEDs, and basic control signals, the core requirement of covering at least three laboratories is satisfied through UART, Interrupts, and Timers/PWM. 
- 
-===== Software Design ===== 
- 
-===== Conclusions ===== 
- 
-===== Jurnal ===== 
  
pm/prj2026/jan.vaduva/33160.1778355159.txt.gz · Last modified: 2026/05/09 22:32 by tudor_mihai.petcu
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