scanf pour arduino

Bonjour,

Je travailles sur mon projet pour la revue de projet finale pour le lycée qui est sur la domotique.

Petit problème, j'ai programmé une horloge mais il faut que je modifie directement le programme afin de choisir l'heure de départ. Je voudrais donc savoir si il y avait comme en C une commande comme scanf mais pour arduino avec le moniteur?

Voici pour les intéressés voici le code de mon horloge:

int secondes = 0;
int minutes = 0;
int heures = 0;

void setup (){
  Serial.begin (9600);
}

void loop () 
{
  secondes = secondes + 1;

  if (secondes == 60) 
  {
    secondes = 0;
    minutes = minutes + 1;


  }
  if (minutes == 60) 
  {
    minutes = 0;
    heures = heures + 1;
  }
  if (heures == 24){
    heures = 0;
    minutes = 0;
    secondes = 0;
  }
  Serial.print(heures);
  Serial.print (" h ");
  Serial.print(minutes);
  Serial.print(" min ");
  Serial.print(secondes);
  Serial.println(" sec");
  delay(1000);
}

Quelque chose comme:

char incomingBytes[10];
int vals[6];

void setup() {
  Serial.begin(9600); 
}

void loop() {
 
  if (Serial.available() > 0) {
    Serial.readBytesUntil('\n', incomingBytes, sizeof(incomingBytes) / sizeof(char) );
   vals[0] = atoi(incomingBytes);
    Serial.print("I received: ");
    Serial.println(vals[0], DEC);      // In my case, I need to write that: Serial.println(incomingByte-48, DEC);
  }
}

?

Comme dit précédemment tu peux récupérer tes réglages via des données que tu enverras sur ta liaison série.

Par contre avec l'affichage et le délai bloquant, ta seconde ne doit pas être très précise.

Merci pour vos réponses.

Mais j'ai du mal comprendre certaines lignes. Tout d'abord, à quoi set le:

if (Serial.available() > 0) {

Ensuite pour cette ligne:

Serial.readBytesUntil('\n', incomingBytes, sizeof(incomingBytes) / sizeof(char) );

Je comprends ce que tu fais mais peux-tu m'expliquer comment çà marche? Car je ne comprends pas par exemple a quoi sert cette partie:

sizeof(incomingBytes) / sizeof(char)

Et, pour finir, que fait atoi? Qu'elle est sa signification?

Merci d'avance.

Pour faire simple il faut que tu scrutes la ligne du serial et ça se fait avec la fonction if (Serial.available() > 0)
Ensuite tu récupères les valeurs reçues avec Serial.read

Utilises plutot ce code plus simple:

int incomingByte = 0;   // for incoming serial data

void setup() {
        Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
}

void loop() {

        // send data only when you receive data:
        if (Serial.available() > 0) {
                // read the incoming byte:
                incomingByte = Serial.read();

                // say what you got:
                Serial.print("I received: ");
                Serial.println(incomingByte, DEC);
        }
}