Serial Monitor

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Serial Monitor[1] er et dejligt enkelt hjælpeværktøj man kan anvende i programmeringen af en Arduino. Porten der anvendes til dette er den serielle port som er beskrevet under Arduino Seriel.

Formålet er at man kan sende information fra Arduinoen til PC-en og få det vist på PC-ens skærm løbende som programmet i Arduinoen afvikles.

Man kan også sende beskeder fra PC-en til Arduinoen.

Visning

Man får vist den serielle monitor ved at klikke på knappen som vist i IDE-et
Serial Monitor Button.png

Alternativt kan man anvende genvejstasten Shift-Ctrl-M

Den serielle monitor ser ud som vist her:
Serial Monitor Window.png

Forbindelse til Serial Monitor

For at arbejde med den serielle monitor skal man etablere forbindelse til den via den serielle port[2] med en angivet hastighed. Dette skal initialiseres på følgende måde i setup():

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  delay(100);
  Serial.println("Welcome to My Program");
  Serial.println("---------------------");
  Serial.println();
}

Hastighed

Som angivet i Serial.begin skal der angives en kommunikations-hastighed (i det viste eksempel 9600). Dette antal angiver bit pr. sekund der kommunikeres over den serielle port, hvilket også angives som Baud - denne hastighed skal være den samme som angives nederst til højre i vinduet med den serielle monitor.

Hastigheden skal angives i nogle specielle trin:

  • 300
  • 1200
  • 2400
  • 4800
  • 9600
  • 19200
  • 38400
  • 57600
  • 115200

Ved en standard hastighed på 9600 Baud tager det ca. 1 ms at få hver karakter sendt til den serielle monitor.

Hvis man sender begrænset information (mindre end 64 bytes ad gangen der er bufferstørrelsen i modulet), så vil det ikke tage 1 ms for hver karakter i programmet, da karaktererne bare placeres i bufferen, og sendes når det er tid til det.

Sender man større mængder data efter hinanden, så vil bufferen løbe fuld, og så vil programmet vente på at der er plads i bufferen inden den næste karakter sendes. Fortsætter man på den måde vil programmet begrænses som om man havde en delay(1) inde for hver karakter man sender.

En mulighed for at gøre det mere effektivt kan være at sætte hastigheden op.

Udskrift til Serial Monitor

For at udskrive til den serielle monitor anvendes Serial.print() eller Serial.println()

Man kan både skrive tekster og indholdet af variabler ud som vist her:

int antal = 34;
Serial.print("Antallet er:");
Serial.print(antal);
Serial.println(" stk");
// Udskriv  Antallet er:34 stk

Indlæsning af tekst fra PC til Arduino

Man kan også læse tekst fra den serielle monitor ind i Arduinoen.

Her skal man hele tiden tjekke om der er kommet noget med Serial.available() før man kan læse noget med Serial.read()

Man skriver ind i toppen af den serielle monitor og der sendes først til Arduinoen når der trykkes Enter.

Koden til at læse kan se ud som følger:

char ch;

if (Serial.avaliable() > 0) {
  ch = Serial.read();
  if (ch == '2') {
    Serial.println("Du trykkede 2");
  }
}

Referencer