Sari la conținut
ELFORUM - Forumul electronistilor

pian "virtual" conectat direct la calculator


Vizitator Zozel

Postări Recomandate

Sa va explic putin mai in detaliu ce as vrea sa fac. Ca sa fiu direct: un pian "virtual" conectat direct la calculator. Vreau sa fac uncircuit care sa trimita diferite pulsatii de curent la un pin al microcontrollerului prin punerea in paralel a unei componente electricela apasarea unui "intrerupator",iar "intrerupatorul" va fi de fapt una din clape, care la apasare va face un contact electric si va pune ceva in circuit astfel incat "CEVA" de la pinul microcontrollerului se va modifica - asa l-am gandit deocamdata. Asadar fiecare clapa va fi de fapt un "buton", care, atunci cand este apasat introduce in circuitul meu o anumita componenta care modifica curentul, sau de fapt ORICE parametrudetectabil de la pinul microcontrollerului. Cred ca v-ati dat seama deja ca in functie de acest parametru microcontrollerul va generapulsatii infrared pe care le va trimite la receptorul meu PRINTR-UN anumit protocol care trebuie sa fie caracterizat de RAPIDITATE.Dupa ce calculatorul va fi citit datele ce vin de la receptor (adica de fapt softul meu o va face), programul meu (pianul virtual) vaproduce un anume sunet in functie de sirul de biti receptionati de TSOP1738-ul meu. Ceea ce nu stiu deocamdata este: - cum sa contruiesc circuitul in asa fel incat sa pot diferentia fiecare clapa cu programul pe care-l voi uploada pe microcontroller - cum sa trimit trenul de pulsatii prin emitatorul meu, si aici ma refer la: protocol, idee de trimitere - de exemplu eu ma gandesc sa trimit 61 de biti la fiecare apasare de clapa care sa caracterizeze starea fiecarei clape (intrucat pianul va avea 61de clape)O alta posibilitate ar mai fi sa folosesc eu un timer in microcontroller si sa-l las pe el sa verifice constant starea clapelor, idee care nu e exclusa, chiar as putea sa o folosesc doar ca trebuie sa ma gandesc cum rezolv prima problema - "cum sa construiesc circuitul in asa fel incat sa pot diferentia fiecare clapa cu programul pe care-l voi uploada pe microcontroller"Dap...v-am spus tot :rade: sper ca ma puteti ajuta! :da Mersi!

Link spre comentariu
  • Răspunsuri 8
  • Creat
  • Ultimul Răspuns

Zile populare

Exact, un modul TSOP17xx nu face altceva decat sa scoata un 1 logic la iesire atunci cand la intrare se aplica un semnal infrarosu cu frecvanta xx KHz. Mai departe ramane de vazut daca folosesti un protocol dedicat sau proprietar, ce lag introduce TSOP-ul etc.Tot ce pot sa spun despre 'clape' este ca am avut un coleg care incerca sa faca un sintetizator inspirandu-se dintr-un Korg, nu mai stiu modelul. De la el am aflat ca intarzierile sunt critice si sunt o problema la astfel de proiecte/protocoale. Zicea ca tot ce depaseste 50 ms (50?ms aici nu sunt sigur) este inacceptabil. Deci trebuie sa ai intarzieri cat mai mici si EGALE pentru orice clapa apesi. El spunea ca o ureche antrenata simte diferente de cateva milisecunde. De asta pentru placile de sunet folosite la montaj audio se fac drivere de sunet ASIO, cu lag foarte mic, diferite de driver-ele de uz comun cum ar fi cele pentru jocuri si multimedia.Idei pentru citirea claviaturii ar fi multe, de la o abordare directa, de genul fiecare clapa are un contact care este citit de microcontroller (uC) pe un pin, codat si trimis mai departe spre calculator. Exista uC care au hardware functia de Interrupt On Change si care genereaza o intrerupere cand se schimba starea unui pin. Intreruperea o faci sa codeze nota apasata si sa o trimita cat mai repede. Se gasesc uC cu 3-4 porturi de 8 biti. Alta metoda ar fi sa pui un divizor rezistiv intre intrerupatoarele fiecarei clape si cand apesi ceva se va schimba tensiunea pe pinul uC. Exista uC cu convertoare ADC, citesti tensiunea si trimiti nota la calculator. Ultimul racnet de claviatura am auzit ca sunt cele care pot citi si forta (de fapt viteza) de apasare, dar sa nu exageram...Referitor la protocoale citeste si despre MIDI, s-ar putea sa vrei sa fii compatibil (si) cu el.Daca as vrea sa ma apuc de asa ceva probabil as alege un uC pe 8 biti din familia AVR. Pe 8 biti am lucrat cu Z80 si cu PIC-uri dar cu timpul am trecut la AVR pentru ca erau mai rapide, hardware-ul lor era mai bogat si mai clar, softul se scria mai usor pentru ca dispuneau de RAM mai mult si nepaginat, etc.Nu e de neglijat nici partea mecanica, s-ar putea sa devina o problema mai complicata decat electronica si softul la un loc. :rade: Foarte interesant proiectul tau, spor la treaba!

Link spre comentariu
Vizitator Zozel

Ideea initiala a pianului era un pic complicata si cam greu de realizat - acum imi dau seama ca si cu microcontroller este la fel de complicata. In atasament este o imagine care sugereaza cam cum ma gandesc sa fac...initial microcontrollerul era inlocuit de un voltmetru, dar care nu avea precizie destul de mare...si nici asa nu-mi dau seama daca ar functiona...cea mai mare problema este timingul - trebuie sa gasesc o modalitate ca la apasarea a k clape aparent deodata sa stiu exact care au fost apasate - este dificil, nu prea imi vin idei, dar asta si pentru ca sunt incepator si nu stiu despre electronica decat despre legile fundamentale (Ohm, Kirchoff), despre rezistente si rezistori, despre intrerupatoare, diode, tranzistori si cam atat...nu reusesc sa dezvolt o idee pentru ca pur si simplu nu stiu asa multe despre electronica.Vezi atasamentul - iti vei da seama cam cum ma gandesc sa fac...ma gandesc totusi ca folosind microcontroller se poate face...Daca as sti mai multe despre microcontrollere, probabil as regandi ideea ;))De exemplu, ma intereseaza legatura intre partea de programare si microcontroller - ce functii pot folosi si ce fac acestea cu raportare la microcontrollerul in sine?...unde pot gasi de exemplu totalitatea functiilor folosibile pentru uC-ul ATTiny13?EDIT: in desen m-am cam grabit :)) acum imi dau seama ca circuitul nu se prea inchide :)) in fine, nu-l mai redesenez, sper ca ideea s-a inteles - oricum prin desen nu am vrut decat sa va ilustrez cam cum m-am gandit sa fac circuitul

Link spre comentariu

Un uC nu e chiar asa de complicat dar numai dupa ce te familiarizezi cu el. In doua vorbe un uC este un mic calculator care are de toate pe o singura pastila de siliciu. Are in aceeasi capsula si memorie RAM si memorie EPROM si porturi si convertoare analog-numerice ADC (Analog to Digital Converter) care pot converti o tensiune intr-un numar, si unitate centrala de calcul, si porturi digitale de intrare sau de iesire, adica pini cu care poti citi starea unor butoane sau poti aprinde niste LED-uri si poti comanda alte echipamente, numaratoare de impulsuri, temporizatoare, PWM (Pulse Width Modulation) si multe altele, toate in aceeasi capsula, comandabile dupa cum vrei tu in limbaj de asamblare sau limbaje de nivel inalt cum ar fi BASIC sau C si la preturi incepand de la 1-2 euro. Suna prea frumos ca sa fie adevarat, nu? :rade: Daca te descurci cu engleza incearca sa citesti datasheet-ul de la un uC cum ar fi ATtini13 sau chiar ATmega32 sau ATmega128. Sunt cam acelasi lucru dar ultimile au mai multa memorie si mai multi pini la care te poti lega cu claviatura ta, fiecare nota la un pin sau cu citirea tensiunii, toate notele la un pin, ramane doar sa experimentezi si sa vezi care merge mai bine si ce vrei. :101

Link spre comentariu
Vizitator Zozel

Pai ce sa zic...mie mi-a venit greu intotdeauna sa invat singur, desi cam asa se intampla cam dintotdeauna. Sunt pasionat de informatica, deci aici nu ma deranjeaza sa invat singur si chiar am rabdare, pentru ca imi place foarte mult. Dar cand imi vine o idee care ma duce si spre alte domenii cum ar fi electronica de exemplu - aici lucrurile se complica - asta deoarece nu dau peste acest domeniu cu scopul de a invata mai multa electronica (cel putin nu direct cu acest scop), ci pur si simplu pentru ca vreau sa-mi pun in practica ideea. Daca ar fi fost sa fiu pasionat de electronica, as fi avut rabdare sa invat progresiv tot ce tine de ea...adevarul e totusi ca imi place cam tot ce tine de partea reala - fizica, matematica, chimia, etc...si chiar imi place foarte mult sa fac legaturi intre tot ce ma inconjoara, doar ca rabdarea de a invata nu se distribuie in proportii egale in fiecare domeniu - asta poate pentru ca sunt dezorganizat, si mi se pare si normal, pentru ca nu pot avea o formula de a invata ordonat atat timp cat nu sunt coordonat de nimeni.Acum insa ca de fiecare data, tot ce vreau e sa-mi pun in practica ideea cat mai repede - de aceea nu prea am rabdare sa citesc fiecare pagina de pe internet cu orisice fel de informatii - mai ales ca invat singur - nu prea are cine sa-mi impartaseasca informatiile de care am nevoie tocmai pentru ca nu prea cunosc persoane care sa stie mai multe in legatura cu aceste domenii - il mai intreb pe proful de fizica dar intrucat el nu prea are practica, imi explica la nivel teoretic si na, iti dai seama ca nu-mi poate clarifica toate intrebarile pe care i le pun...aa si mai vorbesc si cu vanzatorul de la magazinul de la care mai cumpar componente cand ma hotarasc sa fac un circuit :rade: . Tocmai de aceea am decis sa va cer ajutorul voua, celor de pe forum intrucat aveti EXPERIENTA PRACTICA. George, mersi de raspunsuri si de sfaturi si pt ca ai vorbit cu moderatorul. Inteleg ca nu prea ai timp sa-mi raspunzi la toate intrebarile si apreciez ori de cate ori se primesc ajutor, pe orice forum.Cred ca pana la urma o sa-mi iau un uC si o sa incep sa experimentez singur.Ce speram eu insa era ca intr-un timp cat mai scurt sa reusesc sa fac ce mi-am propus, fara sa trebuiasca sa pierd saptamani invatand. Acum m-am convins ca treaba e putin mai complicata si m-am decis sa incep sa pasesc putin mai rar :da . Ma duc azi sa-mi iau un uC simplu - probabil chiar ATTiny13-ul si ma apuc de experimente :nebun: Mersi inca o data!

Link spre comentariu

Stai linistit, nu vei pierde saptamani, cel mult cateva ore sau zile.Microcontrollere = 99% informatica si 1% electronica sau mai exact fizica gen kirchhoff, ohm, etc.Oricum, pentru ce vrei tu va fi cam greu fara un microcontroller. In locul tau as face rost de un ATtiny13 daca sunt stramtorat cu banii, asta costa cam 5 lei, sau la vreo 15 lei as lua un ATmega8 care e cam acelasi lucru dar cu mai multi pini si mai multa memorie. Daca poti ar fi bun un ATmega32 sau chiar mai mare, ATmega64 sau ATmega128. Astea costa ceva mai mult dar pana in 50 RON. Oricum iti trebuie ceva ca sa incepi sa iti pui ideile in practica, altfel raman doar vorbe goale.

Link spre comentariu
Vizitator Zozel

Normal, sunt de acord cu tine - atat timp cat nu e practica, totul se rezuma la vorbe - asta ziceam si despre proful de fizica ;))Doar ca eu am tendinta - buna sau rea - de a vrea sa inteleg totul :)) adica...vreau sa stiu de ce se intampla anumite lucruri. Pentru mine a invata pur si simplu luand si copiind anumite circuite de pe net e foarte superficial, desi, recunosc iti raman informatii in minte, dar nu cele esentiale. De exemplu, am si uitat exact circuitul receptorului infrarosu :rade: daca vreau sa-l fac din nou trebuie sa ma uit pe imaginea aia din atasament - si asta pentru ca nu m-am chinuit sa inteleg exact ce se intampla, cum se transmite semnalul prin pinul serial, etc... Cand invat practic, totul imi ramane intiparit in memorie pentru mult timp.Cred ca o sa-mi iau un AtTiny13, dar acum mi-am pus de o baie...ma uit pe net si incerc sa gasesc un circuit care sa ma lase sa il programez.Stii sau stiti vreunul deja?

Link spre comentariu

Ca sa programezi un ATtiny sau ATmega trebuie mai intai sa scrii programul pe un PC. Exista mai multe compilatoare pentru diferite limbaje: C, Basic, Assembler si altele. Depinde cu care esti obisnuit. Alege-ti unul si pe urma mai vedem. Dupa ce ai scris programul il poti simula pe PC. Apoi 'versi' programul facut de tine in 'burta' microcontroller-ului si vezi cum merge in realitate. Adica scrii programul tau in memoria flash a uC-ului, cu alte cuvinte il programezi. Ca sa il scrii ai nevoie de un PC si un programator de microcontrollere. Cel mai simplu programator consta din 5 sarme legate intr-un capat la portul paralel al PC-ului iar in celalalt capat la uC-ul tau. Cu ajutorul programatorului si al unui soft dedicat se scrie uC-ul.

 

Inainte de orice incearca sa iei datasheet-ul de la uC-ul pe care ti l-ai ales si sa te uiti peste el.

Il gasesti la producator, adica firma Atmel: http://www.atmel.com/dyn/resources/prod ... /2535s.pdf

 

Daca spui ca iti place sa intelegi in detaliu cum functioneaza lucrurile atunci asta e foarte bine.

 

Pentru inceput incearca sa vezi cam ce contine un uC si ce poti face cu el. Daca nu e suficient de clar in datasheet-ul producatorului atunci cauta niste lectii introductive pe net despre uC de tip AVR.

 

Pe urma incearca niste programe mai simple cum ar fi sa aprinzi un LED, sa-l faci sa clipeasca, pe urma sa-l faci sa clipeasca la 38KHz, apoi la 38 KHz dar in ritmul dorit de tine incat sa poti transmite ceva receptorului, si uite asa pas cu pas treci la lucruri mai complicate.

 

Oricum ai face sa stii ca proiectul tau este destul de complex, nu e deloc o treaba simpla pe care sa o termini intr-un weekend...

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări