digitare input da tastiera

Ciao a tutti, mi è venuta una curiosità. Con processing mi era riuscito di digitare dei numeri a più cifre sulla porta seriale e, all'invio, a trasformarli in variabili. È tanto difficile da fare semplicemente con arduino? Vi ringrazio.

puoi connettere una tastiera ps2 direttamente ad arduino (c'è una libreria apposita) ma senza vedere quello shce scrivi diventa difficile :) ti ci vuole un "monitor" che potresti costruire con un lcd.

No ma infatti intendevo tramite il monitor del computer, connettendo l'arduino con l'usb.

il semplice hyperterminal non ti piace? o putty? o realterm? o qualsiasi altro terminale seriale.

In realtà non li conosco, mi ero limitato a digitare nel terminale dell'ide e dare invio, ma mi scompone le parole nei vari caratteri che legge come numeri, credo ascii. Volevo capire come tenere uniti i valori che inserisco e intermpretarli per come sono scritti. Tipo: se scrivo 155, una variabile dovrebbe diventare 155.

Devi riunire tu quello che arriva dalla seriale. La seriale spedisce un byte alla volta. Se tu digiti 1-5-5-invio, arriveranno i caratteri 49 (ASCII per "1"), 49, 53 e 13.

In effetti ricordo che anche in processing andava tutto archiviato in una stringa, conoscete qualche tutorial a riguardo per arduino?

Questo codice legge un numero in forma di stringa inviato dalla seriale e lo trasforma in un numero. Pó essere inviato un numero a lunghezza variabile. La trasmissione viene considerata dopo un certo tempo terminata. In questo modo puoi trasmettere “2” come “1234”.

int  incomingNumber;   // numero trasmesso
char Data[8];  // buffer per la stringa trasmessa
int i;
unsigned long Tempo; 
unsigned long attesa = 500;   //tempo attesa per leggere tutta la strinaga; puó essere diminuito in funzione del Baudrate  

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

void loop(){
 
   do {
     if (Serial.available()) {       
       Data[i] = Serial.read();
       i++;
       }     
     if(i<1)Tempo = millis(); 
     } while (i<6&&(millis()-Tempo) < attesa);
  
   Data[i] = 0;    
   incomingNumber = atoi(Data);  
   i=0;
   Serial.println(incomingByte);
}

Ciao Uwe

Ti ringrazio molto, è esattamente quello che mi serviva!

lieto di averti potuto aiutare. Ciao Uwe