Re: 請教有Rotary Encoder(旋轉編碼器)的辨認方法或範例嗎?
|
||||
---|---|---|---|---|
新會員
|
謝謝..剛好想問有無組語的範例..
發表於: 2006/11/24 9:34
|
|||
|
Re: 請教有Rotary Encoder(旋轉編碼器)的辨認方法或範例嗎?
|
||||
---|---|---|---|---|
新會員
|
這是富士通MCU範例,您自行改成PIC
它是用中斷方式,在依狀態更改下次要正緣或負緣觸發 __interrupt void IRQ_RotaryEncoder(void)// { enc = PDR9 & 0x03; // read-encoder (INT0, INT1) switch (enc_old) { case ENC_state00: switch (enc) { case ENC_state01: enc_position++; ELVR_LA0 = 1; break; case ENC_state10: enc_position--; ELVR_LA1 = 1; break; case ENC_state00: enc_error++; ELVR_LA1 = 0; ELVR_LA0 = 0; break; case ENC_state11: enc_error++; ELVR_LA1 = 1; ELVR_LA0 = 1; break; } break; case ENC_state01: switch (enc) { case ENC_state11: enc_position++; ELVR_LA1 = 1; break; case ENC_state00: enc_position--; ELVR_LA0 = 0; break; case ENC_state01: enc_error++; ELVR_LA1 = 0; ELVR_LA0 = 1; break; case ENC_state10: enc_error++; ELVR_LA1 = 1; ELVR_LA0 = 0; break; } break; case ENC_state11: switch (enc) { case ENC_state10: enc_position++; ELVR_LA0 = 0; break; case ENC_state01: enc_position--; ELVR_LA1 = 0; break; case ENC_state11: enc_error++; ELVR_LA1 = 1; ELVR_LA0 = 1; break; case ENC_state00: enc_error++; ELVR_LA1 = 0; ELVR_LA0 = 0; break; } break; case ENC_state10: switch (enc) { case ENC_state00: enc_position++; ELVR_LA1 = 0; break; case ENC_state11: enc_position--; ELVR_LA0 = 1; break; case ENC_state10: enc_error++; ELVR_LA1 = 1; ELVR_LA0 = 0; break; case ENC_state01: enc_error++; ELVR_LA1 = 0; ELVR_LA0 = 1; break; } break; } enc_old = enc; // save new position EIRR &= 0xf3; // clear ExternalInterruptRequest-Flags INT0, INT1 }
發表於: 2006/11/23 19:18
|
|||
|
請教有Rotary Encoder(旋轉編碼器)的辨認方法或範例嗎?
|
||||
---|---|---|---|---|
新會員
|
請教各位:
不知有無辨認旋轉編碼器的範例或方法可供參考,要用來做旋鈕,又不想像用VR有轉到底限制的感覺,希望有這方面經驗的大大指導一下.
發表於: 2006/11/23 15:47
|
|||
|