51 lines
860 B
C++
51 lines
860 B
C++
#include <avr/io.h>
|
|
#include <util/delay.h>
|
|
#include <Arduino.h>
|
|
|
|
#include "digital_in.h"
|
|
#include "digital_out.h"
|
|
|
|
|
|
int main() {
|
|
uint8_t cycle{0};
|
|
int8_t counter{0};
|
|
double ratio;
|
|
|
|
bool last_lo = false;
|
|
|
|
Digital_in encoderA{4};
|
|
Digital_in encoderB{5};
|
|
Digital_out led{5};
|
|
|
|
encoderA.init();
|
|
encoderB.init();
|
|
led.init();
|
|
|
|
Serial.begin(9600);
|
|
|
|
while (true) {
|
|
_delay_us(100);
|
|
led.set_lo();
|
|
|
|
bool curr_hi = encoderA.is_hi();
|
|
|
|
if (last_lo && curr_hi) {
|
|
counter += encoderB.is_lo() ? -1 : 1;
|
|
led.set_hi();
|
|
}
|
|
++cycle;
|
|
|
|
if (cycle == 255) {
|
|
ratio = counter / (0.0255 * 700);
|
|
counter = 0;
|
|
cycle = 0;
|
|
Serial.println(ratio);
|
|
}
|
|
|
|
last_lo = !curr_hi;
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|