This shows you the differences between two versions of the page.
pm:prj2024:mdinica:andrei.dragomir1401 [2024/05/23 19:16] andrei.dragomir1401 |
pm:prj2024:mdinica:andrei.dragomir1401 [2024/05/27 03:52] (current) andrei.dragomir1401 |
||
---|---|---|---|
Line 56: | Line 56: | ||
} | } | ||
} | } | ||
+ | .title { | ||
+ | font-size: 18px; /* Smaller font size for titles */ | ||
+ | font-weight: bold; | ||
+ | margin-top: 20px; | ||
+ | } | ||
+ | .toggle-button { | ||
+ | background-color: #87CEFA; /* Light blue background */ | ||
+ | color: white; /* White text */ | ||
+ | border: none; | ||
+ | padding: 8px 16px; /* Some padding */ | ||
+ | text-align: center; | ||
+ | text-decoration: none; | ||
+ | display: inline-block; | ||
+ | font-size: 14px; /* Set a font size */ | ||
+ | margin: 4px 2px; | ||
+ | cursor: pointer; /* Pointer/hand icon */ | ||
+ | border-radius: 12px; /* Rounded corners */ | ||
+ | } | ||
+ | .image-container { | ||
+ | display: none; | ||
+ | margin-top: 10px; | ||
+ | } | ||
</style> | </style> | ||
</head> | </head> | ||
Line 91: | Line 113: | ||
</ul> | </ul> | ||
| | ||
- | <h3 id="software-design">Schema electrica</h2> | + | <p> |
- | <img src="https://i.imgur.com/KLG6f9M.jpeg" alt="Hardware Design Image 1"> | + | <button class="toggle-button" onclick="toggleImage('image1')">Vezi Schema Electrică</button> |
- | + | <div id="image1" class="image-container"> | |
- | <h3 id="software-design">Hardware milestone 1</h2> | + | <img src="https://i.imgur.com/KLG6f9M.jpeg" alt="Schema Electrică"> |
- | <img src="https://i.imgur.com/yQM2sp7.jpeg" alt="Hardware Design Image 2"> | + | </div> |
- | + | </p> | |
- | <h3 id="software-design">Hardware milestone 2</h2> | + | <p> |
- | <img src="https://i.imgur.com/cioxv89.jpeg" alt="Hardware Design Image 3"> | + | <button class="toggle-button" onclick="toggleImage('image2')">Vezi Hardware milestone 1</button> |
- | + | <div id="image2" class="image-container"> | |
- | <h3 id="software-design">Hardware milestone 3</h2> | + | <img src="https://i.imgur.com/yQM2sp7.jpeg" alt="Hardware Design Image 1"> |
- | <img src="https://i.imgur.com/HbFsXPM.jpeg" alt="Hardware Design Image 4"> | + | </div> |
- | + | <p> | |
- | <h3 id="software-design">Hardware milestone 4</h2> | + | <button class="toggle-button" onclick="toggleImage('image3')">Vezi Hardware milestone 2</button> |
- | <img src="https://i.imgur.com/3hROTNs.jpeg" alt="Hardware Design Image 4"> | + | <div id="image3" class="image-container"> |
- | + | <img src="https://i.imgur.com/cioxv89.jpeg" alt="Hardware Design Image 2"> | |
- | <h3 id="software-design">Hardware milestone 5</h2> | + | </div> |
- | <img src="https://i.imgur.com/aw3MsaR.jpeg" alt="Hardware Design Image 5"> | + | </p> |
+ | <p> | ||
+ | <button class="toggle-button" onclick="toggleImage('image4')">Vezi Hardware milestone 3</button> | ||
+ | <div id="image4" class="image-container"> | ||
+ | <img src="https://i.imgur.com/HbFsXPM.jpeg" alt="Hardware Design Image 3"> | ||
+ | </div> | ||
+ | </p> | ||
+ | <p> | ||
+ | <button class="toggle-button" onclick="toggleImage('image5')">Vezi Hardware milestone 4</button> | ||
+ | <div id="image5" class="image-container"> | ||
+ | <img src="https://i.imgur.com/3hROTNs.jpeg" alt="Hardware Design Image 4"> | ||
+ | </div> | ||
+ | </p> | ||
+ | <p> | ||
+ | <button class="toggle-button" onclick="toggleImage('image6')">Vezi Hardware milestone 5</button> | ||
+ | <div id="image6" class="image-container"> | ||
+ | <img src="https://i.imgur.com/aw3MsaR.jpeg" alt="Hardware Design Image 5"> | ||
+ | </div> | ||
+ | </p> | ||
+ | |||
+ | <script> | ||
+ | function toggleImage(id) { | ||
+ | var img = document.getElementById(id); | ||
+ | if (img.style.display === "none") { | ||
+ | img.style.display = "block"; | ||
+ | } else { | ||
+ | img.style.display = "none"; | ||
+ | } | ||
+ | } | ||
+ | </script> | ||
+ | |||
+ | <script> | ||
+ | function toggleImage(id) { | ||
+ | var img = document.getElementById(id); | ||
+ | if (img.style.display === "none") { | ||
+ | img.style.display = "block"; | ||
+ | } else { | ||
+ | img.style.display = "none"; | ||
+ | } | ||
+ | } | ||
+ | </script> | ||
| | ||
Line 141: | Line 203: | ||
</li> | </li> | ||
- | <li><strong>Laboratorul 2: Întreruperi</strong> - Gestionarea întreruperilor pentru joystick: | + | <li><strong>Laboratorul 1: UART</strong> - Comunicarea serială pentru debug și afișarea mesajelor în consola serială: |
- | <pre><code>attachInterrupt(digitalPinToInterrupt(JOYSTICK_SW_PIN), joystickISR, FALLING); | + | <pre><code>Serial.begin(9600); |
+ | Serial.println("Approximate your card to the reader..."); | ||
</code></pre> | </code></pre> | ||
</li> | </li> | ||
Line 296: | Line 359: | ||
</code></pre> | </code></pre> | ||
- | <p><strong>Explicați cum, de ce și unde ați realizat optimizări:</strong> Optimizările au fost realizate în gestionarea afișajului LCD și a funcțiilor de citire a UID-urilor pentru a reduce timpul de procesare. Codul a fost modularizat pentru întreținere ușoară: | + | <p><strong>Explicați cum, de ce și unde ați realizat optimizări:</strong> <p>Optimizarea citirii și comparării UID-urilor RFID:</p> |
- | <pre><code>bool isAuthorizedUID(String uid) { | + | <p>Această optimizare a fost realizată pentru a asigura citirea rapidă și compararea eficientă a UID-urilor cardurilor RFID. Funcția <code>convertUID</code> transformă UID-ul citit într-un format string pentru a facilita compararea cu UID-urile stocate ale utilizatorilor autorizați. Această conversie este necesară deoarece UID-urile sunt citite sub formă de byte și trebuie convertite într-un format ușor de utilizat pentru comparare:</p> |
+ | <pre><code>String convertUID(MFRC522 &mfrc522) { | ||
+ | String readUID = ""; | ||
+ | for (byte i = 0; i < mfrc522.uid.size; i++) { | ||
+ | readUID += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "") + String(mfrc522.uid.uidByte[i], HEX); | ||
+ | } | ||
+ | readUID.toUpperCase(); | ||
+ | return readUID; | ||
+ | } | ||
+ | </code></pre> | ||
+ | <p>Prin convertirea UID-urilor la formatul string, codul poate compara eficient UID-urile citite cu cele stocate pentru a verifica autorizarea utilizatorilor:</p> | ||
+ | <pre><code>bool isAuthorizedUID(String uid) { | ||
for (int i = 0; i < uidCount; i++) { | for (int i = 0; i < uidCount; i++) { | ||
if (authorizedUsers[i].uid == uid) return true; | if (authorizedUsers[i].uid == uid) return true; | ||
Line 306: | Line 380: | ||
</p> | </p> | ||
- | <p><strong>Milestone-urile de proiect se prezintă în cadrul laboratorului:</strong> Milestone-urile prezentate includ: | + | |
- | <ul> | + | |
- | <li>Configurarea hardware-ului și testele individuale.</li> | + | |
- | <li>Integrarea RFID cu LCD și buzzer.</li> | + | |
- | <li>Implementarea meniului administrativ și a joystick-ului.</li> | + | |
- | <li>Testarea și validarea sistemului complet.</li> | + | |
- | </ul> | + | |
- | </p> | + | |
</div> | </div> | ||
+ | |||
- | + | <h2 id="video">Video</h2> | |
- | <h2 id="rezultate-obținute">Rezultate Obținute</h2> | + | <p></p> |
- | <p></p> | + | <iframe width="560" height="315" src="https://www.youtube.com/embed/o9jGTlWHWa4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> |
- | <h2 id="concluzii">Concluzii</h2> | + | |
- | <h2 id="download">Download</h2> | + | |
- | <p></p> | + | |
- | <h2 id="jurnal">Jurnal</h2> | + | |
- | <p></p> | + | |
<h2 id="bibliografieresurse">Bibliografie/Resurse</h2> | <h2 id="bibliografieresurse">Bibliografie/Resurse</h2> | ||
- | <p>Listă cu documente, datasheet-uri, resurse Internet folosite...</p> | + | <p><a href="https://github.com/Dragomir1401/PRODUCTIVITY-LOGGER" target="_blank">https://github.com/Dragomir1401/PRODUCTIVITY-LOGGER</a></p> |
</div> | </div> | ||
</body> | </body> | ||
</html> | </html> |