richiamare parte del codice solo in determinate condizioni

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.

innanzitutto è possibile?

dovrei scrivere una libreria per farlo?

studia le funzioni.

if (condizione) funzione()

Ciao Uwe

Certo che è possibile.

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...

rieccomi,

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ò

cerca "linguaggio c passaggio di parametri"

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);       // 
}

grazie mille,

una domanda, il fatto che l'ide permetta di avere piu schede è per questo?

cioe io creo delle funzioni che vado a scrivere in svariate schede, e che poi vado ad unire in un altra scheda principale?

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)?

Si, ris= <- return(somma)

Se la funzione ha davanti void, allora NON può ritornare nulla e quindi non puoi usare return