salve a tutti, mi scuso per il titolo un po enigmatico ma non so bene come spiegarmi.
io ho creato un pezzo di codice che da un numero me ne da altri 3 per l'accensione pwm di alcuni led.
vorrei richiamare tale codice in modo pulito (in realta cio è piu a scopo didattico che altro, me la potrei cavare con qualche if) cioe io chiamando una funzione, vorrei ricevere questi tre numeri, in poche righe.
Un modo un po' "sporco" ma immediato è usare tre variabili globali x, y, z e fare una funzione void
int x = 0;
int y = 0;
int z = 0;
.....
int k = 0;
k = .....
calcola (k);
...
void calcola (int w)
{
x = w * 12;
y = w * 20;
z = w * 33;
if (x > 255)
{
x = 255;
....
}
....
}
in questo modo quando richiami la funzione ti verranno ricalcolati i valori di x, y, z in funzione del tuo parametro k
Però si può essere più raffinati.
Usando gli array...
mi sono studiato (un po) l'argomento, al momento io ho creato una funzione void, che però sfrutta unicamente variabili globali, vorrei che nella chiamata andasse a chiamare delle variabili per valore, tramite altre locali svolgesse la funzione e che a fine funzione andasse a modificarne altre 3 globali, come output.
per gestire le variabili a livello locale devo solo dichiararle all interno della funzione stessa, li vivrebbero e finirebbero di vivere alla conclusione della funzione giusto?
per chiamare delle variabili per valore (tipo la x di map() ) non so come fare, ne dove devo dichiarare ciò
int x=3,y=2,ris;
ris=miaFunz(x,y); // ris=p1+p2 quindi x+y quindi 3+2
...
void miaFunz(int p1, int p2)
{ // p1 ha il valore di x quindi 3, p2 ha il valore di y quindi 2
int somma=p1+p2;
return (somma); //
}
sto osservando il tuo codice, hai dichiarato risp come variabile, variabile uguale a miaFunz, quel return fa assumere a miaFunz (e quindi a risp) il valore di (somma)?