arduino
직렬 통신
수색…
통사론
-
Serial.begin(speed)
// 주어진 보드 율로 직렬 포트를 엽니 다. -
Serial.begin(speed, config)
-
Serial[1-3].begin(speed)
// Arduino 메가! 1-3을 쓰면 직렬 포트를 선택할 때 1에서 3 사이의 숫자를 선택할 수 있습니다. -
Serial[1-3].begin(speed, config)
// 아두 이노 메가 전용! 1-3을 쓰면 직렬 포트를 선택할 때 1에서 3 사이의 숫자를 선택할 수 있습니다. -
Serial.peek()
// 버퍼에서 그것을 제거하지 않고 입력의 다음 바이트를 읽습니다 -
Serial.available()
// 버퍼의 바이트 수를 가져옵니다. -
Serial.print(text)
// 직렬 포트에 텍스트를 씁니다. -
Serial.println(text)
//Serial.print()
와 같지만 후미 줄 바꿈이 있습니다.
매개 변수
매개 변수 | 세부 |
---|---|
속도 | 직렬 포트의 속도 (일반적으로 9600) |
본문 | 직렬 포트에 쓰는 텍스트 (모든 데이터 유형) |
데이터 비트 | 패킷의 데이터 비트 수 (5 - 8), 기본값은 8입니다. |
둥가 | 오류 탐지를위한 패리티 옵션 : none (기본값), even, odd |
정지 비트 | 패킷의 정지 비트 수 : 1 (기본값), 2 |
비고
Arduino Mega에는 4 개의 직렬 포트가있어 선택할 수 있습니다. 그들은 다음과 같은 방법으로 접근한다.
Serial.begin(9600);
Serial1.begin(38400);
Serial2.begin(19200);
Serial3.begin(4800);
Arduino의 직렬 포트는 추가 매개 변수로 설정할 수 있습니다. config 매개 변수는 데이터 비트, 패리티 및 정지 비트를 설정합니다. 예 :
8 데이터 비트, 짝수 패리티 및 1 정지 비트는 - SERIAL_8E1
6 데이터 비트, 홀수 패리티 및 2 정지 비트는 - SERIAL_6O2
7 데이터 비트, 패리티 없음 및 1 정지 비트 - SERIAL_7N1
간단한 읽기 쓰기
이 예에서는 직렬 연결을 통해 들어오는 입력을 수신 한 다음 동일한 연결에서 다시 입력을 수신합니다.
byte incomingBytes;
void setup() {
Serial.begin(9600); // Opens serial port, sets data rate to 9600 bps.
}
void loop() {
// Send data only when you receive data.
if (Serial.available() > 0) {
// Read the incoming bytes.
incomingBytes = Serial.read();
// Echo the data.
Serial.println(incomingBytes);
}
}
직렬 입력 데이터에 대한 Base64 필터링
String base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
void setup() {
Serial.begin(9600); // Turn the serial protocol ON
Serial.println("Start Typing");
}
void loop() {
if (Serial.available() > 0) { // Check if data has been sent from the user
char c = Serial.read(); // Gets one byte/Character from serial buffer
int result = base64.indexOf(c); // Base64 filtering
if (result>=0)
Serial.print(c); // Only print Base64 string
}
}
직렬을 통한 명령 처리
byte incoming;
String inBuffer;
void setup() {
Serial.begin(9600); // or whatever baud rate you would like
}
void loop(){
// setup as non-blocking code
if(Serial.available() > 0) {
incoming = Serial.read();
if(incoming == '\n') { // newline, carriage return, both, or custom character
// handle the incoming command
handle_command();
// Clear the string for the next command
inBuffer = "";
} else{
// add the character to the buffer
inBuffer += incoming;
}
}
// since code is non-blocking, execute something else . . . .
}
void handle_command() {
// expect something like 'pin 3 high'
String command = inBuffer.substring(0, inBuffer.indexOf(' '));
String parameters = inBuffer.substring(inBuffer.indexOf(' ') + 1);
if(command.equalsIgnoreCase('pin')){
// parse the rest of the information
int pin = parameters.substring("0, parameters.indexOf(' ')).toInt();
String state = parameters.substring(parameters.indexOf(' ') + 1);
if(state.equalsIgnoreCase('high')){
digitalWrite(pin, HIGH);
}else if(state.equalsIgnoreCase('low)){
digitalWrite(pin, LOW);
}else{
Serial.println("did not compute");
}
} // add code for more commands
}
파이썬과의 시리얼 통신
Arduino가 컴퓨터 또는 Raspberry Pi에 연결되어 있고 Arduino에서 PC로 데이터를 보내려는 경우 다음을 수행 할 수 있습니다.
Arduino :
void setup() {
// Opens serial port, sets data rate to 9600 bps:
Serial.begin(9600);
}
void loop() {
// Sends a line over serial:
Serial.println("Hello, Python!");
delay(1000);
}
파이썬 :
import serial
ser = serial.Serial('/dev/ttyACM0', 9600) # Start serial communication
while True:
data = ser.readline() # Wait for line from Arduino and read it
print("Received: '{}'".format(data)) # Print the line to the console
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow