Pages: [1]   Go Down
Author Topic: ricevere da seriale un numero intero ed inserirlo in una variabile  (Read 547 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

so che la seriale invia un solo byte alla volta ed è in codice ASCII perciò trattandosi di numeri bisogna sottrarre a ciascun numero il valore 48 ma trattandosi di un numero di + cifre per esempio 15 io dovrei sapere il numero di cifre ed elevare i valori ^10*(n-1) e con n intendo il numero di cifre.
così mi è stato consigliato assegnare ad n = Serial.avaiable(); (spero sia scritto giusto smiley-lol) ma qui sorge il mio problema non sò perchè mi da sempre come risultato 1 anche se io invio 1000000000000 come numero come posso risolvere
grazie mille e scusate la continua rottura smiley-lol
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Serial.avaliable restituisce 1 se è stato ricevuto qualcosa e 0 se non è stato ricevuto niente
Ho fatto anche io lo stesso errore smiley-lol
Logged

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3513
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Perchè available() dice quanti caratteri disponibili ci sono sulla seriale, perciò >=1 (true) e 0 (falso) se non c'e' sono

EDIT: specificato meglio
« Last Edit: June 30, 2013, 03:19:41 am by nid69ita » Logged

my name is IGOR, not AIGOR

Selvazzano Dentro - Padova
Online Online
God Member
*****
Karma: 28
Posts: 931
"Chi sa fa, chi non sa insegna"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Perchè available() dice solo se c'e' un carattere disponibile sulla seriale, perciò 1 (vero) se c'e'  e 0 (falso) se non c'e'

Quote
Serial.avaliable restituisce 1 se è stato ricevuto qualcosa e 0 se non è stato ricevuto niente

Ma siete sicuri?
Quote
Syntax
Serial.available()
Arduino Mega only:
Serial1.available()
Serial2.available()
Serial3.available()
Parameters
none
Returns
the number of bytes available to read
Logged

Selvazzano Dentro - Padova
Online Online
God Member
*****
Karma: 28
Posts: 931
"Chi sa fa, chi non sa insegna"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

il numero intero più grande che puoi gestire direttamente senza l'ausilio di librerie matematiche corrisponde ad un unsigned long (4.294.967.296) e contando le cifre sono al massimo 10.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok ma quindi come faccio a sapere di quante cifre è il numero che inserisco??? perchè solo sapendo questo posso fare la conversione ad intero
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mi è venuta un'idea e vi chiedo se può essere accettabile il numero inserito va da 1 a massimo direi 3 cifre a meno che i prof non decidano di passare tutta la giornata a girare il potenziometro smiley-lol quindi se io prendo 3 valori ASCII e li inserisco in 3 variabili a se per esempio scelgono 1 devono inserire 001 se scelgono 10 sarà 010 perchè al momento non vedo soluzione soprattutto perchè altrimenti se io invio dal monitor seriale il numero 10 mi legge solo lo 0 si può con qualche for strano fargli leggere tutti i caratteri che io inserisco???
Logged

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3513
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Beh, esiste anche la Serial.ReadBytesUntil()
http://arduino.cc/en/Serial/ReadBytesUntil

e la Serial.ParseInt()
http://arduino.cc/en/Serial/ParseInt

che posso essere utili.
Inoltre se hai le cifre dentro ad una stringa (array di caratteri) terminato da '\0' allora puoi usare la atoi() o la atol()
http://www.cplusplus.com/reference/cstdlib/atoi/?kw=atoi
Logged

my name is IGOR, not AIGOR

Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la parseInt(); è grandiosa esattamente quello che cercavo
Logged

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 57
Posts: 3513
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se risolvi potresti:
1. aggiungere al titolo [Risolto] modificando il tuo primo post.
2. aggiungere un post dove alleghi il tuo codice, potrà essere utile ad altri   smiley-grin
Logged

my name is IGOR, not AIGOR

Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie smiley
Logged

Pages: [1]   Go Up
Jump to: