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
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
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.
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.
Arduino, Raspberry Pi, ESP, Cypress PSoC, FPGA...
Forums Arduino, Raspberry Pi
Apprendre à développer sur FPGA avec Intel Quartus Prime - Communication SPI avec un convertisseur Analogique-Numérique, simulation fonctionnelle et analyse des signaux [Nouveau]
FPGA - Programmer un contrôleur pour écran VGA avec une carte de développement FPGA
Arduino : Le manuel de laboratoire, les Quiz, les cahiers pratiques, [Nouveau] les sources et outils
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; }
Comme tu utilises Wiring Pi Priority, Interrupts and Threads
La fonction wiringPiISR() devrait répondre à ton besoin.
Arduino, Raspberry Pi, ESP, Cypress PSoC, FPGA...
Forums Arduino, Raspberry Pi
Apprendre à développer sur FPGA avec Intel Quartus Prime - Communication SPI avec un convertisseur Analogique-Numérique, simulation fonctionnelle et analyse des signaux [Nouveau]
FPGA - Programmer un contrôleur pour écran VGA avec une carte de développement FPGA
Arduino : Le manuel de laboratoire, les Quiz, les cahiers pratiques, [Nouveau] les sources et outils
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager