Tenisul de masa, denumit si ping-pong, este un sport in care doi sau, in anumite cazuri, patru jucatori lovesc o minge usoara si de mici dimensiuni, utilizand palete special concepute pentru acest joc, trimitand-o de la unul la celalalt in timp ce o mentin pe suprafata de joc. Suprafata de joc este o masa cu lungimea de 2.74m, latimea de 1.5m și înălțimea de 76cm construita dintr-un material care sa permita producerea unui salt uniform al bilei de ping-pong in orice punct si este împărțită în două jumătăți de un fileu (o plasa care nu permite bilei sa isi continue deplasarea daca nu se afla la o anumita inaltime) de aproximativ 15cm înălțime.
Datorita faptului ca mingea este foarte usoara (are 40mm diametru si o masa de 2.7 grame) aceasta va avea o viteza de deplasare foarte mare si traiectorii imprevizibile atunci cand paleta este manuita cu maiestrie de catre jucator si astfel jocul se desfășoară cu viteză mare și necesită reflexe rapide ale jucatorilor.
Pentru acest proiect nu ne vom propune sa utilizam masa, palete si mingi ci sa construim un joc similar celui de ping-pong insa cu resursele pe care le avem la dispozitie: componente electronice si o platforma Arduino.
Avem mai multe solutii la dispozitie: prima solutie ar fi sa utilizam platforma de dezvoltare Arduino impreuna cu un afisaj LED sau TFT care vor deveni suprafata de joc (masa) si pe care vor fi prezentate doua linii (paletele) ce se pot deplasa utilizand butoane (intrerupatoare cu revenire) sau poate chiar un joystick si un punct care se va deplasa pe afisaj in functie de unghiul in care este atinsa de "paleta". Acest tip de joc ar fi similar celui disponibil la adresa web https://www.ponggame.org/ si vom prezenta modalitatea de a-l realiza in cadrul altui articol.
A doua solutie este sa utilizam LED-uri care se aprind alternativ simuland astfel deplasarea bilei de ping-pong. Exista insa o problema esentiala: vom avea nevoie de un numar foarte mare de LED-uri pe care trebuie sa le conectam la Arduino, insa avem o solutie pentru aceasta: sa utilizam o banda cu LED-uri controlate de circuite integrate WS2812B (LED-uri denumite si NeoPixel).
Banda cu LED-uri NeoPixel poseda trei pini marcati cu 5V - ce va fi conectat la polul pozitiv al unei surse de alimentare de 5V, GND - ce va fi conectat la polul negativ al sursei de alimentare si la pinul GND al Arduino si DIN (sau D) - pinul prin intermediul caruia sunt receptionate date de la Arduino.
Fiecare dintre segmentele NeoPixel contine un circuit integrat WS2812B si o capsula de 5 x 5mm in care se regasesc 3 LED-uri: unul rosu, unul verde si unul albastru (RGB - red, green, blue) fiecare dintre acestea permitand 256 de niveluri de luminozitate ceea ce inseamna ca, utilizand aceste segmente, vom putea produce 256 x 256 x 256 = 16.777.216 de culori sau nuante ale acestora. Aceasta inseamna ca datele transmise catre modulele NeoPixel sunt formate din 24 de biti (cate 8 biti pentru fiecare dintre culorile de baza: rosu, verde si alabastru). Un aspect de care trebuie sa tinem cont este acela ca, la intensitate maxima, un segment poate consuma un curent de aproximativ 60mA. Oricum ar fi, limita minima pe care trebuie sa o luam in considerare atunci cand alegem alimentatorul este de 20mA pentru un segment. Referitor la modalitatea in care putem controla aceste LED-uri, nu este necesar sa ne definim propriile functii deoarece avem la dispozitie biblioteca Adafruit NeoPixel by Adafruit.
Descrierea proiectului
Ne propunem sa utilizam o banda cu LED-uri NeoPixel si intrerupatoare cu revenire, impreuna cu platforma de dezvoltare Arduino pentru a construi un joc similar celui de ping-pong. In plus, vom utiliza si un difuzor pentru a indica deplasarea bilei (simulata, evident, de iluminarea unuia dintre LED-urile de pe banda NeoPixel) si pentru alte efecte acustice. Deoarece mi s-a parut foarte interesant, am preluat ideea acestui proiect, impreuna cu codul sursa, de pe site-ul web www.vagrearg.org, unde veti gasi si alte idei de proiecte.
Vom avea urmatorul set de reguli pentru jocul nostru, pe care l-am denumit P1ng P0ng:
Schema electrica
Schema electrica este destul de simpla. Avem urmatoarele conexiuni electrice:
Arduino D2 --> DIN banda LED (atentie, banda LED NeoPixel are un pin DIN si unul DO - data out - conectati Arduino intotdeauna la DIN, in sensul indicat si de catre sageata imprimata pe cablajul benzii cu LED-uri), Arduino D4 --> term1nal 1 buton "paleta" dreapta, term1nal 2 buton "paleta" dreapta --> GND, Arduino D5 --> term1nal 1 buton "acceleratie" dreapta, term1nal 2 buton "paleta" dreapta --> GND,