Table of Contents

Sudoku

Calciu Alexandru, 331CC

Introducere

Voi implementa faimosul joc Sudoku pe un ecran LCD. Acest joc consta in completarea unei matrici 9×9 cu cifre de la 1 la 9 astfel incat sa se respecte urmatoarele constrangeri:

Scopul acestui proiect este acela de gasi un mod de a ma juca Sudoku la cursuri fara reclame.

Descriere generală

Tabla va fi reprezentata pe ecranul LCD de 3.5 inch in mod natural. Navigarea pe tabla se va realiza folosind 5 butoane pentru directiile sus-jos, stanga-dreapta si pentru selectarea cifrei la pozitia curenta. Atunci cand cursorul este pe o anumita cifra se va putea folosi butonul din centru pentru a itera prin cifre. Atunci cand se va muta jucatorul de pe patratica la care a selectat cifra, se va considera ca a completat acea casuta. Atunci cand se va completa o cifra gresit se va emite o avertizare sonora folosind buzzer-ul. Acestea vor fi asezate in cruce pentru a fi cat mai intuitiv. Tabelele de sudoku vor fi selectate aleator dintr-o colectia preincarcata pe placuta.

De asemenea va exista o limita de timp pentru fiecare joc de sudoku, jucatorul putand observa cat timp mai are pe un display LED separat.

Schema bloc este urmatoarea:

Hardware Design

Lista de piese:

Stadiul actual

Schema hardware

In realitate in loc de acel sir lung de pini sunt doua siruri unul peste celalalt dar am preferat sa nu fac asa in Fusion.

Alegerea pinilor

Software Design

Mediu de dezvoltare

VSCode cu extensia PlatformIO

Biblioteci folosite:

Surse:

Cod

E foarte mult de explicat. Sunt vreo 1000 de linii de cod, se mai putea reduce din ele dar am preferat sa ma concentrez sa “make it work” si nu mi-am mai lasat timp ca sa “make it pretty”.

La baza programul este un state machine, iar prin apasarea butoanelor se poate schimba starea sistemului.

O sa descriu design-ul software pe componente logice:

Rezultate Obţinute

Demo:

Concluzii

A fost surprinzator de fun? Exceptand partea de hardware, de aceea nu o sa imi fie dor. Software-ul a fost fun de facut, bibliotecile pentru ecrane sunt foarte usor de folosit si foarte puternice. Mi s-a parut interesant sa lucrez cu un hardware destul de limitat si sa imi adaptez codul pentru conditiile acestea. Cable management-ul putea fi mai bun dar nu ma pricep suficient la DIY ca sa fac ceva in privinta asta si sincer mi-a fost si frica sa nu stric ceva.

Download

Link repository

Jurnal

Bibliografie/Resurse

Resurse Hardware

Resurse Software

Export to PDF