“Magia numerelor”

In trecut a existat o atitudine ostila fata de toate stiintele si in special fata de matematica. Imparatul bizantin Justinian a inclus in codul sau de legi din anul 529 un capitol intitulat Despre raufacatori, matematicieni si altii de acest fel , in care un paragraf graia astfel: “Arta matematicii – cea mai demna de condamnat – este cu desavarsire interzisa”. Iar legea imparatului Teodosie preciza ca “Nimeni sa nu se sfatuiasca cu vreun ghicitor sau matematician”. Nu o data matematicienii erau porecliti vrajitori, pentru ca puteau scoate lucruri uimitoare din cifre sau numere.

Cu riscul de a deveni si tu vrajitor, te rog sa incerci urmatoarele jocuri cu astfel de trucuri matematice.

Nota: Pentru a rula jocurile ai nevoie de Java JRE (download aici).

EDIT 18.09.2009:

Un nou joc a fost adaugat! Verifica pagina mentionata mai sus.

EDIT 24.09.2009:

Un nou truc cu numere a fost adaugat! Disponibil pe pagina de mai sus.

EDIT 28.09.2009:

Un nou joc intitulat “Ziua ta de nastere” a fost adaugat.

RobotEye

RobotEye este un sistem real-time hibrid, ce are ca scop urmarirea punctelor luminoase. Pe scurt, robotul “observa” o sursa de lumina, ii analizeaza traiectoria, si in functie de cum a fost programat, reactioneaza ca atare. Pentru observarea punctului luminos am folosit o camera web obisnuita, plasata pe un sistem mobil cu 2 grade de libertate (RobotHead). Fluxul de imagini preluat de camera web este transmis la un PC, unde se proceseaza si se decide actiunea (motorie): deplasarea sistemului intr-una din pozitiile sus, jos, stanga, dreapta; acest fapt simuleaza reactia robotului la lumina: el se va indrepta in directia indicata de punctul luminos. Pentru generarea punctului luminos e de preferat sa se utilizeze lumina laser, pentru o cat mai buna detectie a spotului luminos.

Asadar, RobotEye este format din 3 componente:

  • sistemul hardware de deplasare (RobotHead)
  • programul software de procesare a imaginii
  • circuit electronic de conditionare a semnalului (driver)

Sistemul hardware de deplasare trebuie sa permita deplasari atat in planul orizontal (pentru directiile stanga-dreapta) cat si in planul vertical (sus-jos); de acest lucru se ocupa 2 motorase, eventual trecute printr-un angrenaj. Personal am utilizat 2 motorase extrase din casetofoane vechi. Angrenajul este util atat pentru reducerea vitezei motorului cat si pentru cresterea fortei de lucru. Si da, este nevoie de un pic de forta: daca motorul planului vertical are doar sarcina deplasarii senzorului optic(a camerei web), motorul de jos – pentru planul orizontal – trebuie sa roteasca intreg planul motorului vertical, incluzand camera web. Sistemul hardware nu este greu de realizat, e
nevoie doar de rabdare.

Programul software de procesare a imaginii utilizat in proiect este tip Motion Detector (open-source) pe care l-am modificat, introducand partea de reactie a robotului (directia de deplasare functie de directia spotului luminos). Mai jos este linkul de download al programului executabil, cat si al codului sursa.

[RobotEye_bin],
[RobotEye_src]

Principiul pe care se bazeaza interpretorul e simplu: imaginile primite de la camera web sunt analizate color, se ignora fundalul si se retine traiectoria luminoasa a punctului luminos (care la un moment dat devine o linie <rosie, daca se utilizeaza lumina laser>); aceasta este parametrizata, cunoscandu-i-se punctul de inceput si cel de sfarsit. Daca linia parametrizata este de la Nord la Sud de exemplu, este generata o miscare in jos capului robotului. Idem pentru celelalte directii. Generarea miscarii presupune furnizarea unui impuls de iesire circuitului electronic driver. Pentru cele 4 directii este nevoie de un registru de 4 biti: in acest scop a fost utilizat portul paralel al PC-ului, anume primii 4 biti din registrul de date (D0-D3). La fiecare directie a spotului detectata, programul raspunde, deci, prin “aprinderea” unuia din cei 4 biti.

Circuit electronic driver are rolul de a prelua comanda transmisa de PC prin portul paralel, si de a o transforma in miscare fizica (va actiona motorul corespunzator in directia corespunzatoare). Circuitul este format din 2 circuite in punte H si eventual circuite de izolare electrica. (pentru izolare se poate folosi circuitul prezentat in cadrul articolului Controler GSM pentru actionari la distanta). In functie de puterea motoraselor, circuitele in punte difera prin tipul de tranzistori utilizati. Pentru motorase de putere mica se poate utiliza schema de aici

Bolt_smokeless_Hbridge

Pentru fiecare din cele 2 motoare se va construi un astfel de circuit. Aplicarea unui potential 5v (‘1’ logic) pe una din intrarile A sau B si potentialul masei (‘0’ logic) pe cealalta echivaleaza cu rotirea motorului intr-o directie; inversarea potentialelor inverseaza si directia de deplasare a motorului. Asadar, daca notam A1,B1 intrarile pentru primul motor (A1-stanga, B1-dreapta) si A2, B2 intrarile pentru al doilea motor, combinatiile de 4 biti pentru A1 B1 A2 B2 au urmatoarea insemnatate:

0 0 0 0 – stationare totala
0 0 0 1 – motorul 1 stationeaza, motorul 2 se misca la dreapta
0 0 1 0 – motorul 1 stationeaza, motorul 2 se misca la stanga
0 0 1 1 – stationare totala
0 1 0 0 – motorul 1 se misca la dreapta, motorul 2 stationeaza
0 1 0 1 – ambele motoare se misca la dreapta
0 1 1 0 – motorul 1 se misca la dreapta iar motorul 2 la stanga
0 1 1 1 – motorul 1 se misca la dreapta, motorul 2 stationeaza
1 0 0 0 – motorul 1 se misca la stanga, motorul 2 stationeaza
1 0 0 1 – motorul 1 se misca la stanga iar motorul 2 la dreapta
1 0 1 0 – ambele motoare se misca la stanga
1 0 1 1 – motorul 1 se misca la stanga, motorul 2 stationeaza
1 1 0 0 – stationare totala
1 1 0 1 – motorul 1 stationeaza, motorul 2 se misca la dreapta
1 1 1 0 – motorul 1 stationeaza, motorul 2 se misca la stanga
1 1 1 1 – stationare totala

Ex. Daca dorim deplasarea oblica SV-NE, copiem in registrul paralel de date valoarea 5 (z) = 0101 (b)

vHappyWindows

softpedia award

vHappyWindows este un software interactiv: pornesti playerul de muzica preferat (sau orice soft care solicita sistemul de sunet), iar programul va face ca ferestrele active sa danseze in ritm cu muzica (dupa un tip de dans specificat, am implementat putine deocamdata)

vhappywindows

Pentru o functionare buna programului, trebuie facute niste setari rapide:

  • in mixerul audio sa fie selectat un canal de inregistrare (eventual cel total) sau sa nu fie pe mute; deasemenea nivelul de inregistrare trebuie sa fie la maxim pentru o sensibilitate buna a canalului (pentru cei ce nu stiu cum se face – in Windows XP: Control Panel/Sounds and Audio devices/butonul Advanced pentru a porni mixerul<sau mai simplu dublu click pe instanta de langa ceas>. Apoi Options/Properties/Recording si faceti setarile de mai sus)
  • in dosarul programului e un fisier ‘sensibility.txt’ unde se selecteaza sensibilitatea (pragul) de dans (pentru ca amplitudinea semnalului difera de la calculator la calculator, testati si gasiti o valoare potrivita, in caz ca cea implicita 150 nu e corecta).

Prima fereastra (din foreground) va fi manipulata de program si facuta sa danseze, nu conteaza ce tip de fereastra este (Winamp, Yahoo messenger etc)

Download link

——————–

LATER EDIT:

Versiunea 1.1 este disponibila! Imbunatatiri:

  • Iconita in system tray; programul poate fi acum ascuns langa ceas
  • Dansuri pentru cursorul mouseului
  • Dansuri pentru tastatura (LED-urile tastaturii clipesc in ritmul muzicii!)
  • Full party mode
  • Alte cateva elemente minore (un fel de easter eggs)

vhappywindows11

Download HappyWindows v1.1

Configurare necesara pentru functionare pe Windows 7 / Vista:

1. Click dreapta pe iconita audio din system tray, langa ceas, si selectati “Recording devices” pentru a selecta deviceurile de inregistrare.

stereo_mix

2. In fereastra nou aparuta, sunt listate dispozitivele audio de inregistrare. Click dreapta intr-o zona libera din aceasta fereastra, si asigurati-va ca atat “Show disabled devices” cat si “Show disconnected devices” sunt bifate.

stereo_mix_2

3. Click dreapta pe “Stereo Mix” si selectati “Enable” pentru activarea sa.

stereo_mix_3

4. Click dreapta din nou pe “Stereo Mix” si selectati “Set Default Device”.

Porniti aplicatia vHappyWindows in timp ce ruleaza melodia preferata in playerul dvs, si setati progresiv sensibilitatea aplicatiei in fisierul “sensibility.txt”. Dupa fiecare setare a sensibilitatii trebuie sa restartati aplicatia vHappyWindows.

SimOne

SimOne este un proiect la care am lucrat cateva saptamani, anume un simulator uman. Am implementat o varianta pentru telefoane mobile (vezi sectiunea J2Me) si incepusem sa lucrez la varianta pentru PC, dar din pacate am abandonat proiectul din lipsa de timp. Scopul final era indraznet, anume demonstrarea interactiunii om-masina si obtinerea unui agent semi-inteligent, capabil de discutii formale si gesturi umane. Sursa de inspiratie: filmul S1m0ne, cu Al Pacino; trailerul filmului aici:

Proiectul de fata foloseste engine-ul grafic Irrlicht (open-source) si un model din 3d Studio Max, texturat si importat in engine. Au fost implementate miscari de baza ale camerei, clipirea pleoapelor modelului; urma sa adaug miscarea buzelor conform sistemului de vorbire, si sistemul de vorbire -care in mare parte era finalizat (vezi articolul Conversatie formala cu o masina de calcul). Poate pe viitor o sa abordez din nou lucrarea.

 

frame2aframe3a

frame4aframe5aframe6aframe7aframe9aframe8a

Controler GSM pentru actionari la distanta

Acest articol exemplifica actionarea si controlul unui sistem aflat la distanta, cu ajutorul telefonului mobil, si fara costuri din creditul abonamentului dvs. Instrumente necesare:

  • Un telefon mobil vechi (care va fi modificat)
  • O cartela SIM valida (pe care se pot primi apeluri)
  • Circuitul electronic (driver), prezentat mai jos:

mobil

VDD – semnalul de comanda (1,2V), preluat de la vibratorul telefonului

VCC – semnal extern de sarcina (3-6V), care alimenteaza sistemul comandat

J1 – intrerupator virtual de comanda (in cazul de fata, echivalent cu apelarea numarului telefonului utilizat)

U1 – optocuplor (4n35,CNY17,PS2652 sau echivalent), realizeaza izolarea electrica a circuitelor si protejeaza telefonul mobil de tensiuni parazite.

R1 – rezistor 1K

Q1 – tranzistor npn (2N2222 sau echivalent)

D1 – dioda (1N4007 sau echivalenta)

XMM1 – sarcina (motorul sau circuitul ce se doreste actionat).

NOTA:  Pentru obtinerea semnalului de comanda de la telefonul mobil este necesara desfacerea cu grija a carcasei si lipirea a 2 fire pe terminalele vibratorului. Lucrati cu grija pentru a nu deteriora placa de baza a telefonului!

ansamblu

Acvaristica: Hranitor automat pentru pesti

Sistemul de hranire al pestilor este format din 4 parti:

  • camera de furnizare a hranei
  • controlerul Pornit/Oprit
  • circuit de conditionare semnal
  • alimentator de tensiune

Camera de furnizare a hranei contine cutia de depozitare a hranei (grauntelor) prevazuta cu un sistem de deschidere si o usita. Pot fi imaginate mai multe metode de constructie, de exemplu cu spirala sau cu arc:

food releaser

Un motoras va actiona, in ambele cazuri, deschiderea (usita); motorul trebuie sa aiba un consum mic, pentru sa salva cat mai mult bateriile.

Controlerul Pornit/Oprit este sistemul care comanda actionarea motorului si decide cand trebuie eliberata hrana. Actionarea se poate face in functie de evenimente externe sau interne sistemului, cu diferite grade de complexitate, si poate fi automata sau manuala. Pentru comanda manuala la distanta folosind un telefon mobil, verificati articolul despre controlerul de actionare prin GSM. Personal am utilizat ceasul de la controlerul ZelioLogic Smart Relay. Scopul este de a obtine un semnal de 0V in modul de asteptare si >0V (de obicei 5V) pentru declansare.

Circuitul de conditionare a semnalului este driverul sistemului, si are rol de actionare a motorului la cerere (la aparitia unui semnal HIGH la intrare); circuitul este interpus intre sistemul de comanda (controlerul Pornit/Oprit) si camera de furnizare a hranei (catre motor). Nu este absolut necesar, dar este util pentru protectia circuitului de comanda si obtinerea semnalului dorit la iesire:

mobil

Alimentatorul de tensiune trebuie sa furnizeze suficienta putere pentru a alimenta atat motorul cat si circuitul driver. Pentru a evita eventuale intreruperi de tensiune se recomanda utilizarea de baterii sau acumulatori. In sistemul de fata este utilizat un alimentator de retea, de 5 v si 600 mA.