Assegnare a una variabile il valore di un puntatore

Ciao a tutti, ho un problema, questo è il codice:

void funzione(decode_results *results) {
  if (results->decode_type == SONY) {
    Serial.print("val ricevuto:");
    Serial.println(results->value, DEC);
    
    val = (results->value, DEC);    //Ho tentato così
    
    val = map ( val , 0 , 1023 , 0 , 255 );
//    Serial.println(val);
    analogWrite(ledPin1, val);

si tratta di ricezione IR. Non riesco ad assegnare alla variabile val il valore di (results->value, DEC);
Ho provato anche con val = int (results->value, DEC);
Forse perchè c'è un puntatore.

Questo mi serve per variare la luminosità di un led.

Se magari spendessi un po' di tempo a STUDIARE e a guardare come funziona la Serial.print scopriresti che ... la parolina DEC serve ad indicare alla Serial.print che si vuole la stampa del risultato in decimale e che quindi non ha nulla a che fare con operazioni di assegnazione del valore. :smiling_imp:

Guglielmo

Adesso lo so e si può stampare anche in hex ma allora come faccio ad assegnare quel valore decimale alla variabile, dove vado a prendere quel numero decimale?
Abbiate pazienza!

Ok funziona con

val = results->value

Ma studierò anche di più!
Grazie, ciao!

drinu75:
Ok funziona con

val = results->value

Ma studierò anche di più!
Grazie, ciao!

results è un puntatore ad una struct o a un oggetto.
Se fosse direttamente una struct, accedi a un singolo elemento che lo compone con il punto es. results.value
Essendo puntatore il C richiede come sintassi l'uso del -> quindi results->value ovvero attraverso un puntatore accedo ad uno degli elementi della struct; l'elemento si chiama value.

drinu75:
Ma studierò anche di più!
Grazie, ciao!

Bene, allora puoi cominciare con QUESTO e puoi scaricarti QUESTO libro (... tranquillo, è un sito legale, purché per esclusivo uso PERSONALE).

Sempre sullo stesso sito, se ti interessa come si usano seriamente i puntatori c'è anche QUESTO :wink:

Guglielmo