Go Down

Topic: digitare input da tastiera (Read 975 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy