Relancer la loop

Bonjour Est-il possible de relancer la loop depuis le début par exemple via une interruption ? Peut-on exécuter une interruption sur l'arrivée d'un caractère dans le port suite ? Merci

Avec « goto » même si son usage est fortement déconseillé?

Reset logiciel?

Non c'est pour sortir d'une fonction provenant d'une bibliothèques

Salut

Non c'est pour sortir d'une fonction provenant d'une bibliothèques

Explique plutôt pourquoi et comment tu veux faire cela. Par un bouton, le clavier du PC ?

@+

le principe meme de la loop, c'est qu'elle se relance à l'infini, justement... si le but est de sortir "de force" d'une fonction dans une lib, tu dois pouvoir le faire avec une interruption qui provoque un reset, mais dans ce cas tu va relancer le total,y compris setup()

lesept: Bonjour Est-il possible de relancer la loop depuis le début par exemple via une interruption ? Peut-on exécuter une interruption sur l'arrivée d'un caractère dans le port suite ? Merci

Hello

Mauvaise idée / mauvaise solution. Il vaut mieux repartir du problème pour avancer dans la bonne direction.

Quel est le problème exactement ?

C'est dans le post "Horloge géante". Un message est envoyé depuis un téléphone en BT et affiché sur une matrice de leds, grâce à une fonction de la bibliothèque Adafruit Neomatrix.

Cette fonction est bloquante, pour ce que j'en sais, mais ASSM voudrait que l'affichage se mette à jour à chaque fois qu'il envoie un nouveau texte en BT, sans attendre la fin de l'affichage en cours.

D'où mon idée de sortir de la fonction par une interruption et relancer la loop qui lit le port série, mais il y a peut-être mieux... ?

le problème, c'est qu'a moins de modifier la fonction concernée dans la librairie, il n'y a pas vraiment de solutions. relancer la loop via une interruption ne donnera rien de bon, car ça va faire des appels récursifs, et rapidement explosion de la pile,de la ram et toutes sortes de choses fantastiques...

Sans modifier la lib, à part déclancher un reset, je ne vois pas

Damned ! J'avais un peu peur de ça...

Il y a néanmoins un truc qui semble bizarre dans ton diagnostic. Le montage en question vise à contrôler des led en ruban ou tableau. Je ne vois pas trop ce qui pourrait nécessiter de passer par une fonction qui dure longtemps, au point de vouloir l'interrompre.

Et adafruit est en général un fournisseur de bibliothèques de bonne qualité.

Bon ben je vais me taper la lecture des 18 pages de l'horloge géante :)

Bon courage, un conseil : commence par la fin... Tu arriveras plus vite au problème

Lu en diagonale.

Je vois des codes qui contiennent l’instruction delay(), par exemple pour gérer le défilement du texte.

Il faut tous les supprimer et baser le code sur millis().
C’est la première chose à faire pour que le programme puisse faire “plusieurs choses à la fois” : gérer l’affichage LED et assurer la réception des nouvelles consignes.

La réception des consignes (=texte à afficher) soit via la liaison série soit via le bluetooth peut être mise au point indépendamment de l’affichage.

Merci J'ai fait ça et le premier résultat est positif. Il reste un petit réglage à faire pour que l'arrivée d'une nouvelle commande arrête l'affichage en court le remplace.