Ensuite je dois attendre une tempo (qui sera définit au moment de la mise en œuvre) disons par exemple 20ms.
Et changer la PWM sur une sortie en fonction de cette entrée.
char result[10];
//Données entrée :
//Je récupère mon entrée avec dans une variable val_pwm=atoi(result)
//En fonction de la valeur de result je configure une valeur en val_PWM.
val_pwm = map(atoi(result),8000,0,0,255);
//En fonction de la valeur de result je configure une valeur en val_PWM.
analogWrite(pin_pwm, val_pwm);
Se ne sais pas comment m'y prendre pour ajouté la tempo.
Maintenant je dois ajouter un décalage, une tempo entre l'entrée result et la commande val_pwm. Bien sur le programme doit continuer de lire l'entrée en permanence et le programme ajuster la sortie avec juste un décalage.
j'ai lu qu'il fallait utiliser une fifo avec des pointeurs ou tableaux, ou ailleurs la fonction millis() mais j'ai du mal a définir algo, notamment la boucle et aussi la gestion des déplacements.
Il faudrait apporter des prévisions sur les timings et ce qu'il se passe réellement
Généralement on utilise un buffer circulaire dimensionné pour absorber des pics en entrée mais il faut absolument que de temps en temps les choses se ralentissent sinon vous perdrez des données
Un algorithme, c'est une description textuel d'un enchaînement d'actions élémentaires pour réaliser une tâche. Il n''est pas nécessaire d'avoir la moindre connaissance en programmation pour écrire un algorithme.
Tu peux le faire.
Le passage au codage lui demande de connaître le langage de programmation.
j'ai bien compris, pour coder il faut l'algo. Je suis débutant en arduino mais est des bases (scolaire de 10 ans) en C++.
En faite je n'arrive pas a implémenter les buffers circulaires dans mon bout de programme.
J'ai trouver une librairie CircularBuffer.h , mais comment l'ajouter a mon prog ??
Il faut que tu inclues le CircularBuffer.h dans ton projet (le plus simple c'est de copier dans le répertoire de on .ino)
Ensuite tu ajoutes le #include, puis tu définis ton buffer. La classe CircularBuffer est définie avec un template donc c'est une définition un peu particulère.
Tu ne mets pas la la définition de la class CircularBuffer dans loop.
Tu télécharges le fichier CircularBuffer.h et tu le mets dans ton projet e le copiant dans le répertoire de ton fichier .ino
Ensuite tu fais un #include de ce fichier et tu définis ta file d'attente que j'ai appelé fifo, mais que tu peux nommer comme tu veux.
push() c'est pour mettre une valeur dans la file d'attente (buffer circulaire)
et pop() pour la sortir.
Pour faire ce que tu veux faire il faut que le temps de retard soit un multiple de la période ou tu reçoit tes données.
Par exemple si tu reçois des données toutes les 10ms et que tu veux un retard de 20ms:
pour les 2 première données reçues tu les mets dans la file avec push()
ensuite à chaque donnée reçue tu la mets en file d'attente avec push() et tu dépiles une donnée avec pop() pour faire le traitement.