Show Posts
Pages: 1 2 3 [4] 5 6 ... 10
46  International / Generale / Re: Passaggio valori a funzione on: April 23, 2012, 01:48:49 pm
Ahhhh

Comunque anche a me funziona
Serial.write(0xB0);

Quello che non funziona è mandare una stringa 'Comando' che contiene 0xB0 cioè
Serial.Write(Comando,HEX) ..... come mi avevi suggerito tu
47  International / Generale / Re: Passaggio valori a funzione on: April 23, 2012, 12:03:01 pm
Scusa per la domanda ma sono in confusione

se ho una stringa che contiene "0xB0" quanti byte sono ?
48  International / Generale / Re: Passaggio valori a funzione on: April 23, 2012, 10:42:23 am
Io dovrei mandare l'equivalente:

      Serial.wryte(0xB0);
      Serial.write(0x01);
      Serial.write(0x7F);
49  International / Generale / Re: Passaggio valori a funzione on: April 23, 2012, 10:41:12 am
Ma io dovrei mandare il byte alla periferica midi quindi devo usare write.

Sa fò ?

 smiley-mr-green
50  International / Generale / Re: Passaggio valori a funzione on: April 23, 2012, 10:36:40 am
Uso arduino ide 1.0
Mi da errore:
no matching function for call to 'HardwareSerial::write(String&,int)'
51  International / Generale / Re: Passaggio valori a funzione on: April 23, 2012, 10:27:11 am
Help me, please

Da VB invio una stringa così:
"!!CC!0xB0!0x01!0x7F!*"

Per il momento tralascio il primo CC lo usero più avati

Alla fine in arduino la tasformo in tre Stringhe
Comando
Data1
Data2

Quando li stampo dal monitor seriale vedo perfettamente:
0xB0
0x01
0x7F

Ora quello che non so fare è come inviare le 3 stringhe in 3 byte con serial.write nelle ultime 3 righe commentate.

Mi date una mano ?

Grazie, Albverman

Code:
char string[25];
int i=0;
int string_len;
int inByte;
int last_inByte;
int counter=0;

String TipoComando;
String Comando;
String Data1;
String Data2;

void setup()
{
  Serial.begin(9600); //INTIALISING THE MIDI SERIAL PORT
  Serial1.begin(9600); //INTIALISING THE CONTROLLER SERIAL PORT
}

void loop()  // LOOP FUNCTION
{
  inByte = Serial1.read();
  string_len=0;
  if (inByte == '!')  read_serial();  // If Start of line ("!") is found, call read_serial() function
}

void read_serial()  // FUNCTION FOR READING THE SERIAL MESSAGE
{
   Serial.println ("SOL FOUND and reading");  // THE SOL (Start of Line) found notice.
   Serial1.print("READ : !\n");  //Saying that it has read "!" on the serial port
   while (inByte!= '*') // As long as EOL not found, keep reading
   if (Serial1.available() > 0) // if new data is available
     {
       inByte = Serial1.read(); // Read new byte
       Serial.print("READ : "); // Display the new byte
       string[string_len] = (int)inByte; // Save the data in a character array
       Serial.println(string[string_len]); // Print the characters that was recieved
       string_len++;
     }
     else if (Serial1.available() == 0)
       {
           Serial.println("EOL not available, data string invalid"); // If EOL not in the string
           Serial1.print("$N"); //FAIL SIGNATURE
           break;
       }

 if (inByte == '*')
{
 Serial1.println ("$Y"); //SUCCESS SIGNATURE

      Comando=((String)string[3]+(String)string[4]+(String)string[5]+(String)string[6]);
      Data1=((String)string[8]+(String)string[9]+(String)string[10]+(String)string[11]);
      Data2=((String)string[13]+(String)string[14]+(String)string[15]+(String)string[16]);
     
      Serial.println(Comando);
      Serial.println(Data1);
      Serial.println(Data2);

//      Serial.write(Comando);
//      Serial.write(Data1);
//      Serial.write(Data2);
     
 }
}
52  International / Generale / Re: Passaggio valori a funzione on: April 22, 2012, 11:07:31 am
Grazie smiley

Mi sapresti dire anche qualcosa sulla seconda domanda, che ho postato mentre rispondevi ?

TNX; alberto
53  International / Generale / Re: Passaggio valori a funzione on: April 22, 2012, 10:16:38 am
Praticamente ho un'arduino mega con montato lo shield midi.
Sulla seriale1 ricevo i dati dal pc e in base a quello che mando creo il comando midi da unviare sulla seriale0

Poi perchè se tolgo tutti i Serial.print, non i Serial1, la stringa non si compone ?
Devo per forza stampare su Serial per storare il dato da Serial.read ?

Grazie ancora Alberto
54  International / Generale / Re: Passaggio valori a funzione on: April 22, 2012, 10:11:53 am
questo è tutto
Code:
/*===========================
TITLE: Serial Echo Code v1.1
AUTHOR: Fayaz Kadir
DESCRIPTION: If you send a string starting with "!" and ending with "*", the Arduino responds back with "$Y" for valid data string, or $N for invalid data string. You can modify this code for your use.
COMPATIBLE BOARD: Arduino Mega (but any other Arduino should work fine)
============================*/

char string[25];
int i=0;
int string_len;
int inByte;
int last_inByte;
int counter=0;

void setup() {
  Serial.begin(9600); //INTIALISING THE MIDI SERIAL PORT
  Serial1.begin(9600); //INTIALISING THE CONTROLLER SERIAL PORT
}

// La stringa in arrivo deve avere un ! per ogni lettera e deve terminare con un *
// All'inizio va raddoppiato !! altrimenti perdo la prima lettera
// Esempio !!P!R!O!V!A*

void loop()  // LOOP FUNCTION
{
  inByte = Serial1.read();
  string_len=0;
  if (inByte == '!')  read_serial();  // If Start of line ("!") is found, call read_serial() function
}

void read_serial()  // FUNCTION FOR READING THE SERIAL MESSAGE
{
   Serial.println ("SOL FOUND and reading");  // THE SOL (Start of Line) found notice.
   Serial1.print("READ : !\n");  //Saying that it has read "!" on the serial port
   while (inByte!= '*') // As long as EOL not found, keep reading
   if (Serial1.available() > 0) // if new data is available
     {
       inByte = Serial1.read(); // Read new byte
       Serial.print("READ : "); // Display the new byte
       string[string_len] = inByte; // Save the data in a character array
       Serial.println(string[string_len]); // Print the characters that was recieved
       string_len++;
     }
     else if (Serial1.available() == 0)
       {
           Serial.println("EOL not available, data string invalid"); // If EOL not in the string
           Serial1.print("$N"); //FAIL SIGNATURE
           break;
       }

 if (inByte == '*')
{
 Serial1.println ("$Y"); //SUCCESS SIGNATURE
 for (int i=0; i <= (string_len-2); i++){
   Serial.print (string[i]);
   }

 
 Serial.print ("\n");
    switch (string[0])
      {
        case 'CC':
          int cmd1 = (int)(string[1]);
          int cmd2 = (int)(string[2]);
          int cmd3 = (int)(string[3]);
          SendCCMidi(cmd1,cmd2,cmd3);
          break;
      }
   }
void SendCCMidi(int cmd, int data1, int data2) {
  Serial.write(cmd);
  Serial.write(data1);
  Serial.write(data2);
}
}

55  International / Generale / Passaggio valori a funzione on: April 22, 2012, 09:36:01 am
Buon giorno.

In base ad una selezione creo il comando da inviare alla funzione
ma questo mi da un'errore in fase di compilazione

SendCCMidi was not declared in this scope

Mi date una mano ?

Grazie


Code:

.......

    switch (string[0])
      {
        case 'CC':
          int cmd1 = (int)(string[1]);
          int cmd2 = (int)(string[2]);
          int cmd3 = (int)(string[3]);
          SendCCMidi(cmd1,cmd2,cmd3);
          break;
      }
void SendCCMidi(int cmd, int data1, int data2)
{
  Serial.write(cmd);
  Serial.write(data1);
  Serial.write(data2);
}
56  International / Generale / Questione midi on: April 21, 2012, 03:11:09 pm
Ho una scheda midi della sparkfun.
Dal momento che non ho sottomano la periferica che dovrò controllare
ho provato a capire il funzionamento del protocollo con una periferica
midi che ho in laboratorio, un mixer beringher bcf2000

La bcf2000 è collegata via usb al pc che uso per programmare arduino.
Uso MIDIOX per testare i messaggi che passo con arduino.

Sono riuscito a controllare la BCF2000 muovendo due fader da arduino
solo che tutto si ferma se chiudo MIDIOX !!
Sulla BCF2000 è presente un led che mostra i segnali midi in arrivo e il
led lampeggia regolarmente.

Non appena mandi in esecuzione MIDIOX il mixer riprende a muovere i fader.

MIDIOX è configurato
input BCF2000 porta 2
output BCF2000 porta 1

Se tolgo una delle due porte in MIDIOX la BCF2000 si ferma.

Ora chiedo:
Per controllare una periferica midi posso mandare solo i comandi alla periferica midi o devo anche mettere arduini in ascolto ?

Grazie per l'eventuale aiuto

Alverman
57  International / Generale / Re: Qualcuno mi sa dire perchè non va questo protocollo seriale ? on: April 20, 2012, 12:33:35 pm
Già ..... aiutati che .........

 smiley-lol
58  International / Generale / Re: Qualcuno mi sa dire perchè non va questo protocollo seriale ? on: April 20, 2012, 12:15:05 pm
Ho capito !!
59  International / Generale / Re: Qualcuno mi sa dire perchè non va questo protocollo seriale ? on: April 20, 2012, 11:54:16 am
Scusate se insisto ma a voi funziona ?
Io provandolo così com'è anche con il monitor dell'ide non funziona !!

Vi linko da dove da dove l'ho scaricato.
http://fayazkadir.com/blog/?p=2291
60  International / Generale / Re: Qualcuno mi sa dire perchè non va questo protocollo seriale ? on: April 20, 2012, 10:01:40 am
Però se tolgo il break quando non arriva il carattere di chiusura mi va in loop smiley-sad
Pages: 1 2 3 [4] 5 6 ... 10