Numeri interi e frazionari.

Arduino supporta il lavoro con numeri interi in diversi sistemi numerici:
Base                          prefisso    esempio     caratteristiche
2 (binario)                B o 0b      B1101001   cifre 0 e 1
8 (ottale)                   0              0175             cifre da 0 a 7
10 (decimale)           no           100500         cifre 0 - 9
16 (esadecimale)     0x            0xFF21A      cifre 0-9, lettere A-F
Per i calcoli aritmetici, la cella predefinita è lunga (4 byte), ma la moltiplicazione e la divisione utilizzano int (2 byte), che possono portare a risultati imprevedibili. Se, moltiplicando i numeri, il risultato supera 32'768, verrà calcolato in modo errato. Per risolvere la situazione, è necessario scrivere (tipo di dati) prima della moltiplicazione, il che costringerà MCU ad allocare memoria aggiuntiva per il calcolo (ad esempio (lungo) 35 * 1000). Ci sono anche modificatori che fanno più o meno la stessa cosa.
  • u o U - conversione in formato unsigned int (da 0 a 65'535). Esempio: 36000u.
  • l o L - conversione in formato lung (-2 147 483 648... 2 147 483 647). Esempio: 325646L.
  • ul o UL - conversione in formato unsigned long (da 0 a 4 294 967 295). Esempio: 361341ul.
Arduino supporta i numeri in virgola mobile (decimali). Questo tipo di dati non è "nativo" per esso, quindi i calcoli con esso richiedono molte volte più tempo rispetto a un tipo intero (circa 7 microsecondi per azione). Arduino supporta tre tipi di input in virgola mobile:
Tipo di registrazione     Esempio     Che cosa è uguale
Decimale                          20.5             20.5
Scientifico                        2.34E5        2.34*10^5 o 234000
Ingegneria                        67e-12        67*10^-12 o 0,000000000067
Con i calcoli, esiste una tale caratteristica: se non ci sono numeri float nell'espressione, i calcoli avranno un risultato intero (la parte frazionaria viene tagliata). Per ottenere il risultato corretto, è necessario scrivere (float) prima dell'azione o utilizzare un numero float durante la scrittura.
float val;
val = 100 / 3; // conta ERRATO (risultato 3.0)
val = (float)100 / 3; // calcola correttamente (specifica (float))
val = 100,0 / 3; // calcola correttamente (c'è un numero float)
val = 100 / 3,0; // calcola correttamente (c'è un numero float)
float val2 = 100;
val = val2 / 3; // calcola correttamente (c'è un numero float)
Quando si assegna un numero float a un tipo di dati intero, la parte frazionaria viene tagliata. Se vuoi arrotondare- devi usarlo separatamente:
int val;
val = 3.25; // val prende 3
val = 3.92; // val prende 3
val = round(3.25); // val prende 3
val = round(3.92); // val prende 4
Leggi maggiori dettagli qui. 
Funzioni e costanti matematiche:
Arduino supporta molte funzioni matematiche, una piccola parte di esse sono funzioni macro fornite con Arduino.h, tutto il resto viene ereditato dalla potente libreria C++ math.h.
Elenco qui.

Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia