Pages: [1]   Go Down
Author Topic: Arduino & MIDI  (Read 869 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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  smiley
Logged

Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 643
La mia prima bromografata!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
void setup() {

Serial.begin(9600);
}

nn vedi nulla perchè non hai scritto questo smiley-wink

cmq non ho cosa vuoi fare smiley-razz
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley

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

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
Logged

Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 643
La mia prima bromografata!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Logged

Pages: [1]   Go Up
Jump to: