<div>123a</div> <div>456b</div> <div>789C</div> <div>*0#D </div> <div> </div> <div>단순하게 4x4키패드에서 그냥1595누르면 모터 돌아가도록만 하려는데 정말 21시간 버렸네요 ㅜㅜ 너무 답답하네요 ㅠ</div> <div>최대한 밑에 코드 사용해서 x,y이용해서 만들어보려고 하는데요.. 입력인 행을 인터럽트 4개 사용해서 하는거 같긴한데 도통 제 머리로는 안되네요 ㅜㅜ</div> <div>쉬울거 같아서 놓지를 못하겠어요 ㅜㅜ </div> <div>입력인 행따로 D파트 1,2,3,4 자리에 놓아서 ISR 4개 해주고</div> <div>출력인 열따로 B파트 1,2,3,4 자리에 넣어주고 어떻게든 해보려고하는데 머리로는 알겠는데 코드로 표현을 못하겟네요... </div> <div>전문가님들 구원해 주시면 진짜 어제 생일 때 받은 네네치킨 스노윙치즈 기프티콘 쏴 드릴게요ㅠㅠ</div> <div> </div> <div>키패드 푸티 구동 </div> <div> </div> <div>#define F_CPU 16000000<br>#define COL_OUT PORTB <br>#define ROW_IN PINB<br>#include <avr/io.h><br>#include <util/delay.h><br>#include <stdio.h><br>#include "UART1.h"</div> <div>FILE OUTPUT \<br>= FDEV_SETUP_STREAM(UART1_transmit, NULL, _FDEV_SETUP_WRITE);<br>FILE INPUT \<br>= FDEV_SETUP_STREAM(NULL, UART1_receive, _FDEV_SETUP_READ);</div> <div>uint8_t keystate[4][4]; </div> <div>void read_key(void)<br>{<br> for(int x=0; x<4; x++){//<br> COL_OUT |= 0x0F; //<br> COL_OUT &= ~(0x01 << x);<br> <br> _delay_ms(10);<br> <br> uint8_t read = ROW_IN >> 4;<br> for(int y = 0; y < 4; y++){<br> if(bit_is_set(read, y)){<br> keystate[x][y] = 0;<br> }<br> else{<br> keystate[x][y] = 1;<br> }<br> }<br> }<br>}</div> <div>void print_key(void)<br>{<br> for(int x=0; x<4; x++){<br> for(int y=0; y <4; y++){<br> printf("%c ", (keystate[y][x] ? '0' : '.'));<br> }<br> printf("\r\n");<br> }<br> printf("\r\n\r\n");<br>}<br>int main(void)<br>{<br> DDRB = 0x0F;<br> <br> stdout = &OUTPUT;<br> stdin = &INPUT;<br> <br> UART1_init();<br> <br> while(1)<br> {<br> read_key();<br> print_key();<br> <br> _delay_ms(1000);<br> }<br> return 0;<br>}</div> <div> </div> <div> </div> <div>서보모터 구동 </div> <div> </div> <div>#define F_CPU 16000000L<br>#include <avr/io.h><br>#include <util/delay.h></div> <div>#define ROTATION_DELAY 1000<br>#define PULSE_MIN 1087 <br>#define PULSE_FIRSTMID 2324</div> <div><br>void InitializeTimer3(void) <br>{<br> TCCR3A |= (1 << WGM31);<br> TCCR3B |= (1 << WGM32) | (1 << WGM33);<br> <br> TCCR3A |= (1 << COM3A1);<br> <br> TCCR3B |= (1 << CS31); <br> <br> ICR3 = 39999; <br>}</div> <div>int main(void)<br>{<br> DDRE |= (1 << PE3); <br> <br> InitializeTimer3(); <br> while(1)<br> {<br> OCR3A = PULSE_MIN; <br> _delay_ms(ROTATION_DELAY);<br> <br> OCR3A = PULSE_FIRSTMID; <br> _delay_ms(ROTATION_DELAY);<br> }<br> <br> return 0;<br>}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.