ừm....Em nghĩ ra một cách để khắc phục việc quẹo góc nhọn là như sau: em sẽ tạo ra 2 function định nghĩa về góc nhọn cho robot. 1 function định nghĩa về góc nhọn quẹo trái: 101 -> 100 -> 000 -> 001 -> 011 (giữa line -> đèn bên trái nằm trong line -> cả 3 đèn cùng trên line -> đèn bên trái ra khỏi line trước -> đèn trái và đèn giữa ra khỏi line). Robot đang đi giữa line sẽ check điều kiện đặc biệt này, nếu như kô đúng thì sẽ nhảy về những trường hợp bình thường. (Đèn trái là bit 0, đèn giữa là bit 1 và đèn phải là bit 2).
Tuy nhiên lúc em đặt đoạn code trên như sau:
Code:
loop
movf PORTA,0
movwf PORTB
goto case1
STL
movlw b'00000100'
cpfseq PORTA
return
movlw b'00000000'
cpfseq PORTA
return
movlw b'00000001'
cpfseq PORTA
return
movlw b'00000011'
cpfseq PORTA
return
s1
call RIGHT_WHEEL_FAST
call LEFT_WHEEL_SLOW
movlw b'00000101'
cpfseq PORTA
return
goto s1
STR
movlw b'00000001'
cpfseq PORTA
return
movlw b'00000000'
cpfseq PORTA
return
movlw b'00000100'
cpfseq PORTA
return
movlw b'00000110'
cpfseq PORTA
return
s2
call RIGHT_WHEEL_SLOW
call LEFT_WHEEL_FAST
movlw b'00000101'
cpfseq PORTA
return
goto s2
special
call STL
call STR
goto case2
case1 ;center
movlw b'00000101'
cpfseq PORTA ;if equal skip
goto special
call LEFT_WHEEL_NORM
call RIGHT_WHEEL_NORM
goto loop
case2 ;on left hand side
movlw b'00000001'
cpfseq PORTA
goto case3
call LEFT_WHEEL_FAST
call RIGHT_WHEEL_NORM
goto loop
.... như đoạn code ở bài trên
thì dường như là nó kô check được điều kiện đăc biệt
STL: Sharp Turn Left (góc nhọn bên trái)
STR: Sharp Turn Right (góc nhọn bên phải)
Em nghĩ là phải cần có interupt để can thiệp vào nhưng kô biết phải làm sao cả. Mong mọi người giúp em.
Hay em nghĩ là 3 sensor đặt ngang hàng thì kô thể nào quẹo góc nhọn được....em cũng chẳng biết nữa....em bó tay rồi. hic. Em đọc tài liệu trên mạng thì thấy sensor toàn đặt theo kiểu mũi tên chứ kô đặt thẳng hàng....