Á¦Ç°¼Ò°³
ºí·çÅõ½º5 Á¦Ç°±º
ºí·çÅõ½º4 Á¦Ç°±º
ºí·çÅõ½º Á¦Ç°±º
ºí·çÅõ½º ¸ðµâ
Áö±×ºñ Á¦Ç°±º
·Î¶ó(LoRa) Á¦Ç°±º
¾×¼¼»ç¸® Á¦Ç°±º
±¸¸Å¹®ÀÇ
Á¦Ç°±¸ÀÔó
°ßÀû¿äû
°í°´Áö¿ø
°øÁö»çÇ×
ÀÚÁÖÇÏ´ÂÁú¹®
Q&A
´Ù¿î·Îµå
À¯Æ¿¸®Æ¼
SOURCE
ȸ·Îµµ&¹®¼
ȸ»ç¼Ò°³
CEOÀλ縻
ȸ»ç¿¬Çõ
Á¶Á÷µµ
ã¾Æ¿À½Ã´Â±æ
Á¦Ç°¼îÇθô
ÀÛ¼ºÀÚ
ºñ¹Ð¹øÈ£
À̸ÞÀÏ
Á¦¸ñ
------- ¿øº» ³»¿ë ---------
atmega8 °ú atmega16 »çÀÌ ¹«¼±Åë½ÅÀ» Çϰí ÀÖ½À´Ï´Ù.
UDRÀÌ atmega16¿¡¼ ºí·çÅõ½º ¹«¼±Åë½ÅÀ¸·Î atmega8·Î °¡¼ ±×¿¡ ¸Â´Â ÇൿÀ» ÇÏ°Ô ÇÏ´Â ÄÚµåÀε¥
atmega16ÀÌ ¾Æ´Ñ arduino uno ÄÁÆ®·Ñ·¯¿Í atmgea8 ·Îº¿ °£ ºí·çÅõ½ºÅë½ÅÀ» À§Çؼ ¶È°°ÀÌ UDRÀ̶ó´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ°í ½ÍÀºµ¥ ·Îº¿ÀÌ ÀÛµ¿À» ÇÏÁö ¾Ê½À´Ï´Ù.. ÄÚµå»ó ¾î¶²°ÍÀÌ ¹®Á¦ÀÎÁö ¾Ë ¼ö ÀÖÀ»±î¿ä?
//atmega16
#include <mega16.h>
#include <delay.h>
#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.h>
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;
}
}
atmega8 °ú atmega16 »çÀÌ ¹«¼±Åë½ÅÀ» Çϰí ÀÖ½À´Ï´Ù.
UDRÀÌ atmega16¿¡¼ ºí·çÅõ½º ¹«¼±Åë½ÅÀ¸·Î atmega8·Î °¡¼ ±×¿¡ ¸Â´Â ÇൿÀ» ÇÏ°Ô ÇÏ´Â ÄÚµåÀε¥
atmega16ÀÌ ¾Æ´Ñ arduino uno ÄÁÆ®·Ñ·¯¿Í atmgea8 ·Îº¿ °£ ºí·çÅõ½ºÅë½ÅÀ» À§Çؼ ¶È°°ÀÌ UDRÀ̶ó´Â µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ°í ½ÍÀºµ¥ ·Îº¿ÀÌ ÀÛµ¿À» ÇÏÁö ¾Ê½À´Ï´Ù.. ÄÚµå»ó ¾î¶²°ÍÀÌ ¹®Á¦ÀÎÁö ¾Ë ¼ö ÀÖÀ»±î¿ä?
//atmega16
#include <mega16.h>
#include <delay.h>
#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.h>
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;
}
}
½ºÆÔ¹æÁö
[»õ·Î°íħ]
¡Ø ½ºÆÔ µî·Ï ¹æÁö¸¦ À§ÇØ °è»ê½ÄÀÇ ´äÀ» ÀÔ·ÂÇØ Áֽñ⠹ٶø´Ï´Ù.