Arduino Serial

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

Denne opgave er en del af den grundlæggende start på Arduinoen.

Software

Der er ikke et enkelt program der kan dække hele opgaven, så der skal hentes dele fra forskellige programmer, for at lære de forskellige teknikker omkring den serielle port.

At skrive ud fra Arduinoen

Det første er at få Arduinoen til at sende noget der kan læses på PC'en.

I Arduino-programmet åbnes Fil - Eksempler - 01.Basics - AnalogReadSerial[1].

Virkemåde

I funktionen setup() sættes den serielle port op til at kommunikere med 9600 Baud (bit pr. sekund).

I funktionen loop() afvikles den samme kode i en uendelig løkke, hvor der læses en analog værdi på ben A0 - dette giver et tal mellem 0 og 1023. Værdien udlæses på den serielle port.

Hardware

Der skal ikke tilsluttes noget hardware for at teste programmet, men man kan prøve at variere spændingen på A0.

Test

For at teste programmet angives hvilken seriel port der skal kommunikeres med ved at vælge Værktøjer - Seriel Port - COM X, hvor der vælges den serielle port der er etableret af Arduinoen (Kan findes under Enhedshåndteringen på PCen i delen Porte (COM og LPT) ).

Herefter startes den serielle konsol på PC'en, så man kan se hvad Arduinoen skriver ud på den serielle port.

Dette giver følgende visning:
Arduino-seriel-1.png
Visning af den serielle konsol

Tallene løber bare ned over skærmen i en uendelig strøm.

At at læse tal ind i Arduinoen

Det første er at få Arduinoen til at sende noget der kan læses på PC'en.

I Arduino-programmet åbnes Fil - Eksempler - 04.Communication - Dimmer[2].

Virkemåde

I funktionen setup() sættes den serielle port op til at kommunikere med 9600 Baud (bit pr. sekund), og der sættes et digitalt output op på Pin 9 - dette skal bruges til PWM som virker som et analogt output.

I funktionen loop() afvikles den samme kode i en uendelig løkke, hvor der ventes på en seriel karakter. ASCII værdien af denne karakter udskrives som en analog værdi på Pin 9. Ved at sende forskellige karakterer til programmet med konsollen (hver karakter sendes først når der tastes Enter).

Hardware

For at man kan se variationen skal der tilsluttes en lysdiode på ben 9 med en formodstand til stel.

Test

For at teste programmet startes den serielle konsol på PC'en, så man kan sende noget på den serielle port.

Prøv at sende ! (afslut med Enter) - dette giver svagt lys.

Prøv at sende f - det giver middel lys.

Prøv at sende ø - det giver kraftigt lys.

Udvidelse 1

Prøv at tilføje en linje i koden, så tal-værdien af karakteren udskrives i konsollen (tilføjes efter linjen hvor brightness læses).

    Serial.println(brightness);

Udvidelse 2

For at kunne styre talværdien bedre, så rettes linjen der læser tallet ind, så der står:

    brightness = Serial.parseInt();

Prøv med forskellige tal fra 0 til 255, og observer de forskellige lysstyrker.

Variablen brightness er en byte, og kan derfor kun indeholde værdier fra 0 til 255 - prøv at taste tal større end 255, og find ud af hvordan Arduinoen håndterer dette.

Referencer

  1. http://arduino.cc/en/Tutorial/AnalogReadSerial Analog læsning, Udskrift Seriel
  2. http://arduino.cc/en/Tutorial/Dimmer Seriel indlæsning "Analogt" output