diff options
Diffstat (limited to 'table-fan/table-fan.c')
-rw-r--r-- | table-fan/table-fan.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/table-fan/table-fan.c b/table-fan/table-fan.c index 1f0cf4f..b59d7e9 100644 --- a/table-fan/table-fan.c +++ b/table-fan/table-fan.c @@ -31,12 +31,13 @@ #include "usbio.h" #include "fan.h" +#include "rotary.h" void handle_cmd(uint8_t cmd) { switch(cmd) { - case '+': fan_speed_inc();/* printf("pwm = %d\r\n", fan_speed_get()); */ break; - case '-': fan_speed_dec();/* printf("pwm = %d\r\n", fan_speed_get()); */ break; + case '+': fan_speed_inc(); break; + case '-': fan_speed_dec(); break; case 'r': reset2bootloader(); break; } printf("\rspeed: %5d rpm", fan_get_rpm()); @@ -53,13 +54,11 @@ int main(void) led_init(); usbio_init(); fan_init(); + rotary_init(); sei(); - // rotary encoder - DDRB &= ~((1<<PB4) | (1<<PB5)); - PORTB |= (1<<PB4) | (1<<PB5); - - led_on(); + led_off(); + led2_off(); for(;;) { int16_t BytesReceived = usbio_bytes_received(); while(BytesReceived > 0) { @@ -70,6 +69,19 @@ int main(void) BytesReceived--; } + rotary_dir_t dir = rotary_task(); + switch(dir) { + case rotary_dir_up: fan_speed_inc(); break; + case rotary_dir_down: fan_speed_dec(); break; + default: break; + } + + if(fan_speed_get() > 0) { + led_on(); + } else { + led_off(); + } + usbio_task(); } } |