Proiectul meu constă în implementarea unui dispozitiv automat care amestecă un pachet de carți de joc.
Scopul este de a oferi o soluție convenabilă și rapidă pentru amestecarea cărților, eliminând nevoia de a le amesteca manual. De asemenea, nu mai este posibila trișarea!
Am văzut un dispozitiv asemănător, însă respectivul produs era manual si trebuia folosită manivela pentru a amesteca pachetul de cărți. M-am gândit că ar fi interesant să transform acest proces intr-unul automat.
Cum am menționat mai sus, nu mai este posibilă trișarea. Astfel, putem avea un joc cât mai corect. In plus, aparatul poate fi util pentru jucătorii de poker sau blackjack; sau chiar pentru cazinouri și cluburi de jocuri.
La pornirea dispozitivului:
Pornirea amestecării:
Arduino Uno ofera PWM (Pulse Width Modulation) pe pinurile 3, 5, 6, 9, 10 si 11. Astfel, pentru a controla viteza celor doua motoare, am folosit pinul 10, care, adaugat in breadboard am scos alte 2 fire pentru a le conecta pe porturile ENA si ENB din L298N. Modului Bluetooth funcționează la o tensiune de alimentare de 3.3V, contribuind la menținerea unui consum redus de energie.
Pentru implementarea software am folosit Arduino IDE. Pe parcursul implementarii proiectul, m-am decis să ofer disponibilitatea utilizatorilor de a gestiona viteze de mestecare a cartilor.
SoftwareSerial
pentru a crea o interfață serială suplimentară pe pinii digitali 12 și 13 (Rx și Tx) pentru modulul. Apoi, comunicarea serială a fost configurată la o viteză de baud de 9600 bps, atât pentru seriala hardware, cat și pentru cea software. Aceasta este o valoare comună și fiabilă pentru transferul de date între microcontroller și modulul Bluetooth. Utilizand bt.read()
, dispozitivul primește date de la modulul Bluetooth, permițându-mi să controleze dispozitivulenPin
este configurat ca pin de ieșire PWM care controlează viteza motoarelor. Utilizând funcția analogWrite(enPin, motorSpeed)
, valoarea PWM (cuprinsă între 0 și 255) determină viteza motorului.LiquidCrystal_I2C
, care a facilitat procesul de controlare al ecranului, am reușit să controlez ecranul cu succes. setup()
updateInsertedState()
inserted
e 1, altfel, 0. displaySpeedSelection()
updateSpeedDisplay()
displayShufflingMessage()
doneMessage()
startMotors(int motorSpeed)
displayErrorMessage()
stopMotors()
loop()
Rezultat final: https://www.youtube.com/watch?v=CSkBXTHyeMI
Tin să menționez faptul că suportul nu este cel mai perfect, iar procesul de amestecare nu este cel mai bun.
card_shuffler.ino
care contine logica proiectuluiHCSR04-ultrasonic-sensor-lib-2.0.2.zip
arhiva pentru biblioteca HCSR04LiquidCrystal_I2C-1.1.2.zip
arhiva pentru biblioteca LiquidCrystal_I2C
Arhiva → proiect_pm.zip