Appunti di programmazione su Arduino: operazioni matematiche

min(x,y)

Calcola il minimo tra due numeri dati di qualsiasi tipo (nel senso di campo di appartenenza) e restituisce il più piccolo.

Parametri

x è il primo numero

y è il secondo numero

Risultato

il più piccolo tra x e y

value = min(value, 100); // imposta 'value' al valore più
                         // piccolo tra i due valori dati,
                         // 'value' o 100,
                         // assicurando che il valore
                         // non superi 100

max(x,y)

Calcola il massimo tra due numeri dati di qualsiasi tipo  (nel senso di campo di appartenenza) e restituisce il più grande.

Parametri

x è il primo numero

y è il secondo numero

Risultato

il più grande tra x e y

value = max(value, 100); // imposta 'value' al valore più
                         // grande tra i due valori dati,
                         // 'value' e 100,
                         // assicurando che il valore
                         // non superi 100

abs(x)

Restituisce il valore assoluto di x, che trasforma un numero negativo in un numero positivo.

Parametri

x: il numero

Risultato

x: se x è uguale o maggiore di 0

x: se x è minore di 0

Se x è uguale a 100 allora abs(100) restuiterà 100. Se x è uguale a -100 allora abs(-100) restituisce 100.

value = abs(-100); // alla variabile 'value'
                   // viene assegnato il valore 100

constrain(x, a, b)

Vincola un numero all’interno di un intervallo.

Parametri

x: il numero che deve essere vincolato (può essere di qualsiasi tipo)

a: il numero più piccolo dell’intervallo (può essere di qualsiasi tipo)

b: il numero più grande dell’intervallo (può essere di qualsiasi tipo)

Risultato

x: se x e tra a e b (ma diverso sia da a che da b)

a: se x è minore di a

b: se x è maggiore di b

sensVal = constrain(sensVal, 10, 150);
// limita il range del valore del sensore tra 10 e 150

map(value, fromLow, fromHigh, toLow, toHigh)

Rimappa un numero da un intervallo ad un altro intervallo

Parametri

value: valore da rimappare
fromLow: valore minimo dell’intervallo di partenza
fromHigh: valore massimo dell’intervallo di partenza
toLow: valore minimo dell’intervallo di arrivo
toHigh: valore massimo dell’intervallo di arrivo

Risultato

valore rimappato nell’intervallo toLow, toHigh

/* rimappa un valore analogico utilizzando 8 bit (da 0 a 255) */

void setup() {}

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}

Si faccia riferimento alla lezione: Appunti di programmazione su Arduino: ingressi e uscite analogiche

Analizziamo il codice

int val = analogRead(0);

viene dichiarata val come variabile intera a cui viene assegnato il valore restituito da analogRead(0) che legge un valore di tensione applicato al piedino analogico 0 (la risoluzione è di 10 bit e quindi da 0 a 1023)

Il valore memorizzato in val viene rimappato dall’intervallo [0, 1023] all’intervallo [0, 255].

analogWrite(9, val);

Scrive sul piedino digitale 9 (piedino su cui è abilitato il PWM) il valore assunto dalla variabile val.

pow(base, exponent)

Calcola la potenza di un numero.

Parametri

base: numero (tipo float)

exponent: la potenza a cui è elevata la base (tipo float)

Risultato

Il risultato dell’ elevamento a potenza (tipo double)

sqrt(x)

Calcola la radice quadrata di un numero.

Parametri

x: il numero che può essere di un qualsiasi tipo

Risultato

la radice quadrata del numero (tipo double)

Per le lezioni precedenti consultare la sezione Appunti di programmazione che trovate nella pagina Arduino di questo sito.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.