Go Down

Topic: Arduino & MIDI (Read 1 time) previous topic - next topic

aleper3

Ciao a tutti!

Sto lavorando ad un progetto tipo MIDIswitcher.

Come primo passo dovrei accettare un segnale dalla mia pedaliera (per chitarra) e farlo leggere ad arduino.

Ora, nel caso specifico vorrei che fosse un program change.

il codice è questo:

Code: [Select]
#include <MIDI.h>
#define nove 9


void setup() {
 
MIDI.begin();
pinMode(nove, OUTPUT);

}

void loop() {
 
  MIDI.read();
  if(MIDI.getType()==ProgramChange)
    digitalWrite(nove, HIGH);
}


Apparentemente arduino non legge nulla che sia midi. (lavoro con arduino duemilanove w/ATMega328

Aiutatemi se potete, grazie  :)

dab77

mmm prova magari prima a stampare MIDI.getType(), vedi cosa ti arriva..

aleper3

Se uso Serial.print(MIDI.GetType()); quello che ottengo è una stampa di nulla! Continua ad avanzare ma non vedo nulla sul serial monitor.

Iz2rpn

Quote
void setup() {

Serial.begin(9600);
}


nn vedi nulla perchè non hai scritto questo ;)

cmq non ho cosa vuoi fare :P

aleper3

Il MIDI.begin() inzializza un baudrate di 31250! (protocollo MIDI).

In realtà voglio solo farmi arrivare dati e capire COSA mi arriva per ora, che è la parte più complicata :)

Iz2rpn


Il MIDI.begin() inzializza un baudrate di 31250! (protocollo MIDI).

In realtà voglio solo farmi arrivare dati e capire COSA mi arriva per ora, che è la parte più complicata :)


setta un pin in input controlla prima i livelli di tensione che ti arrivano per dimensionare il tutto a dovere, io ti ho messo 9600 a titolo informativo per approfondire la materia:

http://arduino.cc/en/Reference/Serial


aleper3

OK, grazie!

Ma allora mi toglo un'ultima curiosità. Leggendo in giro e documentandomi, non ho capito molto bene la storia di "se utilizzo il pin 0, l'usb non è tanto contento".

Da quello che ho compreso, se io voglio far arrivare dati seriali (tipo quelli del midi) devo per forza farli arrivare dentro al pin 0. Ora. Se io volessi anche vedere quello che mi arriva nel pc, e tener attaccato l'usb al pc, non posso. La mia domanda è: i dati seriali possono arrivare anche sugli altri pin? Perchè tu mi dicevi di usare un pin in input, però non so che tensione arriva quando arriva un segnale midi!

Grazie mille.

Iz2rpn

http://arduino.cc/en/Tutorial/Midi

Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the corresponding pins of the ATmega8U2 USB-to-TTL Serial chip. "http://arduino.cc/en/Main/ArduinoBoardUno"

credo sia inutile fare altri commenti ;)

Madwriter


OK, grazie!

Ma allora mi toglo un'ultima curiosità. Leggendo in giro e documentandomi, non ho capito molto bene la storia di "se utilizzo il pin 0, l'usb non è tanto contento".

Da quello che ho compreso, se io voglio far arrivare dati seriali (tipo quelli del midi) devo per forza farli arrivare dentro al pin 0. Ora. Se io volessi anche vedere quello che mi arriva nel pc, e tener attaccato l'usb al pc, non posso. La mia domanda è: i dati seriali possono arrivare anche sugli altri pin? Perchè tu mi dicevi di usare un pin in input, però non so che tensione arriva quando arriva un segnale midi!

Grazie mille.

puoi usare la libreria software serial che ti emula la serial rx e tx su altri 2 pin di arduino cosi alsci liberi 0 e 1 per la comunicazione seriale usb.
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

dab77

non hai visto nessun carattere perchè con print vedi il risultato ASCII del numero, che magari non corrisponde a niente. prova con Serial.write (mi pare), oppure devi fare una conversione, tipo:
int valore = MIDI.GetType();
Serial.println(valore);



Go Up