J 창고

[Arduino] Software Serial 통신(TX, RX), 7-Segment, 74HC595 본문

컴퓨터/Firmware

[Arduino] Software Serial 통신(TX, RX), 7-Segment, 74HC595

JSFamily 2013. 10. 8. 00:31


송신측


#include <SoftwareSerial.h>


int RX = 10;

int TX = 11;

int incomingByte = 0;


SoftwareSerial mySerial = SoftwareSerial(RX,TX);


void setup(){

  mySerial.begin(9600);

}


void loop(){

  for(int i=0;i<10;i++){

    incomingByte = i;

    mySerial.print(incomingByte);

    delay(1000);

  }

}



========================================================================


수신측


#include <SoftwareSerial.h>


int RX = 10;

int TX = 11;


SoftwareSerial mySerial = SoftwareSerial(RX,TX);


int dataPin = 2;

int clockPin = 3;

int latchPin = 4;

int incomingByte = 0;


// 0에서 9까지 숫자 표시를 위한 세그먼트 a, b, c, d, e, f, g, dp의 점멸 패턴

// 켜지는 부분이 1로 표현됨


byte digits_data[10] =

{0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE4, 0xFE, 0xE6};


void setup() {

pinMode(dataPin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(latchPin, OUTPUT);

mySerial.begin(9600);

Serial.begin(9600);


}


void loop() {

  if(mySerial.available()){

    incomingByte = mySerial.read();

    incomingByte = incomingByte - 48;

    Serial.println(incomingByte);

  }

  digitalWrite(latchPin, LOW); // 래치 출력 금지

 

  shiftOut(dataPin, clockPin, LSBFIRST, ~digits_data[incomingByte]); // 데이터 출력

 

  digitalWrite(latchPin, HIGH); // 래치 출력 허용

 

 

}





ps.

중간에 생긴 문제점은 듀에밀라노베에서 데이터를 보내는데

mySerial.println(); 으로 해가지고

println에서 출력해주는 int 상수값과 ln에 해당하는 Line Feed, Carriage Return 값까지 전송되는 문제점이 있었음.


그래서 mySerial.println(incomingByte); 로 사용하면

수신측 데이터가 한번에 상수, Line Feed(아스키값 10), Carriage Return(아스키값 13)의 총 3가지의 데이터가 한꺼번에 수신됨.




Comments