Zoeken…


Syntaxis

  • Serial.begin(speed) // Opent de seriële poort op de gegeven baudrate
  • Serial.begin(speed, config)
  • Serial[1-3].begin(speed) // alleen Arduino Mega! Bij het schrijven van 1-3 betekent dit dat u kunt kiezen tussen de cijfers 1 tot 3 wanneer u de seriële poort kiest.
  • Serial[1-3].begin(speed, config) // alleen Arduino Mega! Bij het schrijven van 1-3 betekent dit dat u kunt kiezen tussen de cijfers 1 tot 3 wanneer u de seriële poort kiest.
  • Serial.peek() // Leest de volgende byte van invoer zonder deze uit de buffer te verwijderen
  • Serial.available() // Hiermee wordt het aantal bytes in de buffer Serial.available()
  • Serial.print(text) // Schrijft tekst naar de seriële poort
  • Serial.println(text) // Hetzelfde als Serial.print() maar met een nieuwe regel

parameters

Parameter Details
Snelheid De snelheid van de seriële poort (meestal 9600)
Tekst De tekst die naar de seriële poort moet worden geschreven (elk gegevenstype)
Gegevensbits Aantal databits in een pakket (van 5 - 8), standaard is 8
Pariteit Pariteitsopties voor foutdetectie: geen (standaard), even, oneven
Stop bits Aantal stopbits in een pakket: één (standaard), twee

Opmerkingen

De Arduino Mega heeft vier seriële poorten waaruit kan worden gekozen. Ze worden op de volgende manier betreden

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

De seriële poort op een Arduino kan worden ingesteld met extra parameters. De configuratieparameter stelt databits, pariteit en stopbits in. Bijvoorbeeld:

8 databits, zelfs pariteit en 1 stopbit zou zijn - SERIAL_8E1

6 databits, oneven pariteit en 2 stopbit zouden zijn - SERIAL_6O2

7 databits, geen pariteit en 1 stopbit zou zijn - SERIAL_7N1

Eenvoudig lezen en schrijven

Dit voorbeeld luistert naar invoer die binnenkomt via de seriële verbinding en herhaalt deze vervolgens terug via dezelfde verbinding.

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-filtering voor seriële invoergegevens

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

Opdrachtafhandeling via serieel

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 
}

Seriële communicatie met Python

Als u een Arduino hebt aangesloten op een computer of een Raspberry Pi en gegevens van de Arduino naar de pc wilt verzenden, kunt u het volgende doen:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow