labatteria.it • Leggi argomento - ARDUINO


ARDUINO

La sezione per i vostri lavori manuali: avete costruito degli octoban, dei rullanti, delle batterie, o anche dei pad elettronici?
Volete insonorizzare o fare lavori nel vostro locale?
Parlatene qui.

Messaggioda ILDiko il mar dic 04, 2012 2:54 pm

Ciao Belli,
è da poco che mi sono buttato su queto piccolo gingillo ma dalle mille potenzialità..
Per ora mi limito a fare dei piccoli circuiti e niente di più diciamo che sto studiando le funzionalità..
quello che mi è venuto in mente è trasformarlo in una centralina drum-midi..già su internet si trova qual cosa ma a pochi canali..diciamo nulla di che ma io forrei fare una cosa completa cominciando da otto canali..

io sono in possesso del modello uno per intenderci:
Immagine

ho provato uno schema di programazzione girando per internet ma non riesco a farlo funzionare!! qualcuno di voi lo sa programmare ? che vi pare come idea?

vi scrivo le linee comando che ho trovato girando per la rete :

Proto1

// Variables:
byte note = 0; // The MIDI note value to be played

void setup() {
// Set MIDI baud rate:
Serial.begin(31250);
}

void loop() {
// play notes from F#-0 (30) to F#-5 (90):
for (note = 30; note < 90; note ++) {
//Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
noteOn(0x90, note, 0x45);
delay(100);
//Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
noteOn(0x90, note, 0x00);
delay(100);
}
}

// plays a MIDI note. Doesn't check to see that
// cmd is greater than 127, or that data values are less than 127:
void noteOn(byte cmd, byte data1, byte data2) {
Serial.write(cmd);
Serial.write(data1);
Serial.write(data2);
}

const int switchPin = 10; // The switch is on Arduino pin 10
const int middleC = 60; // Middle C (MIDI note value 60) is the lowest note we'll play
const int LEDpin = 13; // Indicator LED

// Variables:
byte note = 0; // The MIDI note value to be played
int AnalogValue = 0; // value from the analog input
int lastNotePlayed = 0; // note turned on when you press the switch
int lastSwitchState = 0; // state of the switch during previous time through the main loop
int currentSwitchState = 0;

void setup() {
// set the states of the I/O pins:
pinMode(switchPin, INPUT);
pinMode(LEDpin, OUTPUT);
// Set MIDI baud rate:
Serial.begin(31250);
blink(3);
}

void loop() {
// My potentiometer gave a range from 0 to 1023:
AnalogValue = analogRead(0);
// convert to a range from 0 to 127:
note = AnalogValue/8;
currentSwitchState = digitalRead(switchPin);
// Check to see that the switch is pressed:
if (currentSwitchState == 1) {
// check to see that the switch wasn't pressed last time
// through the main loop:
if (lastSwitchState == 0) {
// set the note value based on the analog value, plus a couple octaves:
// note = note + 60;
// start a note playing:
noteOn(0x90, note, 0x40);
// save the note we played, so we can turn it off:
lastNotePlayed = note;
digitalWrite(LEDpin, HIGH);
}
}
else { // if the switch is not pressed:
// but the switch was pressed last time through the main loop:
if (lastSwitchState == 1) {
// stop the last note played:
noteOn(0x90, lastNotePlayed, 0x00);
digitalWrite(LEDpin, LOW);
}
}

// save the state of the switch for next time
// through the main loop:
lastSwitchState = currentSwitchState;
}

// plays a MIDI note. Doesn't check to see that
// cmd is greater than 127, or that data values are less than 127:
void noteOn(byte cmd, byte data1, byte data2) {
Serial.write(cmd);
Serial.write(data1);
Serial.write(data2);
}

// Blinks an LED 3 times
void blink(int howManyTimes) {
int i;
for (i=0; i< howManyTimes; i++) {
digitalWrite(LEDpin, HIGH);
delay(100);
digitalWrite(LEDpin, LOW);
delay(100);
}
}

fonte : http://itp.nyu.edu/physcomp/Labs/MIDIOutput
Avatar utente
ILDiko
guru delle pelli
guru delle pelli
 
Messaggi: 2181
Iscritto il: ven gen 28, 2011 10:15 am
Località: (PN)

Messaggioda daddi il mar dic 04, 2012 3:32 pm

che linguaggio è? magari stasera ci do un'occhiata... potrebbe essere una bell'idea!
Avatar utente
daddi
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 356
Iscritto il: gio feb 06, 2003 2:58 pm

Messaggioda SukkoPera il mar dic 04, 2012 3:50 pm

Io ci smanetto parecchio, anche se non a scopo musicale. Ad esempio, sto lavorando a questo: https://github.com/SukkoPera/SmartStrip

Quello sketch che hai postato non è completo, comunque si capisce che per funzionare ha bisogno di un qualche circuito che colleghi la seriale al MIDI IN di qualche tastiera/centralina, di un interruttore e di un potenziometro (che potrebbe essere in realtà il piezo di un pad). Se ci dici dove l'hai preso magari si capisce di più.

Se hai altre domande chiedi pure, ormai sono abbastanza "svezzato" in materia :).

PS: È C/C++, con qualche particolarità.
È uscito il primo EP della mia band! Ascoltalo gratis: Backdoor to the Fourth Dimension
Avatar utente
SukkoPera
guru delle pelli
guru delle pelli
 
Messaggi: 2230
Iscritto il: ven ott 29, 2010 12:13 am
Località: Mandrognoland

Messaggioda ILDiko il mar dic 04, 2012 4:40 pm

ok allora sotto il mio post trovate il linck dove ho trovato questi comandi più i disegni tecnici per fare un triger midi monocanale!
Sukko cosa gli manca per essere completo :!: Grazie man :D

di elettronica ne so... ma di programazione non conosco na fava...

cmq pensavo idea mia di trasformare i segnali analogici in digitale così da avere più di 5 ingressi analogici utilizzando convertitori A/D

che ne pensi come idea possiamo portare 8 analogiche in una sola digitale..

poi bo idea mia..
Avatar utente
ILDiko
guru delle pelli
guru delle pelli
 
Messaggi: 2181
Iscritto il: ven gen 28, 2011 10:15 am
Località: (PN)

Messaggioda SukkoPera il mar dic 04, 2012 5:02 pm

Quello che hai postato non è esattamente un trigger midi monocanale. Così su due piedi non so cosa gli manchi, bisognerebbe provare a costruirlo e vedere. Questo mi sembra un po' meglio:

http://blog.libero.it/elettrojam/9729878.html

Trasformare i segnali analogici in digitale non ha molto senso in questo contesto: dovresti comunque quantizzare i valori letti su almeno una decina di bit, non ti basta un unico ingresso digitale (a meno di non mettere in piedi anche una serializzazione del valore quantizzato tramite qualcosa come uno shift register, ma a quel punto ti serve praticamente un altro microcontrollore! E poi ho paura che la latenza aumenti troppo!).

PS: Non è basato su Arduino, ma esiste MegaDrum: http://www.megadrum.info .
È uscito il primo EP della mia band! Ascoltalo gratis: Backdoor to the Fourth Dimension
Avatar utente
SukkoPera
guru delle pelli
guru delle pelli
 
Messaggi: 2230
Iscritto il: ven ott 29, 2010 12:13 am
Località: Mandrognoland

Messaggioda MassimoBernava il mar dic 04, 2012 5:09 pm

Bhè in realtà in rete si trova tutto il necessario: www.microdrum.net :wink: c'è pure tutta una discussione a riguardo nel forum: http://www.labatteria.it/forum/viewtopi ... =microdrum
Avatar utente
MassimoBernava
rullatore da guerra
rullatore da guerra
 
Messaggi: 268
Iscritto il: mar mar 10, 2009 3:07 pm

Messaggioda SukkoPera il mar dic 04, 2012 5:16 pm

Cavolo, è vero, mi ero completamente dimenticato del tuo progetto! Grandissimo, vedo che ormai è superpro! :tru

PS: Giusto, un multiplexer era la soluzione più corretta, come ho potuto non pensarci? :D
È uscito il primo EP della mia band! Ascoltalo gratis: Backdoor to the Fourth Dimension
Avatar utente
SukkoPera
guru delle pelli
guru delle pelli
 
Messaggi: 2230
Iscritto il: ven ott 29, 2010 12:13 am
Località: Mandrognoland

Messaggioda MassimoBernava il mar dic 04, 2012 6:03 pm

Superpro!!! :mrgreen:.... forse è eccessivo :oops: , magari lo diventerà se riuscirò a trasformarlo in una centralina a tutti gli effetti aggiungendo la possibilità di produrre dei suoni, per adesso l'importante è "unire" gli sforzi di tutti. Per questo mi sono permesso di intromettermi con questo "messaggio promozionale". Le idee di tutti sono sempre bene accette ma se cerchiamo di concentrarci in una direzione comune secondo me otterremo un risultato migliore :D
Avatar utente
MassimoBernava
rullatore da guerra
rullatore da guerra
 
Messaggi: 268
Iscritto il: mar mar 10, 2009 3:07 pm

Messaggioda SukkoPera il mar dic 04, 2012 6:11 pm

Ma secondo me hai fatto benissimo, perché reinventare la ruota? Pensavo però che non tutti hanno bisogno di 48 ingressi. Forse potresti postarne una versione semplificata (ad esempio a 6 ingressi, così non servono nemmeno i multiplexer) per chi ha esigenze più contenute e/o meno voglia di saldare.

Però è davvero un bel lavoro, mi sembra maturato moltissimo rispetto all'ultima volta che l'ho guardato!

PS: Che ne pensi dell'Arduino Due? A me sembra un po' un passo falso funzionando a 3.3V :o.
È uscito il primo EP della mia band! Ascoltalo gratis: Backdoor to the Fourth Dimension
Avatar utente
SukkoPera
guru delle pelli
guru delle pelli
 
Messaggi: 2230
Iscritto il: ven ott 29, 2010 12:13 am
Località: Mandrognoland

Messaggioda MassimoBernava il mar dic 04, 2012 6:34 pm

Anche altre persone mi hanno chiesto una versione "semplificata" ma in realtà per me sarebbe decisamente complesso, molto codice andrebbe riscritto, i timer risettati...io già non riesco a realizzare tutte le idee che ho per la versione "normale", se comincio a realizzare più versioni è la fine...Certo se qualcuno si prende l'incarico di lavorare su una versione "lite" io posso tranquillamente pubblicare il lavoro sul mio sito.

Arduino DUE porta molte novità...sfortunatamente alcune danno problemi di retro-compatibilità come il funzionamento a 3.3V, ma sono "scelte obbligate"...per il resto mi sembra una scheda dalle grandi potenzialità e ci vorrà un po' per sfruttarla a dovere...
Avatar utente
MassimoBernava
rullatore da guerra
rullatore da guerra
 
Messaggi: 268
Iscritto il: mar mar 10, 2009 3:07 pm

Messaggioda SukkoPera il mer dic 05, 2012 12:00 pm

Capisco! Io al momento preferisco smanettare con relé e Ethernet, ma magari un giorno... :D

Sul 3.3V e le altre "particolarità" di Arduino Due capisco le motivazioni, ma rimango un po' scettico. Comunque, vedremo dove andremo a parare, nel frattempo rimango fedele all'ATmega328 :).

Hai già pensato anche a una versione per Raspberry Pi? Lì saresti praticamente già integrato con un PC! Ora che ci penso, però, mi pare che non sia dotato di convertitori A/D, vero? :evil:
È uscito il primo EP della mia band! Ascoltalo gratis: Backdoor to the Fourth Dimension
Avatar utente
SukkoPera
guru delle pelli
guru delle pelli
 
Messaggi: 2230
Iscritto il: ven ott 29, 2010 12:13 am
Località: Mandrognoland


http://www.youtube.com/watch?v=NP5_CJg7oKQ

Torna a Fai da te & Insonorizzazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti