Suche…


Syntax

  • Serial.begin(speed) // Öffnet die serielle Schnittstelle mit der angegebenen Baudrate
  • Serial.begin(speed, config)
  • Serial[1-3].begin(speed) // Nur Arduino Mega! Beim Schreiben von 1-3 können Sie bei der Wahl des seriellen Anschlusses zwischen den Ziffern 1 bis 3 wählen.
  • Serial[1-3].begin(speed, config) // Nur Arduino Mega! Beim Schreiben von 1-3 können Sie bei der Wahl des seriellen Anschlusses zwischen den Ziffern 1 bis 3 wählen.
  • Serial.peek() // Liest das nächste Byte der Eingabe, ohne es aus dem Puffer zu entfernen
  • Serial.available() // Ruft die Anzahl der Bytes im Puffer ab
  • Serial.print(text) // Schreibt Text an die serielle Schnittstelle
  • Serial.println(text) // Serial.print() jedoch mit einer nachgestellten Zeile

Parameter

Parameter Einzelheiten
Geschwindigkeit Die Rate der seriellen Schnittstelle (normalerweise 9600)
Text Der zu schreibende Text an der seriellen Schnittstelle (beliebiger Datentyp)
Daten Bits Anzahl der Datenbits in einem Paket (von 5 bis 8), Standardeinstellung ist 8
Parität Paritätsoptionen für die Fehlererkennung: keine (Standardeinstellung), gerade, ungerade
Stopp-Bits Anzahl der Stoppbits in einem Paket: eins (Standardeinstellung), zwei

Bemerkungen

Der Arduino Mega verfügt über vier serielle Anschlüsse, aus denen ausgewählt werden kann. Sie werden auf folgende Weise erreicht

  Serial.begin(9600);
  Serial1.begin(38400);
  Serial2.begin(19200);
  Serial3.begin(4800);

Die serielle Schnittstelle eines Arduino kann mit zusätzlichen Parametern eingestellt werden. Der Parameter config setzt Datenbits, Parität und Stoppbits. Zum Beispiel:

8 Datenbits, gerade Parität und 1 Stoppbit wären - SERIAL_8E1

6 Datenbits, ungerade Parität und 2 Stoppbits wären - SERIAL_6O2

7 Datenbits, keine Parität und 1 Stoppbit wäre - SERIAL_7N1

Einfach lesen und schreiben

Dieses Beispiel wartet auf Eingaben, die über die serielle Verbindung eingehen, und wiederholt dieselbe Verbindung.

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-Filterung für serielle Eingangsdaten

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
    }
}

Befehlsverarbeitung über serielle

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 
}

Serielle Kommunikation mit Python

Wenn Sie ein Arduino an einen Computer oder ein Raspberry Pi angeschlossen haben und Daten vom Arduino an den PC senden möchten, können Sie Folgendes tun:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow