¾È³çÇÏ½Ê´Ï±î ÆßÅ×Å© ÀÔ´Ï´Ù.
´ç»ç Á¦Ç° »ç¿ë½Ã ¹®ÀÇ»çÇ׿¡ ´ëÇÑ Áú¹® ´äº¯À» ÇØµå¸®Áö¸¸ »ç¿ëÀÚ²²¼ ±¸¼ºÇϽŠÄڵ忡 ´ëÇÑ ´äº¯À» ÇØµå¸®±â¿¡´Â ¾î·Á¿îÁ¡ÀÌ ÀÖ½À´Ï´Ù. ÀÌÁ¡ ¾çÇØ ºÎŹ µå¸³´Ï´Ù.
°¨»çÇÕ´Ï´Ù. ÁÁÀº ÇÏ·ç º¸³»¼¼¿ä.
------- ¿øº» ³»¿ë ---------
atmega8 °ú atmega16 »çÀÌ ¹«¼±Åë½ÅÀ» Çϰí ÀÖ½À´Ï´Ù. UDRÀÌ atmega16¿¡¼ ºí·çÅõ½º ¹«¼±Åë½ÅÀ¸·Î atmega8·Î °¡¼ ±×¿¡ ¸Â´Â ÇൿÀ» ÇÏ°Ô ÇÏ´Â ÄÚµåÀε¥ atmega16ÀÌ ¾Æ´Ñ arduino uno ÄÁÆ®·Ñ·¯¿Í atmgea8 ·Îº¿ °£ ºí·çÅõ½ºÅë½ÅÀ» À§Çؼ ¶È°°ÀÌ UDRÀ̶ó´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ°í ½ÍÀºµ¥ ·Îº¿ÀÌ ÀÛµ¿À» ÇÏÁö ¾Ê½À´Ï´Ù.. ÄÚµå»ó ¾î¶²°ÍÀÌ ¹®Á¦ÀÎÁö ¾Ë ¼ö ÀÖÀ»±î¿ä?
//atmega16 #include #include #define Button_f 0xfd #define Button_b 0xfe #define Button_l 0xfb #define Button_r 0xf7 #define Button_fl 0xfd&0xfb #define Button_fr 0xfd&0xf7 #define Button_LU 0xed #define Button_LD 0xee #define Button_RU 0xeb #define Button_RD 0xe7
void putch(unsigned char data)//¼Û½Å -> UDRÀÌ atmega8 { while(!(UCSRA & 0x20)); UDR=data; UCSRA|=0x20; }
void main(void) { PORTA=0xff; DDRA=0x00; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x33; SFIOR=0x00; while (1) { switch(PINA) { //¹öư ÇѰ³ case Button_f : putch(Button_f); delay_ms(5); break; case Button_b : putch(Button_b); delay_ms(5); break; case Button_l : putch(Button_l); delay_ms(5); break; case Button_r : putch(Button_r); delay_ms(5); break; //¹öư µÎ°³ case Button_fr : putch(Button_fr); delay_ms(5); break; case Button_fl : putch(Button_fl); delay_ms(5);break; //¸ðÅͼӵµ º¯°æ ½Ã±×³Î case Button_LU : putch(Button_LU); while(PINA!=0xef){}; break; case Button_LD : putch(Button_LD); while(PINA!=0xef){}; break; case Button_RU : putch(Button_RU); while(PINA!=0xef){}; break; case Button_RD : putch(Button_RD); while(PINA!=0xef){}; break; default : putch('?'); break; } } }
//arduino uno #include SoftwareSerial btSerial(A0, A1); // RX, TX unsigned int ctl; unsigned char UDR; void setup() { Serial.begin(9600); Serial.println("Bt Shield Test Started!"); btSerial.begin(9600); } void checkDirection() { unsigned int Direction_FR = analogRead(A4); // Joystick backward(0) to forward(1023) unsigned int Direction_LR = analogRead(A5); // Joystick left(0) to right(1023) if(Direction_FR > 800){ ctl=1; UDR='Button_f'; } else if(Direction_FR < 200){ ctl=2; UDR='Button_r'; } else if(Direction_LR > 800){ ctl=4; UDR='Button_r'; } else if(Direction_LR < 200){ ctl=3; UDR='Button_l'; } else if(Direction_FR>=200 && Direction_FR<=800 && Direction_LR>=200 && Direction_LR<=800){ UDR='Button_f'; } }
void loop() { checkDirection(); if(btSerial.available()) Serial.write(btSerial.read()); if(Serial.available()) btSerial.write(Serial.read()); switch(ctl) { case 1: btSerial.write(UDR); delay(5); break; case 2: btSerial.write(UDR); delay(5); break; case 3: btSerial.write(UDR); delay(5); break; case 4: btSerial.write(UDR); delay(5); break; } }
|