Pages: [1] 2   Go Down
Author Topic: Comment s'assurer que le Rx fonctionne correctement ?  (Read 1319 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous !

Voilà plusieurs jours que je galère a essayer de trouver une solution à mon problème.. Mais je ne comprends toujours pas.

Je voudrais établir une liaison avec le protocole MIDI via la connexion série Rx. J'ai donc placé un optocoupleur, comme sur le schéma suivant :


Mais rien ne se passe. Quand j'envoie des signaux à la borne Rx, la led témoin de l'activité de la liaison reste éteinte et rien ne se passe dans le programme (j'ai bien réglé le taux de transfert à 31250 bauds). Cette led devrait s'allumer au moindre signal qu'il reçoit, non ?

J'ai bien testé indépendamment la sortie MIDI et l'optocoupleur, tout fonctionne correctement... Est-ce que le problème pourrait venir de l'arduino ? Ou bien j'aurais oublié un détail pour que ça fontionne ?

J'espère vous pourrez m'aider et que je puisse enfin avancer  smiley-razz
« Last Edit: February 01, 2013, 11:27:13 am by kevo » Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Code ?
Tu émets depuis l'arduino ou tu reçoit ? J'ai pas tout compris ...
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3193
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Petite précision : les LED sur arduino ms à part la LED sur le pin 13 sont raccordées au FT232 qui gère la gestion série avec le PC. Donc si pas d'interface avec le PC = pas de LED qui clignote
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai appliqué exactement ce qui se passe sur le premier schéma. J'envoie à partir de ma carte son (qui a une sortie MIDI) des octets à la borne Rx.

Voici un code d'exemple pour tester :

Code:
#include <MIDI.h>  // Add Midi Library

#define LED 13    // Arduino Board LED is on Pin 13

// Below is my function that will be called by the Midi Library
// when a MIDI NOTE ON message is received.
// It will be passed bytes for Channel, Pitch, and Velocity
void MyHandleNoteOn(byte channel, byte pitch, byte velocity) {
  digitalWrite(LED,HIGH);  //Turn LED on
  if (velocity == 0) {//A NOTE ON message with a velocity = Zero is actualy a NOTE OFF
    digitalWrite(LED,LOW);//Turn LED off
  }
}

void setup() {
  pinMode (LED, OUTPUT); // Set Arduino board pin 13 to output
  MIDI.begin(MIDI_CHANNEL_OMNI); // Initialize the Midi Library.
// OMNI sets it to listen to all channels.. MIDI.begin(2) would set it
// to respond to channel 2 notes only.
  MIDI.setHandleNoteOn(MyHandleNoteOn); // This is important!! This command
  // tells the Midi Library which function I want called when a Note ON command
  // is received. in this case it's "MyHandleNoteOn".
}

void loop() { // Main loop
  MIDI.read(); // Continually check what Midi Commands have been received.
}

La led 13 est sensée s'allumer à chaque fois que l'arduino reçoit un signal de note MIDI. Or il ne se passe rien et la led témoin de Rx ne réagit pas quand j'envoie les notes.. J'en déduis donc que l'arduino ne reçoit rien...
J'ai bien pris soin de débrancher le cable USB après le transfert du programme.

B@tto : ça veut dire que led led Tx et Rx ne sont pas raccordées aux bornes 0 et 1 de la UNO ?
« Last Edit: January 31, 2013, 08:36:27 am by kevo » Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu as bien croisé ton câble midi : Tx carte son -> Rx arduino ?

Quote
B@tto : ça veut dire que led led Tx et Rx ne sont pas raccordées aux bornes 0 et 1 de la UNO ?
Elles sont relié au chipset usb/série mais pas directement au port série, sinon ça poserai des problèmes d'ordre électrique.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah d'accord ! Donc je ne pouvais pas me fier de ces LED pour savoir si un signal passe dans la borne RX.

Oui oui, j'ai bien croisé le cable. J'ai essayé en inversant pour être sûr mais ça ne donne rien non plus smiley

Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3193
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dans ce cas ça semble hardware. Photo ?
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je ne sais pas si ça aidera, je suis sûr et certain de mon câblage...  smiley-razz

Est-ce que mon code pour vérifier si l'entrée Rx est active est bon ?

Code:
int incomingByte = 0;   
int L1 = 7;

void setup() {
        Serial.begin(31250);     
}

void loop() {

       
        if (Serial.available() > 0) {
                /
             
                digitalWrite (L1, LOW);
        }
}
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je ne sais pas si ça aidera, je suis sûr et certain de mon câblage...  smiley-razz
Et est tu sûr et certain de ton optocoupleur ? smiley-wink
Si ça ce trouve c'est lui qui est grillé ou juste pas de la bonne référence/câblage.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sûr et certain, je l'ai testé indépendamment en mettant le collecteur du transistor sur une entrée logique de l'Arduino. Voici le schéma que j'ai fait pour tester :



Donc quand je ferme l'interrupteur, le courant passe dans la diode, donc le transistor devient passant et à ce moment là la broche de l'arduino détecte bien un 0 logique. Si je ne me trompe pas  smiley-mr-green

Cet optocoupleur n'est pas le plus conseillé pour le transfert de signaux midi (vitesse limitée) mais j'ai cependant vu des gens qui s'en servaient et qui n'avaient pas de problème.

En passant,une petite question: l'optocoupleur étant cablé comme ça, le signal est normalement inversé.. Pourquoi est-ce qu'on l'inverse, au juste ?
« Last Edit: January 31, 2013, 03:21:30 pm by kevo » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai découvert hier la bibliothèque SoftwareSerial qui permet d'utiliser n'importe quelle broche digitale pour la communication en série. Et ça fonctionne, l'arduino reçoit bien les signaux midi et je peux les exploiter. Ca prouve que mon câblage et mon optocoupleur fonctionnent correctement. smiley-grin

J'en conclus donc que ma broche 0 a un sérieux souci... Quelle perte de temps -_-

Enfin merci à vous pour votre aide, je reviendrai pour d'autres problèmes ;-)
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'en conclus donc que ma broche 0 a un sérieux souci... Quelle perte de temps -_-
Si tu relis D0 et D1 et que tu envois quelque chose dans le Serial Monitor est-ce que tu as un echo ?
C'est aussi peut être un problème du aux résistances qui relie l'ATmega et le chipset série/usb.
Et qui, sous certaines conditions, forment un pont diviseur de tension avec le montage relié sur D0/D1.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 55
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Un écho, c'est à dire ? Je dois aussi faire un Serial.read pour tester ?
Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un écho, c'est à dire ? Je dois aussi faire un Serial.read pour tester ?
Non tu envois un code bidon n'utilisant pas Serial comme "blink" par exemple puis tu envois du texte dans le serial monitor.
Avec D0 et D1 reliés tu devrais voir le texte s'afficher en retour dans le serial monitor.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Tu dis:
>>> J'ai bien pris soin de débrancher le cable USB après le transfert du programme.
Mais, as-tu débranché la liaison entre l'optocoupleur et l'Arduino, c'est à dire le Rx pendant le transfert du sketch ?
Si non, tu as peut-être bloqué ton entrée Rx
çà m'est arrivé, et j'ai bien galéré !  (merci Skywodd )
Amicalement
Papyduino
Logged

Pages: [1] 2   Go Up
Jump to: