USB-sladden mellan Arduino och datorn kan skicka data åt båda hållen. Kommunikations-systemet i Arduino-kortet har en liten mängd minne där meddelanden lagras när de kommer in. Detta minne rymmer normalt bara 50 tecken så det är viktigt att din kod regelbundet kollar om någon data har tagits emot och hantera det. För att se om det finns data tillgänligt använder man funktionen Serial.available() vilken returnerar antalat tecken som tagits emot och ännu inte hanterats. Med andra ord om den returnerar ett värde som är större än noll så finns det data.
Exakt hur du hanterar mottagen data beror på typen av data. Det finns många funktioner för att läsa data på olika sätt. Några av de lättaste att använda är:
- Serial.readString() – läs en textrad
- Serial.parseInt() – läs ett heltal
- Serial.readFloat() – läs decimaltal (flyttal)
I exemplet nedan så aktiveras först kommunikationen med datorn med kommandot Serial.begin(9600). Programmet går sedan in i loop() som kontinuerligt kollar om det finns någon data att läsa. Om det finns det så läser det in en hel textrad. För att veta var en rad slutar och nästa börjar så skickar datorn ett speciellt radbrytningstecken. Arduinokoden läser in datan tecken för tecken ända tills den ser ett sådan radbrytningstecken. Koden nedan skickar sedan tillbaka texten till datorn för att visa att den tagit emot den korrekt.
Koden
// Funktionen setup körs en gång vid uppstart eller reset
void setup() {
// Aktivera seriell kommunikation med en hastighet av 9600 bps
Serial.begin(9600);
// Skicka ett startmeddelande till datorn
Serial.println("Programmet startar");
}
// Funktionen loop körs om och om igen tills Arduinon stängs av eller resettas
void loop() {
// Kolla om data har tagits emot
if (Serial.available() > 0) {
// Skapa en sträng-variabel för det mottagna meddelandet
String msg;
// Läs in allt fram till en radbrytning
msg = Serial.readString();
// Skicka tillbaka strängen till datorn för att visa att den tagits emot
Serial.print("Tog emot: ");
Serial.println(msg);
}
}