arduino
シリアル通信
サーチ…
構文
-
Serial.begin(speed)
//指定されたボーレートでシリアルポートを開きます -
Serial.begin(speed, config)
-
Serial[1-3].begin(speed)
// Arduino Megaのみ! 1-3を書くときは、シリアルポートを選択するときに1から3までの数字の中から選択することができます。 -
Serial[1-3].begin(speed, config)
// Arduinoメガだけ! 1-3を書くときは、シリアルポートを選択するときに1から3までの数字の中から選択することができます。 -
Serial.peek()
//入力から次のバイトをバッファから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
}
Pythonとのシリアル通信
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);
}
Python:
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