Setup et Loop en même temps

Bonjour,
J'ai un code dans le setup avec une boucle (while(1)),

Je voulais savoir si je mettais du code dans le Loop(), il s'executait ?

sinon, je dois passer par des threads ?
ce thread ne fait que lire un port série (SoftwareSerial) et envoyé un carctère si il y en a un.

Merci.

setup() est exécuté une fois. loop() est un while(1)

je voulais dire que dans le setup j'ai un truc du genre:

void setup() {
  Serial1.begin(115200);
  mySerial.begin(4800);
  delay(1000);
  //cansi.xprintf("widht: %d height: %d", cansi.getScreenWidth(), cansi.getScreenHeight());  
  cansi.termFlush();
  cansi.clearscr();
  cansi.cursoroff();
  
  while (1) {    
    if (handle_program() == true) break;
  }
  
  cansi.textcolor(cansi.Red);
  cansi.cputs("\r\nTerminated!\r\n");
  cansi.cursorunderline();
  cansi.textattr(cansi.Black, cansi.White);
  cansi.clearscr();
  cansi.cursoron();
  //while(1);

}

ca envoi des données dans un terminal VT100, comme le terminal n'a pas de clavier,
j'ai un petit module ps2 en uart sur lequel j'ai branché un clavier, et avec myserial je dois récupérer le car. du clavier pour le rediriger vers le port série Serial1 du la carte.

c'est ce code que je dois mettre dans un thread ou un timer de 2 ms je pense:

if(mySerial.available()) {
      int ch = mySerial.read();
      if(ch != 'K' && ch != 'B') {
        Serial1.write(ch);
      }
      
  }

Il n'y a rien de mal non plus à exécuter l'intégralité de votre programme à partir de setup(). Il s'agit d'une autre fonction de la fonction main() d'Arduino.

Tant que la condition dans le if n'est pas "vraie" tu ne peux pas sortir du while et donc passer dans loop.

La structure du fichier "réel" que l'IDE transmet au compilateur peut se trouver dans les fichiers de l'IDE, il s'agit de main.cpp
Exemple de main.cpp pour les microcontrôleurs avr.
Pour les microcontrôleurs non avr (ARM32, ESP32, STM32) le fichier sera probablement différent.

/*
  main.cpp - Main loop for Arduino sketches
  Copyright (c) 2005-2013 Arduino Team.  All right reserved.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#include <Arduino.h>

// Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (* /*func*/ )()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }

void setupUSB() __attribute__((weak));
void setupUSB() { }

int main(void)
{
	init();

	initVariant();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}

Merci pour l'info, j'ai résolu le probleme, tous ce qui est en sorti vers le VT100 j'utilise Serial1 et tous ce qui est en entrée au clavier j'utilise mySerial, dans le code, qui est connecté au module clavier.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.