PS2Keyboard Arduino e Gentoo

Ciao a tutti,
in questi giorni mi sono sbattuto per far andare l’ide di Arduino correttamente sulla mia gentoo, e alla fine sembra che ci sono quasi riuscito. Ho provato a caricare alcuni sketch di esempio e sembrano andare (ho provato anche quello della liquidcrystal e funzionava correttamente.

Un pó di giorni fa avevo fatto un piccolo programma per interfacciare una tastiera AT/Ps2 con arduino e mostrare l’output su un display LCD. Il codice lo avevo scritto nell’ide sulla partizione windows e funzionava correttamente.

Ho deciso di portare tutto sulla partizione gentoo, il programma compila correttamente senza problemi, quando premo il tasto upload, non compare nessun messaggio di errore, e ho il consueto messaggio: “Done Uploading” ma in realtá il display non stampa nulla e il programma sembra non essere partito correttamente.

Se invece commento la parte relativa alla tastierar tutto funziona correttamente.

Il codice che ho usato é:

#include <LiquidCrystal.h>
#include <PS2Keyboard.h>

#define DATA_PIN 7
#define IRQ_PIN 3

PS2Keyboard keyboard;
int counter;


// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 6, 2);

void setup() {
  keyboard.begin(DATA_PIN, IRQ_PIN, PS2Keymap_US);

  Serial.begin(9600);
  Serial.println("hi");
  delay(1000);
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Hello Arduino :O");
  counter=0;
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):  
  if(counter==16){
    counter=0;
  }
  lcd.setCursor(counter, 1);
  // print the number of seconds since reset:
  //lcd.print(millis()/1000);
  if(keyboard.available()) {
    char dat = keyboard.read();
    byte val = dat - '0';
    
    if(val >= 0) {
      Serial.print(val, DEC);
      lcd.print(dat);
    }
    counter++;
  }
}

Questo codice su windows funziona correttamente e su gentoo no.

Qualcuno ha qualche idea del perché?

Che problemi hai esattamente? E' la prima volta che usi Arduino sul tuo Gentoo?

Problemi di questo tipo sí é la prima volta, ho fatto altri programmi senza usare librerie esterne (comunque mai niente di realmente complicato) e funzionavano tutti correttamente. Ho provato a caricare anche l'esempio HelloWorld di liquidcrystal e questo funziona correttamente.

Ora il problema che ho ín pratica é che il programma viene compilato correttmaente l'ide mi comunica senza messaggi di errore "Done Uploading" ma in pratica la board non si resetta col programma caricato. O meglio, il programma sopra stampa sulla prima riga la stringa "Hello Arduino" e sulla seconda l'input ricevuto da tastiera, mentre su windows funziona correttamente (caricandolo sulla board), su linux invece una volta "caricato" la board si riavvia e il display resta spento e la tastiera non risponde a nessun input. Come se il programma non fosse stato caricato correttamente.

Ho configurato arduino per essere utilizzato come utente, non ho provato a caricare lo sketch da root (ma visto che altri sketch funzionano, probabilmente non dovrebbe essere questo il problema).

Quindi il tuo sketch comunica con il PC via seriale o stampa solo sul display LCD?
Cosa stampa, delle letture fatte da una stampante PS/2?

Si potrebbe avere lo sketch e lo schema del tuo circuito? Così non ci capisco molto :sweat_smile:

Allora lo schema cercheró di prepararlo a breve.

Cmq lo schema é facilmente riproducibile, ho attaccato l'cd seguendo la guida su http://arduino.cc/en/Tutorial/LiquidCrystal semplicemente spostando il connettore d6 dal pin 3 al pin 6. E poi ho attaccato lastiera seguendo questa guida http://www.arduino.cc/playground/Main/PS2Keyboard

Come IRQ_PIN ho usato il pin 3 e come DATA_PIN il 7.

In pratica via seriale stampo il valore del tasto premuto (lo visualizzo sotto forma di numero) mentre via LCD mostro direttamente il carattere del tasto premuto.

Appena posso cerco di fare uno schizzo del circuito.

Ma non ti funziona né in modalità LCD né in modalità seriale o in una di queste sì?

Il programma con la libreria da tastiera non funziona. L'LCD non stampa nulla e non accade nulla.

Se lo stesso programma lo carico da win, invece tutto funziona.

Se invece carico uno sketch che stampa solo su LCD non ci sono problemi, ne su gentoo ne su windows.

Scusa, che IDE usi? Che toolchain AVR usi?

Allora di ide uso arduino 1.0

La toolchain uso quella fornita dall'overlay crossdev di gentoo.

Comunque ho fatto la seguente prova: ho commentato tutte le linee che si riferivano a Serial e provato a ricaricare e ora lo sketch funziona.