This is an old revision of the document!
Proiectul “Capacitive Whac-A-Mole” este o varianta digitala si interactiva a jocului clasic de tip arcade. In loc de a folosi un ciocan fizic si butoane mecanice, acest proiect utilizeaza capacitatea electrica a corpului uman pentru a detecta atingerea.
Scopul: Scopul principal al acestui proiect este implementarea unui joc de viteza si reactie folosind senzori capacitivi construiti manual.
Ideea de la care am pornit: Conceptul a fost inspirat de proiectele de tip “Pian din banane”. Totusi, in loc sa utilizez input-ul capacitiv in mod pasiv (pentru a genera note muzicale), acest proiect transforma input-ul intr-un joc activ, bazat pe logica, cu un sistem de scor, dificultate crescatoare si feedback vizual/audio.
Utilitate: Serveste drept o demonstratie excelenta a modului in care corpul uman poate actiona ca un dielectric intr-un condensator, inchizand un circuit electric. Pentru dezvoltator, este o aplicatie practica excelenta pentru timere hardware, masini de stare (state machines) si manipularea directa a registrilor in limbajul C.
Sistemul este centrat in jurul microcontrolerului ATmega328P. Bucla de interactiune este urmatoarea:
Lista de piese (BOM):
Conexiuni si maparea pinilor:
SEND (PC2) este conectat la toate cele 6 tinte prin rezistente individuale de 10 MΩ. Tintele sunt, de asemenea, conectate direct la pinii de RECEIVE (Portul B: PB0 - PB5).PD2 - PD7) prin rezistente de 330 Ω catre masa (GND).PC3.PC4) si SCL (PC5).Mediu de dezvoltare: Firmware-ul a fost dezvoltat folosind Microchip Studio (Atmel Studio) / AVR-GCC, scriind cod exclusiv in C si manipuland direct registrii hardware.
Biblioteci folosite:
<avr/io.h> si <util/delay.h> pentru operatiunile standard AVR.<stdlib.h> pentru generarea de numere pseudo-aleatoare (rand(), srand()).Algoritmi si Implementare:
SEND pe HIGH si numararea iteratiilor/ciclurilor necesare pentru ca pinul de RECEIVE sa ajunga tot in starea HIGH. Din cauza rezistentei mari de 10 MΩ, corpul uman actioneaza ca un condensator cand atinge tinta, incetinind cresterea tensiunii. Daca numarul de cicluri depaseste o valoare calibrata (THRESHOLD), este inregistrata o atingere valida.srand() este initializata folosind o variabila ce numara iteratiile scurse pana cand utilizatorul apasa butonul de start.Proiectul a transformat cu succes un concept pasiv de citire capacitiva intr-un joc arcade extrem de responsiv si distractiv.
THRESHOLD.Dezvoltarea acestui proiect a reprezentat o experienta practica excelenta in gestionarea comportamentelor de tip analogic intr-un sistem complet digital. Principala provocare a fost calibrarea pragului capacitiv (threshold), deoarece valorile citite fluctuau usor in functie de grosimea firelor si de suprafata de contact a tintelor. Per total, proiectul demonstreaza ca se pot construi interfete interactive robuste folosind un numar minim de componente si algoritmi inteligenti de cronometrare.