Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "TimerOne.h"
- #include <Wire.h>
- int SpeedSensor=6; //nr pinu, do ktorego podlaczony czujnik predkosci
- unsigned int counter=0; //zlicza sygnaly trafiajace na enkoder
- unsigned int counterStan=0; //przechowuje stan licznika po 1s, czestotliwosc sygnalu na pinie 2
- float Speed=0;
- float diskslots=20;
- /*
- * Funkcje zwiazana z obsluga przerwan
- */
- void ISR_count(){ //zaliczaj, gdy zmiana stanu na pinie enkoderPin
- counter++;
- }
- void ISR_timerone(){
- Timer1.detachInterrupt(); //zatrzymanie timera
- counterStan=counter;
- Speed=(counter/diskslots)*60.00; // predkosc na wyjsciu - obr/min
- counter=0;
- Timer1.attachInterrupt(ISR_timerone); //wylaczanie timera
- }
- void setup() {
- Serial.begin(9600); //Ustawienie prędkości transmisji
- pinMode(SpeedSensor, INPUT);
- digitalWrite(SpeedSensor, LOW);
- Timer1.initialize(100000); //inicjalizacja timera, wykonywane co 1s
- attachInterrupt(digitalPinToInterrupt(SpeedSensor), ISR_count, RISING); //wlaczenie przerwania zewnetrznego od zmianu stanu na pinie enkoderPin
- //1 arg to nr przerwania, funkcja digitalPinToInterrupt(enkoderPin) zwraca nr przerwania dla danego portu, 2 arg funkcja obslugujaca przerwanie
- Timer1.attachInterrupt(ISR_timerone); //gdy wystapi przerwanie to wykonaj funkcje ISR_timerone
- }
- void loop() {
- Serial.println("Ilosc impulsow");
- Serial.println(counterStan);
- delay(250);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement