Ratay
Ratay
OFF
ON
Akses Rotary Encoder
Clk terhubung ke INT0
DT terhubung ke PIND3
SW terhubung ke PIND4
Pada awal program LED SW on, LED CCW off, dan LED CW on
Jika SW ditekan maka LED SW akan Toggle (berbalik logika)
Jika rotary encoder diputar ke kanan maka LED CW on dan LED
CCW off
Jika rotary encoder diputar ke kiri maka LED CW off dan LED CCW
on
Rancang algoritma untuk kasus diatas
Flochart
START ISR
N
SW ON ?
Y
Toggle PA0
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void){
DDRD &= ~(1<<PD2 & ~(1<<PD3) & ~(1<<PD4);
PORTD |= (1<<PD2) | (1<<PD3) | (1<<PD4);
DDRA |= (1<<PA0); DDRB |= (1<<PB0) | (1<<PB1);
PORTB |= (1<<PB0); PORTB &= ~(1<<PB1); PORTA &= ~(1<<PA0);
ISR(INT0_vect){
if (PIND & 0x08){
PORTB |= (1<<PB0); PORTB &= ~(1<<PB1);
}
else {
PORTB |= (1<<PB1); PORTB &= ~(1<<PB0);
}
}
Terima kasih