Go Down

Topic: digitare input da tastiera (Read 874 times) previous topic - next topic

secondsky

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.

BrainBooster

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.

secondsky

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

BrainBooster

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

secondsky

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.

leo72

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.

secondsky

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

uwefed

#7
May 19, 2012, 12:12 am Last Edit: May 19, 2012, 09:55 pm by uwefed Reason: 1
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".

Code: [Select]

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

secondsky

Ti ringrazio molto, è esattamente quello che mi serviva!

uwefed

lieto di averti potuto aiutare.
Ciao Uwe

Go Up