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

Raspberry Pi Discussion :

Lire un signal carré sur le Raspberry Pi 4 en C


Sujet :

Raspberry Pi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Lire un signal carré sur le Raspberry Pi 4 en C
    Salut à tous, j'aimerais lire un signal carré numérique venant d'un circuit imprimé connecté au Raspberry pi 4. Je me demande si c'est possible car la fonction digitalRead(pin) retourne soit 0 soit 1. S'il-vous-plaît J'ai besoin d'aide

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    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 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Sans expérience, je dirai qu'en lisant régulièrement le pin, vous allez voir les changements de valeur. Par contre, cela ne sera pas très précis, pour détecter quand le changement arrive.
    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.

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 604
    Points : 56 720
    Points
    56 720
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    S'il s'agit de mesurer la fréquence du signal, classiquement, soit on compte le nombre de fronts (montants ou descendants) du signal pendant une période donnée, soit on mesure la durée entre deux fronts du signal.

    On choisit l'une ou l'autre selon la fréquence du signal à mesurer et la précision souhaitée.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Bonjour, merci pour vos réponses

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    J'ai essayé de calculer le temps entre deux changements d'états de manière classique comme dans le code ci-dessous, mais vu que le traitement sur Raspberry pi est multitache ce programme n'est pas optimal. S'il vous plaît comment transformer ce programme en utilisant les interruptions ?
    Code c : 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
    #include <stdio.h>
     
    #include <wiringPi.h>
     
    #include <time.h>
     
    #define BTN_MRC2 7
    #define BTN_MRC1 21
    clock_t t1 = 0, t2 = 0;
     
    void setup() {
      pinMode(BTN_MRC1, INPUT);
      pinMode(BTN_MRC2, INPUT);
      t1 = clock();
    }
     
    void calculeDureeEntre2Fronts() {
      int btn; //valeur du bouton
      btn = digitalRead(BTN_MRC1);
      // for(int i=0;i<100;i++)
      // {
      if (btn == 1) //si un etat haut est detecte
      {
     
        while (btn == 1) //tant qu'on detecte un etat haut
        {
          printf("Etat haut = %d ", btn);
          btn = digitalRead(BTN_MRC1);
          t2 = clock();
        }
      }
     
      else if(btn == 0) {
        while (btn == 0) //tant qu'on detecte un etat bas
        {
          printf("Etat bas= %d ", btn);
          btn = digitalRead(BTN_MRC1);
          t2 = clock();
        }
      }
      //}
      printf("nombre de secondes = %f ", (float)(t2 - t1) / CLOCKS_PER_SEC);
    }
     
    int main(int argc, char ** argv) {
      wiringPiSetup();
      setup();
      calculeDureeEntre2Fronts();
      return 0;
    }

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 604
    Points : 56 720
    Points
    56 720
    Billets dans le blog
    40
    Par défaut
    Comme tu utilises Wiring Pi Priority, Interrupts and Threads
    La fonction wiringPiISR() devrait répondre à ton besoin.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Merci f-leb, il suffit alors d'appeler ma fonction dans wiringPiISR(). J'aimerais vraiment savoir s'il n'est pas pas possible reproduire ce signal en utilisant par exemple un filtre

Discussions similaires

  1. [Python 3.X] FFT sur signal carré et problème de valeur moyenne.
    Par Vincent PETIT dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 16/05/2020, 22h21
  2. Réponses: 3
    Dernier message: 13/07/2012, 17h46
  3. Réponses: 7
    Dernier message: 14/02/2009, 10h24
  4. signal carré sur port //
    Par MLOLO dans le forum C++
    Réponses: 2
    Dernier message: 14/01/2005, 02h02
  5. A lire avant de poster sur ce forum
    Par granquet dans le forum Développement
    Réponses: 0
    Dernier message: 28/07/2003, 08h24

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