Home » Timp Liber » Cum sa construiesti o harpa electronica – Smart Nation

Cum sa construiesti o harpa electronica – Smart Nation

Cum sa construiesti o harpa electronica – Smart Nation
Publicat: 02.12.2013
Scris de Viorel Spinu
In tutorialul  de saptamana aceasta vreau sa va povestesc despre cum putem construi o harpa electronica folosing placa Arduino.  Pentru inceput va invit sa urmariti urmatorul video:
 
 
O harpa electronica are in loc de corzile din metal niste corzi invizibile din laser, iar atunci cand treci cu mana prin dreptul senzorului de lumina, ciupesti practic raza si generezi melodii, asa cum se intampla la o harpa obisnuita.
 
Daca vreti sa construiti o harpa electronica atunci va pot fi de mare folos codurile sursa pe care le impartasec acum cu voi.
 
Placa Arduino este practic creierul intregii operatiuni. Ea ruleaza codul sursa pe care il gasiti detaliat mai jos si care va ajuta sa emiteti notele muzicale.
 
>>cod sursa harpa
 
#include
 
#include
 
#define SOUND_RELEASE_TIME 1000
 
#define INSTRUMENT_COUNT 16
 
#define VOLUME 127 // an int between 0 and 127
 
byte resetMIDI = 4;
 
byte ledPin = 13;
 
byte stari[16];
 
byte hittedNote[INSTRUMENT_COUNT];
 
uint32_t timestamp[INSTRUMENT_COUNT];
 
long valCapSens[INSTRUMENT_COUNT];
 
#define T 0×78  //TOBE
 
#define M 0×79 //MELODIC
 
byte nota[INSTRUMENT_COUNT] =            {
 
62, 63, 49, 64, 65, 66, 67, 68, 69, 66, 43,  30, 57, 41,  61,  48};
 
int instrumentNumber[INSTRUMENT_COUNT] = {
 
3,  3, -1, 3,  3,  3,  3,  3,  3,  -1, -1,  -1, -1, -1,  -1,  -1};
 
int bank[INSTRUMENT_COUNT] =             {
 
M,  M,  T, M,  M,  M,  M,  M,  M,   T,  T,   T,  T,  T,   T,   T};
 
SoftwareSerial mySerial(2, 3);
 
boolean USE_SINGLE_TRESHOLD = true;
 
int PRAG_PRESETAT = 300;
 
int PRAG_SENZORI[INSTRUMENT_COUNT] = {
 
2000, 3500, 3500, 3500, 3500, 3500, 2000, 1000, 2000, 3500, 3500, 3500, 3500, 2000, 1000, 2000};
 
int SAMPLES = 50;
 
//long AUTOCAL_MILLIS = 0xFFFFFFFF;
 
long AUTOCAL_MILLIS = 200;
 
void loop() {
 
int lumina = analogRead(0);
 
if (lumina
 
noteON(8);
 
}
 
delay(100);
 
}
 
void noteON(int index){
 
talkMIDI(0xB0, 0×07, VOLUME);
 
talkMIDI(0xB0, 0, bank[0]);
 
talkMIDI(0xC0, instrumentNumber[1], 0);
 
noteOn(0, nota[index], 127);
 
 
 
}
 
void setup()  {
 
Serial.begin(115200);
 
midi_setup();
 
talkMIDI(0xB0, 0×07, VOLUME);
 
if (USE_SINGLE_TRESHOLD) {
 
for (int counter = 0; counter
 
PRAG_SENZORI[counter] = PRAG_PRESETAT;
 
}
 
}
 
}
 
void midi_setup() {
 
mySerial.begin(31250);
 
pinMode(resetMIDI, OUTPUT);
 
digitalWrite(resetMIDI, LOW);
 
delay(100);
 
digitalWrite(resetMIDI, HIGH);
 
delay(100);
 
for(int i; i
 
timestamp[i] = 0xFFFFFFFF;
 
}
 
talkMIDI(0xB0, 0, 0×00);
 
}
 
void noteOn(byte channel, byte note, byte attack_velocity) {
 
talkMIDI( (0×90 | channel), note, attack_velocity);
 
}
 
void noteOff(byte channel, byte note, byte release_velocity) {
 
talkMIDI( (0×80 | channel), note, release_velocity);
 
}
 
void talkMIDI(byte cmd, byte data1, byte data2) {
 
digitalWrite(ledPin, HIGH);
 
mySerial.write(cmd);
 
mySerial.write(data1);
 
if( (cmd & 0xF0)
 
mySerial.write(data2);
 
digitalWrite(ledPin, LOW);
 
}
 
void printPaddingZeros(long number) {
 
if (number
 
Serial.print(“     “);
 
}
 
else if (number
 
Serial.print(“    “);
 
}
 
else if (number
 
Serial.print(“   “);
 
}
 
else if (number
 
Serial.print(“  “);
 
}
 
Serial.print(number);
 
}
 
Si apoi daca vreti sa vedeti cum functioneaza senzorul de lumina atunci trebuie sa utilizati codul sursa de mai jos:
 
>>senzor lumina
 
void setup(){
 
Serial.begin(9600);
 
 
 
}
 
void loop(){
 
int lumina = analogRead(0);
 
Serial.println(lumina);
 
}
 
 
 
Smart Nation este platforma unde tehnologia va inspira pe voi toti. Sa va imaginati, sa inovati, sa creati!
 
Intra pe SmartNation.ro daca vrei sa fii informat in legatura cu noile gadget-uri, dar si pentru a putea afla cum functioneaza, ce fac si cum iti pot imbunatati viata de zi cu zi. 
 
 
Urmărește DESCOPERĂ.ro pe
Google News și Google Showcase
Cele mai noi articole
Vieți marcate de lepră: conducători, poeți și un gest rar de devoțiune
Vieți marcate de lepră: conducători, poeți și un gest rar de devoțiune
De ce ni se pare că luna decembrie „vine mai devreme” în fiecare an?
De ce ni se pare că luna decembrie „vine mai devreme” în fiecare an?
Ligrul: întâlnirea rară dintre regele leu și tigru
Ligrul: întâlnirea rară dintre regele leu și tigru
Cine a fost Cleopatra dincolo de mitul seducției? O regină cultivată, o jucătoare politică redutabilă și o figură istorică mult mai complexă decât legenda
Cine a fost Cleopatra dincolo de mitul seducției? O regină cultivată, o jucătoare politică redutabilă și o figură ...
Funicularul, ingineria care face accesibile pantele imposibile
Funicularul, ingineria care face accesibile pantele imposibile
„Olympia” lui Édouard Manet: de la acuzații de imoralitate și plagiat la redefinirea nudului în pictura modernă
„Olympia” lui Édouard Manet: de la acuzații de imoralitate și plagiat la redefinirea nudului în pictura modernă
Ce este ADHD și ce înseamnă cu adevărat
Ce este ADHD și ce înseamnă cu adevărat
De ce unii specialiști recomandă cafeaua înainte de somn? Explicația biologică, pe înțelesul tuturor
De ce unii specialiști recomandă cafeaua înainte de somn? Explicația biologică, pe înțelesul tuturor
Cum a măsurat Eratostene circumferința Pământului cu un băț în anul 240 î.Hr.?
Cum a măsurat Eratostene circumferința Pământului cu un băț în anul 240 î.Hr.?
De ce lipsesc culori din Soare? Nici măcar oamenii de știință nu au răspunsul complet!
De ce lipsesc culori din Soare? Nici măcar oamenii de știință nu au răspunsul complet!
Sfârșitul unei ere: Donald Trump suspendă Loteria Vizelor
Sfârșitul unei ere: Donald Trump suspendă Loteria Vizelor
Fiul regizorului american Rob Reiner, acuzat pentru uciderea părinților. Ce pedeapsă riscă?
Fiul regizorului american Rob Reiner, acuzat pentru uciderea părinților. Ce pedeapsă riscă?
Cel mai nou și avansat portavion al Chinei a traversat Strâmtoarea Taiwanului
Cel mai nou și avansat portavion al Chinei a traversat Strâmtoarea Taiwanului
Cum a instituit Ceauşescu „starea de necesitate” ca urmare a „acţiunilor irendentise”
Cum a instituit Ceauşescu „starea de necesitate” ca urmare a „acţiunilor irendentise”
Cum au ajuns câteva monede americane să valoreze 17 milioane de dolari?
Cum au ajuns câteva monede americane să valoreze 17 milioane de dolari?
Încă doi sateliți europeni Galileo au fost lansați pe orbita Pământului
Încă doi sateliți europeni Galileo au fost lansați pe orbita Pământului
Tradiții și ritualuri pentru a sărbători solstițiul de iarnă
Tradiții și ritualuri pentru a sărbători solstițiul de iarnă
Bursele sociale pentru studenți vor primi o suplimentare de 60 de milioane de euro
Bursele sociale pentru studenți vor primi o suplimentare de 60 de milioane de euro