일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Hasselblad 500cm
- 4870
- Rollei35s
- cs50/2.5
- Minolta CLE
- M-Rokkor 40/2
- FujiFilm GFX50s
- Nikon 28Ti
- FujiFilm C200
- Kodak T-Max 100
- SONY A7
- Germany
- 2019 유럽여행
- fujifilm velvia 50
- N80/4
- Minolta TC-1
- Kodak 400TX
- GRD2
- Kodak Ektar 100
- 2018 미국출장
- Contax G2
- Kodak 5222
- Mamiya 7
- cf50/4 fle
- G28/2.8
- Kentmere 400
- cf80/2.8
- Leica M7
- ZeissIkon ZI
- kodak t-max 400
- Today
- Total
J 창고
[Arduino] Software Serial 통신(TX, RX), 7-Segment, 74HC595 본문
송신측
#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가지의 데이터가 한꺼번에 수신됨.