bonjour a tous
je cherche a calculer la fréquence d'un timer 555 et son duty cycle sa fonctionne tres bien mais je voudrais compter le nombre de fois que la pin devient HIGH pour confirmer si le arduino affiche la bonne frequence je detecte deja le temps de la pulse avec la fonction pulsein() le probleme est que si je fais un digitalread il reste a 0 alors qu il devrait alterner entre 0 et 1 mais si je commente mes deux pulsein() donc pour les desactiver la le digitalread alterne de 0 a 1 il y a t il une raison ou il y a t il quelque chose que je ne fais pas correct
voila lle code :
//Calcule de Frequence F=1/T F=Frquence, T=Periode en Seconde //Calcule de Periode T=1/F F=Frquence, T=Periode en Seconde //calcule de duty cycle D=T/P*100 D=duty cycle T=Temp Signal Actif //P=Temps total d'un cycle int countPin = 6; int readPin = 7; int pulsePin = 13; int potFreqPin; int buttonStart; int oldButtonStart; int buttonMode; int oldButtonMode; int mode; int countHighPin; int potFreq; double durationLow; double durationHigh; void setup() { Serial.begin(115200); pinMode(countPin, INPUT); pinMode(readPin, INPUT); pinMode(pulsePin, OUTPUT); digitalWrite(pulsePin,LOW); mode = 1; } void loop() { countHighPin = digitalRead(countPin); durationLow = pulseIn(readPin, LOW); durationHigh = pulseIn(readPin, HIGH); //potFreq = map(analogRead(potFreqPin),0,1023,0,1000)/1000000;//return value to microSec //if(buttonMode == HIGH && oldButtonMode == LOW) { freqCalc(durationLow,durationHigh); //freqPulse(potFreq); Serial.print(countHighPin); } void freqCalc(double Low, double High) { double dutyCyclePos = High * 100 / (Low + High); // valeur*100/valeurtotal double dutyCycleNeg = Low * 100 / (Low + High); // valeur*100/valeurtotal double frequence = ((double) 1000000)/(double (Low + High))+0.5; //0.5 calibration; Serial.print("Frequence:"); Serial.println(frequence); Serial.print("Duty Cycle+:"); Serial.println(dutyCyclePos); Serial.print("Duty Cycle-:"); Serial.println(dutyCycleNeg); Serial.println(""); Serial.println(""); Serial.println(""); Serial.println(""); Serial.println(""); Serial.println(""); Serial.println(""); Serial.println(""); Serial.println(""); }
merci
a+
Hors ligne
Pages: 1