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

C Discussion :

arduino et début en dev


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut arduino et début en dev
    Bonjour,

    Je me suis enfin décider de me prendre un arduino pour apprendre l'électronique et le développement. Je sais maintenant contrôler les leds depuis mon code C. Je me suis fait un petite librairie que je peux réutiliser dans mes applis (hum elle ne sert à rien d'autre que d'allumer ou éteindre les leds en fadein/ou). Mais c'est pour apprendre.

    Là où est mon souci, c'est que j'ai 2 leds (rouge/vert par exemple) que je sais allumer/éteindre de manière séquentielle. En gros quand j'en allume une, il faut que j'attende qu'elle soit totalement allumé avant de pouvoir passer à la suite qui permet d'allumer la deuxième. Et pareil pour l'extinction.

    Pour résumer un peu la structure de l'arduino, il a 2 fonctions principales et obligatoires, même si elles sont vides, il faut les mettre:
    - void main
    - void loop

    Si je veux exécuter un code en boucle, je mets mon code dans loop. C'est ce que j'ai fait pour mes leds. Très utiles aussi avec les interrupteurs. Cette fonction est exécuté en permanence, c qui permet de lire les données envoyées depuis l'interrupteurs et d'actionner les états correspondants.

    Dans le void loop, je voudrai pouvoir allumer mes leds de manière indépendante (leds connectés sur des pinoches différentes), et surtout en même temps.
    La question est donc la suivante: Comment créer des threads (je ne sais si c'est comme ça qu'on dit en dev) en C permettant de faire un peu ce que je veux.

    Cette étape est primordiale pour moi car je devrai utiliser des threads pour piloter les moteurs de mon futur petit robot :
    - 1 moteur pour la roue arrière gauche
    - 1 moteur pour la roue arrière droite
    - 1 moteur pour les deux roues avant
    - 1 moteur pour le détecteur à ultrasons (détection d'obstacle et analyse des distances)

    Si je ne sais pas comment faire tourner mes moteurs tout en analysant les données du détecteur, je n'irai pas loin ...

    Voilà. Si vous pouvez me filer un exemple vite fait ou une doc, ça m'intéresse au plus haut point :d

    merci d'avance pour votre aide.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    J'ai aussi pense aux threads en lisant votre message, mais je me demande si ceux-ci sont supportes par votre plateforme (notamment si le code est execute sur un micro processeur).

    La deuxieme methode, c'est de ne pas faire le fade-in / fade-out bloquant. Par la, je veux dire que si vous faites un fade, vous devez garder la valeur de votre LED actuelle, et a chaque mise a jour (ou passage dans loop) vous mettez a jour la valeur pour la LED.

    Par exemple:
    [code]
    void loop(void)
    {
    updateLED1();
    }
    [code]

    Et dans updateLED1:
    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
     
    void updateLED1()
    {
    if ( fadein )
    {
         if ( ledValue > 0 )
         {
              ledValue--;
         }
    }
    else
    {
         if ( ledValue < 100 )
         {
              ledValue++;
         }
    }
     
    // Changer l'eclairage (signal electronique)
     
    }
    Enfin ... ceci est un example on peut faire beaucoup mieux.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 24/10/2012, 08h42
  2. [DEV] Un début à tout
    Par mac_school dans le forum Apple
    Réponses: 4
    Dernier message: 04/01/2009, 11h25
  3. Début en dev SAP
    Par Heptaeon dans le forum SAP
    Réponses: 6
    Dernier message: 07/04/2008, 16h46
  4. Mes premiers débuts avec Dev-C++ : ca bloque !
    Par fab56 dans le forum Dev-C++
    Réponses: 6
    Dernier message: 20/02/2005, 16h24
  5. Dev-C++
    Par Anonymous dans le forum Dev-C++
    Réponses: 16
    Dernier message: 21/09/2002, 13h06

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