Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <AFMotor.h>
- AF_DCMotor motor(3);
- // DEFINIÇÃO DAS VARIÁVEIS
- int pino_D0 = 2;
- int rpm;
- volatile byte pulsos;
- unsigned long tempo_passado;
- unsigned int pulsos_por_volta = 20;
- //----------------------------------------------------------
- // INTERRUPÇÃO
- void contador()
- {
- // incrementa o contador
- pulsos++;
- }
- //----------------------------------------------------------
- void setup() {
- Serial.begin(9600);
- motor.setSpeed(255);
- motor.run(FORWARD);
- pinMode(pino_D0, INPUT);
- //Aciona o contador a cada pulso
- attachInterrupt (0, contador, FALLING);
- pulsos = 0;
- rpm = 0;
- tempo_passado = 0;
- analogWrite(9,125);
- }
- //----------------------------------------------------------
- void loop() {
- // Atualiza o contador a cada segundo
- if (millis() - tempo_passado >= 100)
- {
- // Desabilita a interrupção durante o cálculo
- detachInterrupt(0);
- rpm = (60 * 1000 / pulsos_por_volta) / (millis() - tempo_passado) * pulsos;
- pulsos = 0;
- Serial.print("RPM = ");
- Serial.print(rpm, DEC);
- Serial.print (" ");
- Serial.print("TEMPO = ");
- Serial.println(tempo_passado, DEC);
- //Habilita interrupcao
- attachInterrupt(0, contador, FALLING);
- tempo_passado = millis();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement