sigmoid curve

Bonjour,

Je suis à la recherche d'une fonction afin de gérer la montée et la descente d'un éclairage à base de leds de façon sigmoïde Sigmoïde (mathématiques) — Wikipédia

Pour le démarrage, l'arrêt et la gestion de la progression j'utilise une base de temps en secondes
#define heureSeconde ((RTC.hour3600L)+(RTC.minute60)+RTC.seconde)

J'arrive sans problème à allumer et éteindre l'éclairage de façon linéaire en utilisant la fonction
"map(heureSeconde, debut, fin, 0, 255)" mais le rendu ne me plait pas.

Quelqu'un serait il m'aider à faire une fonction montante et descendante sigmoïde ?
Merci d'avance pour votre aide ... :wink:

Hello,
I am looking for a function to manage the rise and lighting based on LEDs so sigmoid descent (http://fr.wikipedia.org/wiki/Sigmo% C3% AFde_ (% C3 math A9matiques%)).
To start, stop and manage the progression I use a time base in seconds
# define heureSeconde ((RTC.hour * 3600L) + (RTC.minute * 60) + RTC.seconde)
I got no problem to turn on and off lighting using linear function
"map (heureSeconde, start, end, 0, 255)" but the result does not please me.
Someone would help me make a rising and descending sigmoid function?
Thank you in advance for your help ...

check - Saturation Function for Sliding Mode Control - Project Guidance - Arduino Forum - for ideas
use analogwrite() to control the led brightness

Un peu plus d'informations concernant votre lien me serait utile car je ne vois pas à quoi sert cette fonction.

bonjour,
tu as l'exemple dans l'ide avec dimmer de mémoire :wink:

"dimmer de mémoire" pas dans les exemples de l'ide..... =(..... Personne ne peux m'aider sur ce coup ?? =(

Please post the code you have written so far

rico37350:
"dimmer de mémoire" pas dans les exemples de l'ide..... =(..... Personne ne peux m'aider sur ce coup ?? =(

Tu te foules pas beaucoup...

IDE >> fichier >> exemples >> 04 communication >> Dimmer....

Et tout ça de mémoire pour infobarquee XD

Ce que je ne comprends pas c'est que dans le lien que tu donnes (enfin en bataillant un peu parce que le lien est pourri) tu as la définition de la sigmoïde. Donc quel est ton problème?

lien corrigé :wink:

Je me pose les mêmes questions que Fdufnews.

Quel est exactement ton problème ?

  • Comprendre et utiliser la formule mathématique de la sigmoïde ?
  • Réussir à transcrire cette formule dans de la PWM ?
  • Réaliser le circuit électronique de commande ?

Tant qu'on ne sera pas clair sur ces points cela ne servira à rien de parler de code.

Le problème est de retranscrire la formule afin d'être exploitable sur l'arduino.

OK.
La formule est "mathématique pure". Elle est définie de x=-infini à x=+infini.
Pour x,=0 F = 1/2., pour x= -infini elle est égale à 0 et pour x=+infini est est égale à 1.
Si en mathématiques pures cela ne pose aucun problème, ce n'est pas exploitable dans une optique "Physique électronique" où on ne remonte pas le temps.

Première chose à faire étudier la fonction, comme je suis un peu fainéant je l'ai tracée dans une feuille de tableur pour différente valeur de lambda --> c'est très facile à faire. Voir image sigmoide_mathématique.png.

A partir de maintenant on met les pieds sur terre on quitte les maths pures et on approxime.
Comme on est dans le réel on n'utilise plus x mais t, symbole physique du temps.
Supposons que ce soit la courbe pour lambda =1 qui convienne. Note bien c'est arbitraire-> ce n'est que mon choix, peut-être préfèrera-tu Lambda = 0,75.

Qu'est ce qu'on voit ?
On voit que pour lambda = 1 l'amplitude du signal commence à décoller de 0 pour t= -5,4.
Pas de soucis pour décaler les abscisses de 5,4
F= 1/(1+e-(Lamba(t-5,4) ).
On obtient la nouvelle courbe sigmoide_physique_L1.png.
C'est maintenant exploitable pour créer un signal.

Après il reste à convertir en PWM.
Mais là il faut que tu bosse un peu.
Une feuille de tableur, un pas dans le domaine temporel à définir et l'application de la règle de trois cela devrait le faire.

Sigmoide_mathematique.png

Sigmoide_physique_L1.png

Pour faire simple, tu peux approximer ta courbe par 5 segments de droite, on n'y verra que du feu.

Trop fastoche :grin:

Merci beaucoup d'avoir pu m'expliquer comment modéliser la fonction, j'ai maintenant une base pour essayer.... :wink:

Retiens une chose : quand on voit pas bien une fonction : le tableur est vrai copain.

Cet outil pourrait en intéresser certains: SMath Studio
Plus pratique que le tableur dans certains cas et la présentation est plus mathématique du point de vue de l'écriture.
Bien fichu, la saisie est peut être un peu ardue au début mais il y a des tutos.
Et multi-plateforme (Windows, Linux) utilise .NET sous windows et Mono sous Linux.

Dans le même ordre d'idée il y a QtiPlot.
Multiplateforme (sans .net ni .mono)

Un peu déroutant --> ressemble à une feuille de tableur mais n'en est pas un.
Très bon pour approximer une courbe (sur ce point Excel n'est pas très bon et OpenOffice est littéralement ko).
Peut faire graphiquement : intégrale, dérivée et plein d'autre choses.

Merci les gars j'y ai jeté un oeil et ça m'a l'air plutot pas mal me reste plus qu'à apprendre à m'en servir :cold_sweat: