Convertire una variabile char in un intero

Buona sera a tutti.
Mi chiamo luca e sono nuovo del forum,per tanto spero di aver scelto la sezione adatta dove scrivere;in caso contrario chiedo scusa per il mio errore.
Le mie conoscenze di arduino(e del linguaggio C in generale)sono molto limitate dal momento che ,nei ritagli di tempo, ho cercato di imparare da autodidatta ciò che mi serviva,per cui ci saranno diversi errori tecnici che posso aver commesso nel mio progetto che ora cercherò di spiegarvi in sintesi.....quindi non arrabbiatevi per le evenutali castronerie che potrete leggere,come ho gia spiegato ho dovuto arrangiarmi.
Per la realizzazione del progetto ho montato su una breadboard :
-uno schermo lcd 20x4;
-un pad numerico 4x4(4 righe e 4 colonne);
-un led rgb con anodo comune;
-altri sensori che non vado a menzionare per non appesantire troppo la spiegazione;
Descritta in breve la parte hardware la parte software consiste sostanzialmente in un menù tramite il quale l'utente,con l'ausilio del pad numerico,può accedervi,uscirvi e selezionare le diverse voci che lo compongono.
Tra le varie voci del menu(per fare un esempio)cè "visualizza ora" o "visualizza tempertaura";se selezionata una delle opzioni citate il programma riporta l'utente al menu principale visualizzando sullo schermo lcd l'ora o la temperatura(ciò è reso possibile nello specifico da un sensore di temperatura dht11 e da un rtc 1307 per ottenere l'ora corretta).
Ho realizzato il programma in maniera tale che ,una volta fatto accesso al menu citato prima, il led rgb si accenda con una precisa "miscela" di colori; lo stesso led rgb cambierà "miscela" ogni qualvolta uno dei sensori collegati al programma rileva un cambiamento(per fare un esempio ho una fotoresistenza montata sul circuito;finchè la luminosità rilevata dalla fotoresistenza rimane sotto una soglia il led rgb sarà azzurro,nel momento in cui invece la luminosità sale oltre la soglia il led rgb diventerà giallo).
Nel menu ho realizzato una voce " impostazioni",che se selezionata,deve dare la possibilità all'utente di cambiare alcuni parametri tramite l'uso del pad numerico,come ad esempio la soglia della fotoresistenza oppure i parametri per la "miscela" del led rgb.
Per venire quindi alla mia domanda:
Per fare ciò che ho detto prima io devo poter convertire i numeri del pad numerico(che sono char) in numeri interi da inserire nei parametri che mi servono....qualcuno saprebbe aiutarmi?
Grazi mille in anticipo.

Buonasera e benvenuto, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nel rispetto del suddetto regolamento nessuno ti risponderà, quindi ti consiglio di farla al più presto. :wink:

Ci sono diversi modi per ottenere quello che chiedi. Cercare con Google "arduino char to int conversion" ti porta all'uso di funzioni che ti facilitano il compito (alcune dannose, come 'String') ma non ti portano a capire come il 'C' tratta i codici ASCII.

Ad ogni carattere ASCII corrisponde un valore numerico. Questa tabella ti riporta il valore per ogni carattere. Puoi vedere subito che i numeri da 0 a 9 sono codificati da 48 a 57 (decimale). Per ottenere un numero intero dal corrispondente carattere ASCII basta sottrarre 48. Per ottenere un numero formato da più caratteri basta prendere il primo, sottrarre 48, moltiplicare per 10, prendere il secondo, sottrarre 48, sommarlo al risultato ottenuto prima, e così via. Più difficile a dirsi che a farsi.

Buon lavoro.

Ciao,
P.

Grazie mille per l'aiuto pgiano.
In realtà avevo già dato un occhiata su Google e ho visto che in effetti alcuni facevano riferimento alla tabella ASCII che hai menzionato,ma personalmente ho trovato poco Chiari i consigli che davano in merito,così ho preferito chiedere sul forum per avere consigli da gente competente....tanto per dirne una almeno hai saputo dirmi quale genere di operazioni eseguire per ottenere il risultato che cerco.
Ti ringrazio nuovamente di cuore;appena possibile provvederò a fare come hai detto(reperendo prima una tabella ASCII ovviamente)e eventualmente effettuerò una ricerca più approfondita.
Buona giornata.
Luca.