Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define pwmPin 6 // Port PWM
- #define Sensor 2 // Port para sentir a mudanca
- unsigned long tempoI = 0; // Tempo inicial do Pulso
- unsigned long tempoF = 0; // Tempo final do Pulso
- byte Flag = 0; // Flag para controle do status do pulso
- byte Step = 250; // Valor de Duty
- //----------------------------------
- void setup()
- {
- Serial.begin(9600); // Inicialisa a serial
- pinMode(pwmPin, OUTPUT); // Define pino de PWM como saída
- pinMode(Sensor, INPUT); // Define port
- attachInterrupt(0, Count, RISING); // Inicia interrupt para subida de pulso
- }
- //----------------------------------
- void loop()
- {
- if (Flag == 0 ) // Se pulso é LOW
- {
- Serial.print("uSeg ");
- Serial.println(tempoF); // Imprime resultdo
- }
- analogWrite(pwmPin, Step); // Define valor de Duty Cycle
- }
- //----------------------------------
- void Count()
- {
- if (Flag == 0 ) // Se pulso e LOW
- {
- tempoI = micros(); // Salva o tempo inicial
- detachInterrupt(0); // Desabilita interrupt
- attachInterrupt(0, Count, FALLING); // Muda interrupt para queda de pulso
- Flag = 1; // Informa que pulso subiu
- return; // Sai da função
- }
- if (Flag == 1 ) // Se pulso e HIGH
- {
- tempoF = micros() - tempoI ; // Calcula o tempo dinal
- detachInterrupt(0); // Desabilita interrupt
- attachInterrupt(0, Count, RISING); // Muda interrupt para subida de pulso
- Flag = 0; // Informa que pulso caiu
- return; // Sai da função
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement