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 :

Faire une action pendant x secondes [Non suivi]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Par défaut Faire une action pendant x secondes
    Bonjour à tous j'ai un très gros problème pour mon programme en langage C, j'aimerais faire une action pendant 2.5 secondes, est-ce que c'est possible et comment faut-il que je fasse ? Certes ça ne me simplifierait pas mon programme mais ça me permettrait d'utiliser deux capteurs en moins dans mon projet donc un coup réduit. Merci d'avance

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par Lolo7
    Bonjour à tous j'ai un très gros problème pour mon programme en langage C, j'aimerais faire une action pendant 2.5 secondes, est-ce que c'est possible et comment faut-il que je fasse ? Certes ça ne me simplifierait pas mon programme mais ça me permettrait d'utiliser deux capteurs en moins dans mon projet donc un coup réduit.
    Ce n'est pas très clair tout ça. Explique un peu mieux ton problème.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Par défaut
    Donc en fait, j'ai appris les bases de la programmation en c au lycée, je suis actuellement en classes préparatoires aux grandes écoles et dans le cadre de mon tipe je commande l'ouverture d'une porte via un microcontroleur. J'ai donc conçu un programme en langage C à implanter dans le microcontroleur. J'ai pour l'instant deux capteurs qui me détectent la position ouverte ou fermée. Mais afin de réduire le coût de ce système, je souhaiterais tout simplement faire l'action OUVRIR PORTE pendant 2.5 secondes plutôt que d'avoir deux capteurs qui me détectent les fins de course. Par exemple lorsqu'on programme sur AUTOMGEN, on peut mettre des temporisations, etc, je souhaiterais savoir si on peut faire de même en langage c et comment ? Je tiens à préciser que ce système ne sera en aucun cas conçu, ce n'est que de la théorie.

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ben un truc dans le genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    OUVRIR PORTE
    SLEEP 2,5 sec
    FERMER PORTE
    Ca va pas ça ?

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Par défaut
    voilà le programme dans son état 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
     
    /**definitions des capteurs**/
    #define  chat_int (0x01)
    #define  chat_ext (0x02)
    #define  battant_ferm (0x04)
    #define  battant_ouv_ext (0x08)
    #define  battant_ouv_int (0x10)
     
    /**Constantes de commandes moteur**/
    #define  ouv_int (0xFE)
    #define  ouv_ext (0xFD)
    #define  ferm_int (0xFB)
    #define  ferm_ext (0xF7)
    #define  arreter_moteur (0xFF)
     
    /**Inclusions des fichiers **/
    #include <io8535v.h>
    #include <macros.h>
     
    /**Déclarations des Fonctions**/
    void Initports ();
     
    /**Programme Principal**/
    void main()
    {
    Initports(); /*Initialisation des ports*/
     while(1)
     {
      if ((chat_ext & PINA)== chat_ext) /*chat détecté coté extérieur ?*/
    	{
    	 do PORTB = ouv_int; /*ouvrir le battant coté intérieur*/
    	 while ((battant_ouv_int & PINA)!= battant_ouv_int); /*battant ouvert coté intérieur ?*/
    	 do PORTB = arreter_moteur; /*arrêter moteur*/
    	 while (((chat_ext | chat_int) & PINA) != 0x00); /*chat détecté ?*/
    	 do
    	 PORTB = ferm_int; /*fermer le battant coté intérieur*/
    	 while ((battant_ferm & PINA)!= battant_ferm); /*battant fermé ?*/
    	 PORTB = arreter_moteur; /*arrêter moteur*/
    	}
      else if (( chat_int & PINA) == chat_int) /*chat détecté coté  intérieur ?*/
    	{
    	 do PORTB = ouv_ext; /*ouvrir le battant coté extérieur*/
    	 while ((battant_ouv_ext & PINA)!= battant_ouv_ext); /*battant ouvert coté extérieur ?*/
    	 do PORTB = arreter_moteur; /*arrêter moteur*/
    	 while (((chat_ext | chat_int) & PINA) != 0x00); /*chat détecté ?*/
    	 do PORTB = ferm_ext; /*fermer le battant coté intérieur*/
    	 while ((battant_ferm & PINA)!= battant_ferm); /*battant fermé*/
    	 PORTB = arreter_moteur; /*arrêter moteur*/
    	} 
      else PORTB = arreter_moteur; /*arrêter moteur*/
     }
    }
     
    /**Fonction initialiser ports**/
    void Initports ()
    {
     DDRA=0x00; /*PORT A en entrée*/
     DDRB=0xFF; /*port B en Sortie*/
     PORTB=arreter_moteur; /*arrêter moteur*/
    }

  6. #6
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Salut a toi !

    Pense a la balise code !!!

    Quelques petites remarques qui n'ont pas grand chose a voir mais :

    - indente mieux ton code ça sera bien plus lisible
    - main retourne int

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par GyZmoO
    - main retourne int
    Pas obligatoirement en programmation sur µc.

  8. #8
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Voir mon post d'en haut.

    Je rajouterais autre chose au vue de ton code.

    Sur ton µc je suppose que tu as un moyen pour temporiser ou bien compter non ?
    Tu n'a qu'a configurer ton µc qui compter 2,5 sec et appeler un handler qui fermera la porte.

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Par défaut
    Je sais pas, c'est pour ça que je demande conseil, on ne m'a pas appris à temporiser. Mais est-ce qu'avec ce que tu viens de me dire, la porte va bien s'ouvrir pendant 2,5 secondes ? Je veux qu'elle s'ouvre pendant 2.5 secondes, puis ensuite, elle se referme quand le chat n'est plus détecté.

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 12
    Par défaut
    Je comprends aps grand chose à ce que vous me dites, on m'a juste appris à faire des programmes simples, je ne suis pas encore en école d'ingénieur. Et à popos de la question sur le microcontroleur, c'est AT8535 mais je ne sais pas s'il y a un moyen de temporiser ou compter. il n'existe aps une fonction simple ?

Discussions similaires

  1. Faire apparaître une fenêtre pendant 30 secondes
    Par vg-matrix dans le forum Débuter
    Réponses: 4
    Dernier message: 18/06/2008, 19h53
  2. Faire une pause de quelque secondes
    Par philkeeper dans le forum Flash
    Réponses: 6
    Dernier message: 13/06/2007, 18h14
  3. faire une action lors de frappes clavier
    Par wag71 dans le forum Access
    Réponses: 9
    Dernier message: 20/12/2006, 16h00
  4. Faire une action sur Control + C
    Par bluecurve dans le forum Langage
    Réponses: 1
    Dernier message: 20/07/2006, 00h19
  5. Comment faire une action, par rapport au temps
    Par Happy dans le forum OpenGL
    Réponses: 5
    Dernier message: 12/11/2005, 13h27

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