Conversione char a Int

Buongiorno, sto trovando delle grosse difficolta a convertire "char" in "int" .. char provenienti dalla Seriale.. qualcuno può aiutarmi? anche qualche link chiaro su come fare , e possibilmente in Italiano :=

Grazie :slight_smile:

ovvero ti arriva un carattere da '0' a '9' e tu lo vuoi convertire in un vero numero da 0 a 9?

if (Serial.available()>= 1)
{
    byte n = Serial.read();
    n -= '0';
    Serial.print("ho ricevuto ");
    Serial.println(n);
}

No, perchè in questo modo sul seriale mi visualizza un bit per riga :se ad esempio invio il numero "15" mi restituisce

ho ricevuto 1
ho ricevuto 5
ho ricevuto 221
ho ricevuto 218

invece a me interessa avere un valore unico, esempio:
invio 1000 .. arduino lo salva in una int "ritardo"
e su void loop() avrò ad esempio

delay(ritardo);
digitalWrite(13,HIGH);

Devi memorizzare le varie cifre e poi convertirle oppure usi la Serial.parseInt()

Grazie :).. provando un esempio presente in arduino ho risolto così :

void loop() {
  // Read serial input:
  while (Serial.available() > 0) {
    int inChar = Serial.read();
    if (isDigit(inChar)) {
      // convert the incoming byte to a char
      // and add it to the string:
      inString += (char)inChar;
    }
    // if you get a newline, print the string,
    // then the string's value:
    if (inChar == '\n') {
      Serial.print("Value:");
      Serial.println(inString.toInt());
      tempo=inString.toInt();
      Serial.print("String: ");
      Serial.println(inString);
      // clear the string for new input:
      if (tempo> 1) {
        
        digitalWrite(13,HIGH);
        delay(tempo);
        digitalWrite(13,LOW);
        tempo = 0;
      }
      
      
      inString = "";
    }
  }
}

L'ho provato e sembra funzionare.. anche se, devo utilizzare unsigned long al posto di int per un ritardo di 2 minuti (120000) ...

Per quanto riguarda "Serial.parseInt" ci sono esempi? giusto per capire come funziona.. :stuck_out_tongue:

int k;
k=Serial.parseInt();

tutto qui

Semplice ed efficace