12/12/2022

Serieel communiceren met Arduino

Filed under: — cybrarian @ 1:40 pm

Arduino naar Raspberry Pi/pc

Seriele communicatie uit de Arduino sturen was al duidelijk (Arduino seriele print uitlezen).

Arduino stuurt een stukje tekst over de serieële poort:

Serial.print("ERRROR: value ");
Serial.print(iValue);
Serial.print(" exceeds maxvalue ");
Serial.println(LEDCOUNT*3);

Pc/Raspberry Pi via USB van/naar Arduino

Nu moeten we nog via de seriele poort opdrachten of data naar de arduino kunnen sturen, vanuit een Linux pc/Rasberry Pi, via de usb kabel (gemakkelijkste manier).

Het programma op de Arduino moet daarvoor op bepaalde momenten “luisteren” naar de seriele poort.

// Serial data in from usb port
void setup() {
// run once:
Serial.begin(9600);
}
void loop() {
  if (Serial.available() > 0) {
    String sData = Serial.readStringUntil('\n');
    Serial.println("Hello from Arduino.. you sent me: ");
    Serial.println(sData);
  }
}

Of met een tellertje:

// Serial data in from usb port
long lCounter = 0;
int iLoop = 0;
void setup() {
// run once:
Serial.begin(9600);
Serial.println("Hello from Arduino...waiting for your signal");
}
void loop() {
  if (Serial.available() > 0) {
    String sData = Serial.readStringUntil('\n');
    Serial.println("Hello from Arduino.. you sent me: ");
    Serial.println(sData);
  }
  //delay(100);
  lCounter++;
  if (lCounter > 128000) {
    Serial.println("Silence? .. ");
    lCounter = 0;
    iLoop ++;
    Serial.println(iLoop);
  }
}

Het sturen van data van de Raspberry Pi naar de arduino zal dikwijls met Python gebeuren, daar is online veel documentatie over te vinden.

Maar het kan bv ook met Gambas3: http://gambas.copyleft.be/blog/archives/2774, zowel van als naar Arduino.

Powered by WordPress