IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Faire clignoter deux LED à la fois avec une fréquence sinusoïdale


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2019
    Messages : 8
    Par défaut Faire clignoter deux LED à la fois avec une fréquence sinusoïdale
    bonjour et t'il possible que vous m'aider faire clignoter deux led a la fois avec une fréquence sinusoïdale parfaite on ma dit que l'arduino fessait pas bien les sinusoïdale
    je vous explique mon projet
    j'ai 7 led une rouge,jaune,bleu turquoise,rose,orange,vert,bleu foncé
    je voudrai que les led rouge et la led jaune s'allume en même temps avec c'est fréquence
    led rouge en 256.87hz
    led jaune en 323.63hz
    puis la led bleu turquoise et rose aussi en même temps avec une fréquence
    led turquoise en 384.87hz
    led rose en 484.90hz
    puis la led orange et verte en même temps avec une fréquence
    led orange 288.33hz
    led vert en 342.88hz
    et puis ma led bleu foncé toute seul en une fréquence de
    led bleu foncé 432hz
    par contre je ne veux pas de potentiomètre pour faire varié la fréquence juste rentré sa dans l'arduino et plus toucher
    et si possible d'avoir un temps d'attendre que je puisse moduler via l’Arduino entre les 4 cycle exemple quand la led rouge et jaune s'allume et qu'elle passe a la led turquoise et rose avoir un temps un delay de 1195 entre chaque cycle merci a tous

  2. #2
    Membre expérimenté Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Par défaut
    Bonjour,

    Pour nous éclairer qu'entends-tu par sinusoïdale ?
    Quels sont les LEDs utilisé ? N'a pas tu peur de dépasser le courant max de l'arduino ?

  3. #3
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2019
    Messages : 8
    Par défaut
    Bais dans l'arduino en sortie j'ai un signal carré mais
    moi je voudrai faire clignoter la led avec un signal sinusoïdale comme sur cette video :

    Alors pour les led c'est
    Led turquoise : 3.1v
    Led rouge : 2v
    Led vert : 3.1v
    Led orange : 2v
    Led jaune : 2v
    Led bleu foncé : 3.2v
    Led rose : 3.2v
    Normalement je depasse pas les 5 volt pour chacun donc sa doit passer

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonsoir

    Effectivement l'Arduino ne sait faire que du PWM, donc pas de belles sinusoïdes à espérer.
    Pour de l'affichage à destination d'un oeil humain, on peut faire varier le PWM selon une sinusoïdes, mais avec les fréquences que tu indiques j'ai comme l'impression que ce n'est pas ce qui est recherché.

    Pour faire exatement ce que tu souhaites (des quasi sinusoïdale entre 250 et 500Hz) il faudrait :
    - des circuits analogiques, par exemple des oscillateurs à pont de Wien dont l'activation seront contrôlé par l'Arduino. (mais c'est plutôt vielle école)
    - l'utilisation de convertisseur numérique - analogique (DAC), pour générer un signal analogique qui sera configuré en sinusoidale, mais pour avoir une bonne qualité il faut travailler à fréquence bien supérieur à celle du signal souhaité (à minima 100x, souvent 256x). Cela veut dire que dans ton cas l'Arduino risque d'être limite en vitesse, et surtout il faudra des DAC rapides ce qui ne court pas les rues dans le genre Shield Arduino.

    Edit: répondu sans avoir vu ton dernier message, ni la vidéo!
    Edit2: la fréquence sur la vidéo ce n'est pas en centaines de Hz comme dans le 1er message, mais autour du Hz, réalisable avec les PWM (6 canaux sur un Arduino, et possible par code sur les autres sorties).

    Bonne suite

    Delias

  5. #5
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2019
    Messages : 8
    Par défaut
    D'accord et si je prend un signal carré c'est moins compliquée a réalisé alors

  6. #6
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonsoir benoit31986
    Citation Envoyé par benoit31986 Voir le message
    D'accord et si je prend un signal carré c'est moins compliquée a réalisé alors
    Voilà ce que l'on peut faire avec du carré (PWM)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #define periodeTime 10                 // Temps d'une periode en millisecondes
    #define ledPinA 5                      // Connexion des la LED, pin PWM 3,5,6,9,10,11 (UNO)
    #define ledPinB 6                   
     
    void setup() {
    	pinMode(ledPinA, OUTPUT);
    	pinMode(ledPinB, OUTPUT);
    }
     
    void loop() {
    	for (int i = 0; i <= 255; i++)
    	{
    		analogWrite(ledPinA, i);
    		analogWrite(ledPinB, 255-i);
    		delay(periodeTime);
    	}
     
    	for (int i = 255; i >= 0; i--)
    	{
    		analogWrite(ledPinA, i);
    		analogWrite(ledPinB, 255-i);
    		delay(periodeTime);
    	}
     
    }
    Cordialement
    jpbbricole

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonsoir à tous

    La solution de jpbbricole, c'est ce que j'indique dans mes précédents messages comme étant du PWM modulé en sinusoïde, sauf que cela n'est valable que pour un ordre de grandeur du hertz, et non pour des fréquences de 256.87 à 432 Hz comme demandé. Le PWM de l'Arduino c'est environ 500Hz, et pour avoir quelque chose de propre la modulation doit être au moins 100 fois inférieure...

    Je ne comprends pas pourquoi vouloir faire cela, et donc je ne connais pas les contraires de précision qui sont nécessaires, d'autant avec des fréquences données à 5 chiffres significatifs (donc à priori demandant une grande précision).
    Programmer l'Arduino en langage Arduino cela restera difficile, mais programmer l'Arduino en C sans la surcouche comme dans cette série de tuto: Arduino et le langage C cela devient faisable à condition de ne pas débuter en programmation et en microcontrôleurs...

    Une des solutions pour un signal carré, c'est d'utiliser un des timers pour obtenir une tempo régulière et de courte durée, dans la routine d’interruption liée au timer, compter les interruptions et basculer les sorties au bon moment (toute les demi-période de la fréquence souhaitée).
    Une autre, c'est de reconfigurer à chaque phase la valeur maximale des timers, et dans l’interruption déclenchée par l'overflow faire basculer la sortie en question. Avec les deux timers à 16bits on peut gérer deux leds facilement en simultanéité (une sur chaque timer) et avec encore une bonne précision, bon il y aura un petit retard sur l'une des commutations si deux interruptions arrivent quasi en même temps.
    Une autre encore, c'est proche de la précédente sauf que l'on utilise les trois timers et la génération de PWM matériel, il faut configurer la période en fonction de la fréquence souhaitée et un taux de 50%. Cela ira pour 6 des 7 leds et pour la dernière il faudra faire comme la seconde variante.

    Maitre mot pour ces trois variantes, lire et comprendre la doc de l'ATMega328 si sur Uno!

    Bonne suite

    Delias

  8. #8
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonjour,

    dans la vidéo, l'effet est obtenu en modifiant le rapport cyclique du signal PWM. Voir l'exemple Fade que l'on peut également obtenir via le menu de l'IDE Arduino : Fichier->Exemples->Basics->Fade

    Citation Envoyé par benoit31986
    Alors pour les led c'est
    Led turquoise : 3.1v
    Led rouge : 2v
    Led vert : 3.1v
    Led orange : 2v
    Led jaune : 2v
    Led bleu foncé : 3.2v
    Led rose : 3.2v
    Normalement je depasse pas les 5 volt pour chacun donc sa doit passer
    ne confonds pas courant et tension. Tu dois brancher chaque LED sur une sortie de ton Arduino avec une résistance (voir le schéma de l'exemple "Fade" avec 1 LED) puis piloter chaque port (et donc chaque LED) séparément avec ton code.

    Citation Envoyé par benoit31986
    j'ai 7 led une rouge,jaune,bleu turquoise,rose,orange,vert,bleu foncé
    je voudrai que les led rouge et la led jaune s'allume en même temps avec c'est fréquence
    led rouge en 256.87hz
    led jaune en 323.63hz
    puis la led bleu turquoise et rose aussi en même temps avec une fréquence
    led turquoise en 384.87hz
    led rose en 484.90hz
    puis la led orange et verte en même temps avec une fréquence
    led orange 288.33hz
    led vert en 342.88hz
    et puis ma led bleu foncé toute seul en une fréquence de
    led bleu foncé 432hz
    j'aimerais bien comprendre d'où viennent les valeurs des fréquences que tu nous donnes. Pourquoi 256,87Hz ? 323,63Hz ? etc. Ces valeurs sont bien étranges pour un exercice avec des LED.

  9. #9
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 252
    Par défaut
    Salut,
    Juste pour le fun... tu pourrais essayer la solution du DAC que propose Delias.

    Il faudrait charger dans le Arduino une table sinusoïdale composée d'octets (8 bits) de 256 valeurs différentes par exemple (tu peux chercher des générateurs Sine look up table generator.) Voici par exemple, une table sinus de résolution 8 bits et de 256 valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,
    0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
    0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,
    0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
    0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,
    0xea,0xeb,0xed,0xef,0xf0,0xf2,0xf3,0xf4,
    0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfb,0xfc,
    0xfd,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,
    0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfd,
    0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,
    0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xeb,
    0xe9,0xe7,0xe5,0xe3,0xe1,0xdf,0xdd,0xdb,
    0xd9,0xd7,0xd4,0xd2,0xcf,0xcd,0xca,0xc8,
    0xc5,0xc3,0xc0,0xbd,0xba,0xb8,0xb5,0xb2,
    0xaf,0xac,0xa9,0xa6,0xa3,0xa0,0x9d,0x9a,
    0x97,0x94,0x91,0x8e,0x8a,0x87,0x84,0x81,
    0x7e,0x7b,0x78,0x75,0x71,0x6e,0x6b,0x68,
    0x65,0x62,0x5f,0x5c,0x59,0x56,0x53,0x50,
    0x4d,0x4a,0x47,0x45,0x42,0x3f,0x3c,0x3a,
    0x37,0x35,0x32,0x30,0x2d,0x2b,0x28,0x26,
    0x24,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,
    0x14,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,
    0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,
    0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,
    0x03,0x04,0x04,0x05,0x06,0x07,0x08,0x09,
    0x0b,0x0c,0x0d,0x0f,0x10,0x12,0x14,0x15,
    0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,0x25,
    0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,
    0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,0x4f,
    0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,
    0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c,0x80,
    Ensuite, créer un petit DAC R2R comme ci dessous, les broches BIT0 à BIT7 vont sur un port du Arduino et sur le quel tu appliques une à une les valeurs contenues dans la table sinus. La tension de sortie étant a prendre entre le BIT7 et le 0V

    Nom : R-2R-DAC-circuit.png
Affichages : 4022
Taille : 45,9 Ko

    Suivant la rapidité avec la quelle tu déroules la table sur le port du Arduino, tu feras évoluer la fréquence du sinus (les prémices d'un Direct Digital Synthesys )

Discussions similaires

  1. Jointure de deux tables de faits avec une dimension
    Par waloo5 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/04/2012, 00h23
  2. Faire apparaitre les différences de tables avec une jointure
    Par Nitromard dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/05/2011, 11h02
  3. [Débutant] Faire appel à un programme plusieurs fois dans une boucle for
    Par hibouchka dans le forum MATLAB
    Réponses: 9
    Dernier message: 01/03/2011, 17h09
  4. Pb d'insertion deux fois avec une query d'un dataAdapter
    Par Contact2012 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/09/2008, 14h48
  5. Réponses: 24
    Dernier message: 08/05/2008, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo