Arduino & MIDI

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:

#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 :slight_smile:

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

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

void setup() {

Serial.begin(9600);
}

nn vedi nulla perchè non hai scritto questo :wink:

cmq non ho cosa vuoi fare :stuck_out_tongue:

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 :slight_smile:

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 :slight_smile:

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:

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.

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 :wink:

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.

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.

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);