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 :

Variation d'intensité et clignotement d'une led en meme temps


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Amateur
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Variation d'intensité et clignotement d'une led en meme temps
    Bonjour,

    j'apprend la programmation d'un arduino et j'aimerais faire clignoter et varier la luminosité d'une led en meme temps.

    J'ai récupérer un programme de variation et j'ai simplement collé le fameux programme blink au bout et ça fonctionne mais une opération après l'autre. pas en meme temps.

    J'aimerais donc savoir c'est bien possible et si oui comment faire?

    voila le code actuel

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    // --- Programme Arduino ---
    // par X. HINAULT - 01/2010 
     
    // --- Que fait ce programme ? ---
    /* Fait varier la luminosité d'une LED connectée sur la broche 3*/
     
    // --- Fonctionnalités utilisées ---
     
    // --- Circuit à réaliser ---
    // Connecter une LED et sa résistance sur la broche 3 (configurée en sortie)
     
    //**************** Entête déclarative *******
    // A ce niveau sont déclarées les librairies, les constantes, les variables...
     
    // --- Inclusion des librairies utilisées ---
     
    // --- Déclaration des constantes ---
     
    // --- constantes des broches ---
     
    const int LED=3; //declaration constante de broche 
     
    // --- Déclaration des variables globales ---
    int i=0; // variable de boucle
     
    // --- Initialisation des fonctionnalités utilisées ---
     
    //**************** FONCTION SETUP = Code d'initialisation *****
    // La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
     
    void setup()   { // debut de la fonction setup()
     
    // --- ici instructions à exécuter au démarrage --- 
     
    pinMode(LED, OUTPUT); //met la broche en sortie 
     
     
     
    } // fin de la fonction setup()
    // ********************************************************************************
     
    //*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
    // la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension
     
    void loop(){ // debut de la fonction loop()
     
    for (i=0; i<=255;i++){ // boucle for compte de 0 à 255
     
    analogWrite(LED,i); // génère une impulsion sur la broche de largeur i = la luminosité augmente
     
    delay(10); // pause de 10 ms entre chaque "cran"
     
    } // fin de la boucle for
     
    for (i=0; i<=255;i++){ // boucle for compte de 0 à 255
     
    analogWrite(LED,255-i); // génère une impulsion sur la broche de largeur 255-i 
                            // = la luminosité baisse
     
    delay(10); // pause de 10 ms entre chaque "cran"
     
    } // fin de la boucle for
     
    // --- ici instructions à exécuter par le programme principal --- 
     
    {
      digitalWrite(LED, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(random(10,150));                       // wait for a second
      digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
      delay(10);                       // wait for a second
    }
     
    } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
    // ********************************************************************************
     
    // --- Fin programme ---
    Merci

  2. #2
    Membre averti

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 204
    Points : 308
    Points
    308
    Par défaut
    Bonjour

    Si je comprend bien tu veux faire :

    Allumé intensité10 pendant 10 ms
    Eteint pendant 10ms
    Allumé intensité 20 pendan10ms
    Eteint pendant 10ms,
    etc......

    La fonction loop{} de l'arduino est parcourue une instruction a la suite de l'autre
    Donc to programme exécute les instructions suivantes et dans cet ordre :

    la 1° boucle for()
    allume "lentement" une LED en la faisant clignoter,
    la 2° boucle for()
    eteint lentement la LED en la faisant clignoter
    la 3° "boucle"(qui n'en n'est pas une)
    allume un temps aléatoire la LED, puis l'éteint (une seule fois)

    ensuite on recommence à la boucle 1


    essaye plus tôt quelque chose comme ceci

    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
     
     
    loop{
    int Intens=0;
    //boucle qui allume
    for (i = 0 ;i<= 255 ;i+= 10){
       analogWrite(LED,i);
       delay(100);
       analogueWrite(LED,0);
       delay(100);
    }
    //boucle qui eteint
    for (i = 255 ;i>= 0 ;i-= 10){
       analogWrite(LED,i);
       delay(100);
       analogueWrite(LED,0);
       delay(100);
    }
     
    }
    le delay de 10 ainsi que le pas de variation est ajustable pour que cela soit confortable.
    Je pense que entre
    et
    la différence ne sera pas perceptible. DOnc des step de 10 seront plus probant.

    Maintenant éteindre une LED pendant 10ms, puis la rallumer sera peu visible.
    C'est pour cela que j'ai mis le delay à 100, on verra sans doute un peut plus, mais pour un résultat plus visible, il faudra sans doute pousser à 500 voir à 1000.
    A tester

    Je n'ai pas de circuit sous la main, mais cela devrais aller je pense

    Michel

  3. #3
    Candidat au Club
    Homme Profil pro
    Amateur
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Bonjour, merci pour votre aide.

    Je ne peux pas essayer avant demain soir mais j'ai deja quelque questions.

    cette ligne veut dire led éteinte et il aurait fallu mettre

    pour dire led allumée ou pas du tout?

    Est ce qu'il y a une raison pour utiliser "analogueWrite" plutôt que "digitalWrite"?

    Je dois dire que je ne n'ai pas encore compris la différence entre les commande "analogue" et "digital"

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 714
    Points : 5 393
    Points
    5 393
    Par défaut
    Certaines pins ont une fonction que l’on dit PWM que l’on active avec analogWrite()

    Ça correspond à dire que la pin sera à HIGH pendant un certain temps puis à 0 pendant un autre temps complémentaire et ça recommence. Ça se fait vite et donc L’œil humain ne voit pas le clignotement (persistance rétinienne) et donc suivant le rapport ON et OFF on voit la LED plus ou moins brillante

    analogWrite() prend un paramètre entre 0 (tout le temps éteint) et 255 (tout le temps allumée). A 127 où 128 vous êtes à mi chemin et la led est allumée 50% du temps. À 64 la LED ne sera allumée que 25% du temps donc sera moins brillante qu’à 192 (75%).

    cf secrets-of-arduino-pwm
    Nom : pwm1.gif
Affichages : 650
Taille : 2,3 Ko

  5. #5
    Membre averti

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 204
    Points : 308
    Points
    308
    Par défaut
    Bonsoir,

    la ligne

    Demande une sortie de 0 ce qui fait que la LED est éteinte.

    dans le code analogWrite(LED,xx), la partie xx qui peut varier de 0 à 255 indique a la sortie la puissance du PWM
    et donc la "puissance" d'allumage de la LED
    donc,
    0= éteinte
    255 allumé au maximum

    la fonction digitalWrite met la sortie a l"état 1(5V) ou à l'état 0 (0V). c'est une fonction tout ou rien d'ou digital.
    Avec la fonction analogWrite on peut moduler la sortie.
    EN fait on l'allume et l'éteint suivant un rythme qui simule un niveau intermediaire entre 0 et 1.
    On pourrait dire que
    serait égal à
    Mais cela n'est pas faisable. Du digital c'est du 0 ou du 1 pas de 0,5. sinon cela devient ...... de l'analogique

    Pour commencer, sur DVP(developez.com) dans la partie ARDUINO, il y a plein de bon tuto pour eclaircir tout cela (et le reste).
    C'est aussi un bon début.


    Michel

  6. #6
    Candidat au Club
    Homme Profil pro
    Amateur
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    D'accord merci pour vos explications. C'est bien expliqué.

    Je vais regarder la section tuto c'est une bonne idée.

    J'aurais quand même une dernière question. J'aimerais au final réussir a mettre des effets de lumière mais aussi du son et/ou du mouvement dans mes maquettes. Vous me confirmez qu'il est possible, en plus des leds de jouer un mp3 et/ ou de piloter un servo?

    Merci

  7. #7
    Membre averti

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2012
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 204
    Points : 308
    Points
    308
    Par défaut
    Citation Envoyé par glukgluk Voir le message
    D'accord merci pour vos explications. C'est bien expliqué.

    Je vais regarder la section tuto c'est une bonne idée.

    J'aurais quand même une dernière question. J'aimerais au final réussir a mettre des effets de lumière mais aussi du son et/ou du mouvement dans mes maquettes. Vous me confirmez qu'il est possible, en plus des leds de jouer un mp3 et/ ou de piloter un servo?

    Merci
    Moi je gère du hardware, les servo, pas de problème, le mp3 .........
    bon pour faire du son il faut des haut parleur,

    Mais je ne pense pas que l’Arduino sois dédier spécifiquement a cela.....mais il doit bien exister des cartes
    Mais c'est sûrement possible (tout est possible en informatique, y suffit d'y mettre les moyens).
    Mais il faudra sans doute chercher un petit peu............

    Bonne année

    Michel

  8. #8
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 714
    Points : 5 393
    Points
    5 393
    Par défaut
    Oui il existe des modules qui permettent de jouer simplement des MP3 (DFPlayer mini par exemple)

  9. #9
    Candidat au Club
    Homme Profil pro
    Amateur
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Super merci pour les infos. Et le MP3 sera bien jouable en même temps que le jeux de lumière sur les leds? Ça ne sera pas l'un ou l'autre?

  10. #10
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 714
    Points : 5 393
    Points
    5 393
    Par défaut
    Citation Envoyé par glukgluk Voir le message
    Super merci pour les infos. Et le MP3 sera bien jouable en même temps que le jeux de lumière sur les leds? Ça ne sera pas l'un ou l'autre?
    Oui le module MP3 DFPlayer Mini (moins de 2€ en Asie) a son propre décodeur et micro processeur. on lui envoie une commande «*jouer la chanson numéro 2*» et ça tourne tout seul, pendant ce temps là votre arduino fait ce qu’il veut. (Le module comporte un lecteur de carte SD sur laquelle vous stockez vos MP3. Ce n’est pas non plus une chaîne haute fidélité, sinon faut passer a des modules plus haut de gamme)

  11. #11
    Candidat au Club
    Homme Profil pro
    Amateur
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Genial merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Clignotement d'une LED
    Par Cortes_tf dans le forum Lazarus
    Réponses: 6
    Dernier message: 02/05/2017, 21h57
  2. [XL-2003] Supprimer une ligne et une feuille en meme temps
    Par Maiden002 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 31/07/2009, 15h32
  3. Ajout de fonction : faire clignoter une led
    Par Nono69690 dans le forum C
    Réponses: 16
    Dernier message: 06/06/2009, 13h37
  4. accepter plus qu'une connexion au meme temps
    Par a.sana dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/05/2009, 00h18
  5. déplacer une fenetre en meme temps qu'une autre.
    Par Flow_75 dans le forum C++Builder
    Réponses: 1
    Dernier message: 03/03/2007, 12h15

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