keyboard

Bonjour,

J'utilise la librairie keyboard pour mon programme qui consiste à commander un module mp3 à partir d'un clavier de PC. Mon problème est le suivant : Lorsque je charge le programme dans l'arduino, il fonctionne bien. Lorsque je le fait tourner en autonome, il faut que je fasse un reset de l'arduino pour qu'il fonctionne, sinon, il déconne. les touches ne correspondent plus à ma programmation. moi no comprendo... Une idée ???

le programme :

// PROGRAMME LECTEUR MP3 SUR BASE VMUSIC2 A PARTIR D’UN CLAVIER PS2
// Christian PIERREDON 2010

// librairie keyboard

#include <PS2Keyboard.h>
#include <SoftwareSerial.h>
const int DataPin = 4;
const int IRQpin = 3;

PS2Keyboard keyboard;

// définition des branchements du calvier
#define KBD_CLK_PIN 3
#define KBD_DATA_PIN 4
#define VMUSIC_RX 6
#define VMUSIC_TX 7

SoftwareSerial SFTserial = SoftwareSerial(VMUSIC_RX, VMUSIC_TX);
void setup() {
delay (1000);
keyboard.begin(DataPin, IRQpin);
delay (500);
// define pin modes for tx, rx, led pins:
pinMode(VMUSIC_RX, INPUT);
pinMode(VMUSIC_TX, OUTPUT);
// définition de la vitesse de transmission
Serial.begin(9600);
SFTserial.begin(9600);
delay(1000);
// Stopper la lecture
Serial.print (“vst”),
Serial.print (0x0D,BYTE);
SFTserial.print (“vst”),
SFTserial.print (0x0D,BYTE);
}

//#define is_printable(c) (!(c&0x80)) // don’t print if top bit is set

void loop() {
if(keyboard.available()) {
byte c = keyboard.read(); //lecture du clavier
switch (c){
// touche pause = barre d’espace
case 0x20:
Serial.print (“vst”),
Serial.print (0x0D,BYTE),
SFTserial.print (“vst”),
SFTserial.print (0x0D,BYTE);
break;
//STOP
case 0x0D:
Serial.print (“vp”),
Serial.print (0x0D,BYTE);
SFTserial.print (“vp”),
SFTserial.print (0x0D,BYTE);
break;
// Lecture des fichiers du lecteur 1
case 0x1B:
Serial.print (“VPF 01.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x05:
Serial.print (“vpf 02.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x06:
Serial.print (“vpf 03.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x04:
Serial.print (“vpf 04.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x0C:
Serial.print (“vpf 05.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x03:
Serial.print (“vpf 06.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x0B:
Serial.print (“vpf 07.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x83:
Serial.print (“vpf 08.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x17:
Serial.print (“vpf 09.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x01:
Serial.print (“vpf 10.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x09:
Serial.print (“vpf 11.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x78:
Serial.print (“vpf 12.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x07:
Serial.print (“vpf 13.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x60:
Serial.print (“vpf 14.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x31:
Serial.print (“vpf 15.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x32:
Serial.print (“vpf 16.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x33:
Serial.print (“vpf 17.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x34:
Serial.print (“vpf 18.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x35:
Serial.print (“vpf 19.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x36:
Serial.print (“vpf 20.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x37:
Serial.print (“vpf 21.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x38:
Serial.print (“vpf 22.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x39:
Serial.print (“vpf 23.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x30:
Serial.print (“vpf 24.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x2D:
Serial.print (“vpf 25.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x3D:
Serial.print (“vpf 26.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x71:
Serial.print (“vpf 27.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x77:
Serial.print (“vpf 28.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x65:
Serial.print (“vpf 29.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x72:
Serial.print (“vpf 30.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x74:
Serial.print (“vpf 31.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x79:
Serial.print (“vpf 32.mp3”),
Serial.print (0x0D,BYTE);
break;

// Lecture des fichiers du lecteur 2
case 0x75:
Serial.print (“vpf 33.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x69:
Serial.print (“vpf 34.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x6F:
Serial.print (“vpf 35.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x70:
Serial.print (“vpf 36.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x5B:
Serial.print (“vpf 37.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x5D:
Serial.print (“vpf 38.mp3”),
Serial.print (0x0D,BYTE);
break;
case 0x61:
SFTserial.print (“vpf 39.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x73:
SFTserial.print (“vpf 40.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x64:
SFTserial.print (“vpf 41.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x66:
SFTserial.print (“vpf 42.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x67:
SFTserial.print (“vpf 43.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x68:
SFTserial.print (“vpf 44.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x6A:
SFTserial.print (“vpf 45.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x6B:
SFTserial.print (“vpf 46.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x6C:
SFTserial.print (“vpf 47.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x3B:
SFTserial.print (“vpf 48.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x27:
SFTserial.print (“vpf 49.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x5C:
SFTserial.print (“vpf 50.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x7A:
SFTserial.print (“vpf 51.mp3”),
SFTserial.print (0x0D,BYTE);
break;
//case 0x78:
//SFTserial.print (“vpf 52.mp3”),
//SFTserial.print (0x0D,BYTE);
//break;
case 0x63:
SFTserial.print (“vpf 53.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x76:
SFTserial.print (“vpf 54.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x62:
SFTserial.print (“vpf 55.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x6E:
SFTserial.print (“vpf 56.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x6D:
SFTserial.print (“vpf 57.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x2C:
SFTserial.print (“vpf 58.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x2E :
SFTserial.print (“vpf 59.mp3”),
SFTserial.print (0x0D,BYTE);
break;
case 0x2F:
SFTserial.print (“vpf 60.mp3”),
SFTserial.print (0x0D,BYTE);
break;

}
}
}

précision : la carte est une UNO, le lecteur un V-music2, le clavier un clavier PC ps2 azerty.

j’ai résolu provisoirement le problème en plaçant un condensateur sur le reset de l’arduino. Mais cette solution ne résout pas le problème du programme, elle ne fait que le contourner…
Help me please !