Probleme de comunication MIDI-Serial
Tout d'abord Salut tout le monde
J ai un projet asser ambitieux (je bloque déja au stade embryonnaire).Un controleur USB comprenant 3 module, Une boite a rythme, Une parti mixage 8 voie, Une batterie de codeur rotatif.Le tout piloté par un arduino pour le protypage et ensuite par des micro controleur ARM
Je débute au temps en programmation qu'en électronique donc je compte vraiment faire pas a pas.
J'ai donc commencer basiquement a essayer de faire communiquer un codeur rotatif via arduino au port serie grace au logiciel Hairless-midiserial.
Le problème est que le programme m indique 1 byte manquant a mon signale midi.
J ai potasser sur le web (la magie d internet) J ai crue comprendre q un signal midi comprenais 4 byte. J ai essayer pas mal de bidouille en prenant des ligne par ci par la mais je n ai pas compris réellement le principe (de plus ça marche pas).
Si joint le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| #include <MIDI.h>
#include <midi_Defs.h>
#include <midi_Message.h>
#include <midi_Namespace.h>
#include <midi_Settings.h>
/**********************************************************
Definition des pins des codeur
*********************************************************/
#define PinA 2 // 1ere sortie du codeur
#define PinB 3 // 2e sortie du codeur
#define Pinbouton 12 // entrée du bouton
/**********************************************************
Definition des variables
*********************************************************/
int arrondi (float nombre){ return nombre + 0.5;};
/**********************************************************
Definition des variable et fonctions codeur
*********************************************************/
//encodeur1
int encoder1 = 0;
int encoder1Last = LOW;
int encoder1n = 0;
void encodeur1(){
if ((encoder1Last == LOW) && (digitalRead(2) == HIGH)) {
if (digitalRead(3) == LOW) {
encoder1n --;
encoder1n --;
encoder1n --;
encoder1n --;
encoder1n --;
encoder1n --;
encoder1n --;
encoder1n --;
encoder1n --;
}
else {
encoder1n ++;
encoder1n ++;
encoder1n ++;
encoder1n ++;
encoder1n ++;
encoder1n ++;
encoder1n ++;
encoder1n ++;
encoder1n ++;
}}
encoder1Last = digitalRead(2);
encoder1 = arrondi(encoder1n * 2.55);
if (encoder1n < 0) {encoder1n = 0;}
if (encoder1n > 100) {encoder1n = 100;}
if (encoder1 < 0) {encoder1 = 0;}
if (encoder1 > 255) {encoder1 = 100;}
}
/**********************************************************
Déclaration des fonctions
*********************************************************/
void MIDI_TX(unsigned char MESSAGE, unsigned char DONNEE1, unsigned char DONNEE2) //fonction d'envoi du message MIDI
{
Serial.write(MESSAGE); //envoi de l'octet de message sur le port série
Serial.write(DONNEE1); //envoi de l'octet de donnée 1 sur le port série
Serial.write(DONNEE2); //envoi de l'octet de donnée 2 sur le port série
}
void setup() {
MIDI_CREATE_DEFAULT_INSTANCE();
Serial.begin(9600);
encoder1 = 0;
}
void loop() {
// Lecture potentiometre
encodeur1();
Serial.println(encoder1);
MIDI_TX(176,77, encoder1);
} |
Je fais apelle a vous au grand gourou des chiffres :mrgreen: