아두이노 Xbee를 구매 했는데...ㅜㅜ

Kore 2017-03-22 (수) 02:01 7년전 2223  

Xbee를 아두이노를 아무것도 모르는데도 덜컥 사버렸습니다;;;

[소스 출처]

http://blog.naver.com/PostView.nhn?blogId=roboholic84&logNo=10187443793&parentCategoryNo=7&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView

 

unsigned char i;
 unsigned char j; 
/*Port Definitions*/
int Max7219_pinCLK = 10;
int Max7219_pinCS = 9;
int Max7219_pinDIN = 8;
 
int vol;
 
unsigned char disp1[9][8]={
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//0
{0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1},//1
{0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3},//2
{0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7},//3
{0xF,0xF,0xF,0xF,0xF,0xF,0xF,0xF},//4
{0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F},//5
{0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F},//6
{0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F},//7
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//8
};
 
 
 
void Write_Max7219_byte(unsigned char DATA) 
{   
            unsigned char i;
     digitalWrite(Max7219_pinCS,LOW);  
     for(i=8;i>=1;i--)
          {    
             digitalWrite(Max7219_pinCLK,LOW);
             digitalWrite(Max7219_pinDIN,DATA&0x80);// Extracting a bit data
             DATA = DATA<<1;
             digitalWrite(Max7219_pinCLK,HIGH);
           }                                 
}
 
 
void Write_Max7219(unsigned char address,unsigned char dat)
{
        digitalWrite(Max7219_pinCS,LOW);
        Write_Max7219_byte(address);           //address,code of LED
        Write_Max7219_byte(dat);               //data,figure on LED 
        digitalWrite(Max7219_pinCS,HIGH);
}
 
void Init_MAX7219(void)
{
 Write_Max7219(0x09, 0x00);       //decoding :BCD
 Write_Max7219(0x0a, 0x03);       //brightness 
 Write_Max7219(0x0b, 0x07);       //scanlimit;8 LEDs
 Write_Max7219(0x0c, 0x01);       //power-down mode:0,normal mode:1
 Write_Max7219(0x0f, 0x00);       //test display:1;EOT,display:0
}
 

void setup(){
  Serial.begin(57600);
pinMode(Max7219_pinCLK,OUTPUT);
  pinMode(Max7219_pinCS,OUTPUT);
  pinMode(Max7219_pinDIN,OUTPUT);
  delay(50);
  for(i=1;i<9;i++)
    {
    Write_Max7219(i,disp1[0][i-1]);
    }
  Init_MAX7219();
}

byte rssi=0x00;
void loop(){
  if(Serial.available()){
    byte in = Serial.read();
    if(in == (byte) 0x7E){
      int i=0;
      while(true){
        if(Serial.available()){
          in= Serial.read();
          if(i==5)rssi=in;
          Serial.print(in,HEX);
          Serial.print(" ");
          i++;
        }
        if(i>13)break;
      }
      Serial.print("/ ");
      Serial.print("RSSI:");
      Serial.print(rssi,HEX);
      Serial.println(" ");
    }
  }
  if(rssi>0x30){
    for(i=1;i<9;i++)
    {
    Write_Max7219(i,disp1[0][i-1]);
    }
  }
  else if(rssi>0x2B){
 for(i=1;i<9;i++)
    {
    Write_Max7219(i,disp1[2][i-1]);
    }
  }
  else if(rssi>0x27){
for(i=1;i<9;i++)
    {
    Write_Max7219(i,disp1[4][i-1]);
    }
  }
  else if(rssi>0x22){
for(i=1;i<9;i++)
    {
    Write_Max7219(i,disp1[6][i-1]);
    }
  }
  else if(rssi>0x1C){
for(i=1;i<9;i++)
    {
    Write_Max7219(i,disp1[8][i-1]);
    }
  }
  else{

  }
}

이렇게 코드가 구성이 되어 있는데, 도트 매트릭스가 아닌, 일반 LED 3개정도로 3단계 불빛 구성과, 릴레이 이용한 회로 만드려고 하는데 Max7219 이거 어디서부터 어떻게 건드려야 할까요.... 조언좀 부탁드려요...
메카리워즈 Image Map

메카 2017-03-22 (수) 09:47 7년전
일반 LED 3개로 3단계 불빛 구성을 하신다면,

// LED 세 개로 거리에 따른 밝기 보여주기
int LED1 = 9; //첫번째 LED D9에 연결
int LED2 = 10; //첫번째 LED D9에 연결
int LED3 = 11; //첫번째 LED D9에 연결

void setup(){
  Serial.begin(57600);
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  delay(50);
}

byte rssi=0x00;
void loop(){
  if(Serial.available()){
    byte in = Serial.read();
    if(in == (byte) 0x7E){
      int i=0;
      while(true){
        if(Serial.available()){
          in= Serial.read();
          if(i==5)rssi=in;
          Serial.print(in,HEX);
          Serial.print(" ");
          i++;
        }
        if(i>13)break;
      }
      Serial.print("/ ");
      Serial.print("RSSI:");
      Serial.print(rssi,HEX);
      Serial.println(" ");
    }
  }
  if(rssi>0x30){
    digitalWrite(LED1,LOW);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
  }
  else if(rssi>0x2B){
    digitalWrite(LED1,HIGH);
    digitalWrite(LED2,LOW);
    digitalWrite(LED3,LOW);
  }
  else if(rssi>0x27){
    digitalWrite(LED1,HIGH);
    digitalWrite(LED2,HIGH);
    digitalWrite(LED3,LOW);
  }
  else if(rssi>0x22){
    digitalWrite(LED1,HIGH);
    digitalWrite(LED2,HIGH);
    digitalWrite(LED3,HIGH);
  }
  else if(rssi>0x1C){

  }
  else{

  }
}

라고 생각합니다만, 테스트가 필요할 것 같습니다.

MAX7219는 도트매트릭스이기 때문에 릴레이와는 상관이 없으며, 릴레이를 사용하실 떄는 릴레이를 아두이노의 디지털핀에 연결하신 후, LED를 껐다가켜듯이 pinMode라는 함수와 digitalWrite함수로 제어하실 수 있습니다.
주소

모바일 버전으로 보기