Sök…


Syntax

  • Serial.begin(speed) // Öppnar serieporten för den angivna baudfrekvensen
  • Serial.begin(speed, config)
  • Serial[1-3].begin(speed) // Arduino Mega endast! När du skriver 1-3 betyder det att du kan välja mellan siffrorna 1 till 3 när du väljer serieporten.
  • Serial[1-3].begin(speed, config) // Arduino Mega endast! När du skriver 1-3 betyder det att du kan välja mellan siffrorna 1 till 3 när du väljer serieporten.
  • Serial.peek() // Läser nästa byte av inmatning utan att ta bort den från bufferten
  • Serial.available() // Hämtar antalet byte i bufferten
  • Serial.print(text) // Skriver text till serieporten
  • Serial.println(text) // Samma som Serial.print() men med en släpande ny linje

parametrar

Parameter detaljer
Hastighet Hastigheten för serieporten (vanligtvis 9600)
Text Texten som ska skrivas till serieporten (vilken datatyp som helst)
Databitar Antal databitar i ett paket (från 5 - 8), standard är 8
Paritet Paritetsalternativ för feldetektering: ingen (standard), jämn, udda
Stoppa bitar Antal stoppbitar i ett paket: ett (standard), två

Anmärkningar

Arduino Mega har fyra serieportar som det kan väljas från. De ansluts på följande sätt

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

Seriell port på en Arduino kan ställas in med ytterligare parametrar. Konfigurationsparametern ställer in databitar, paritet och stoppbitar. Till exempel:

8 databitar, jämn paritet och 1 stoppbit skulle vara - SERIAL_8E1

6 databitar, udda paritet och 2 stoppbit skulle vara - SERIAL_6O2

7 databitar, ingen paritet och 1 stoppbit skulle vara - SERIAL_7N1

Enkel läsning och skrivning

Det här exemplet lyssnar på ingångar som kommer in via den seriella anslutningen, och upprepar sedan samma anslutning.

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-filtrering för seriell inmatningsdata

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

Kommandohantering över serie

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 
}

Seriekommunikation med Python

Om du har en Arduino ansluten till en dator eller en Raspberry Pi och vill skicka data från Arduino till datorn kan du göra följande:

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

Pytonorm:

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow