Obligatorisk oppgave nr.1
I denne obligatoriske oppgaven er m?let ? komme i gang med Arduino UNO, Arduino IDE og Processing. S?rg for at du er kjent med grunnleggende sikkerhet for elektronikk f?r du begynner med oppgaven. Du kan finne v?re interne sikkerhetsrutiner her. For?vrig anbefaler vi ? se p? nettressursene som medf?lger Arduino student kit.
Merk: Denne oppgaven forutsetter at du har skaffet deg Arduino Student Kit. Du finner informasjon om innkj?p av settet her.
Oppgave 1:
I denne oppgaven skal vi montere Arduino UNO kortet til den medf?lgene plastikkbasen og deretter feste br?dbrettet (som vist i bildet under).
Tips: Det er vilk?rlig hvilken vei du fester br?dbrettet , men det er anbefalt ? feste br?dbrettet slik at nummereringen er lik som i Arduinos nettressurser.
Oppgave 2:
For ? programmere Arduinoen, trenger vi Arduino Desktop IDE. Vi skal n? installere programmvaren og s? bruke et ferdig skript som f?lger med Arduino Desktop IDE. Skriptet gj?r at en LED p? Arduinoen blinker. Arduino IDEen er installert p? alle Linux termstuemaskiner p? IFI.
Dersom du bruker egen laptop, last ned og installer Arduino Desktop IDE (Vi bruker Arduino Desktop IDE versjon 2.0, ikke Arduino Web Editor). Hvis du opplever problemer med installasjonen, kan du f? hjelp av gruppel?rer i gruppetime.
Pakk ut USB kabelen og koble Arduinoen til PCen. I Arduino IDE, g?
til Tools->Board og sjekk at brettet som er valgt er
Arduino UNO. G? deretter til Tools->Serial
Port og velg porten som p? Linux/Mac antageligvis heter
/dev/ttyACM0
eller lignende (som vist i bildet under). P?
Windows kan porten hete COMX
, der X
er et
nummer. Navnet p? porten kan variere, avhengig av operativsystem og hvor
mange USB-enheter du har tilkoblet. Se dokumentsjon p? Arduinos nettside
her.
For ? teste at programvaren fungerer, skal dere programmere Arduinoen til ? blinke. G? til File->Examples->01.Basics->Blink. Dette ?pner et nytt vindu med koden som f?r en LED p? Arduinoen til ? blinke. For ? kj?re koden p? Arduinoen, trykk p? h?yre-pilen i menyen (som vist i bildet under). Dette vil kompilere og overf?re koden til Arduinoen.
N?r Arduinoen er programmert blinker en LED av og p? med et sekunds intervall. G? inn i koden og juster parameteren til funksjonen delay, slik at LEDen er p? i 4 sekunder, og av i 2 sekunder. Merk at delay parameteren er gitt i millisekunder.
Oppgave 3:
I denne oppgaven skal dere sette opp kommunikasjon mellom PCen og Arduinoen. M?let er ? kj?re oppp en enkel GUI applikasjon hvor du kan skru av og p? den innebygde LEDen p? Arduinoen. GUI applikasjonen bruker Processing som er mye brukt i sammenheng med Arduinoprosjekter. Hvis du bruker egen maskin kan du laste ned Processing her, alternativt er programvaren tilgjengelig p? alle Linux termstuemaskiner p? IFI.
Koden for Processing kan dere laste ned som prekode her.
Tips: Du kan laste ned prekoden i terminalen ved ? g? til ?nsket mappe, deretter kj?re:
git clone https://github.uio.no/in1080/prekode.git
Det er mulig dere m? endre port p? linje 15 i
oblig1.pde
, for ? f? det til ? virke med deres
operativsystem. Utenom denne endringen skal det ikke v?re n?dvendig ?
gj?re endringer i oblig1.pde
-filen, med mindre der selv
?nsker ? utvide funksjonaliteten.
N?r du trykker p? Run-knappen skal et vindu ?pne med et bilde av en Arduino UNO. (Merk at det ikke er mulig ? laste opp kode fra Arduino IDEen n?r run er trykket, fordi Processing vil okkupere den samme porten som Arduinoen er tilkoblet. Trykk Stop-knappen i Processing for ? ?pne porten igjen). Funksjonaliteten til programmet er at n?r man trykker med musepekeren p? bildet skal Arduinoens innebygde LED lyse/skru seg av.
Det neste er ? implementere koden p? Arduinoen. Som dere ser i
prekoden til Processing leses det av en tekststreng i linje 24 i
oblig1.pde
. Denne tekstrengen skal inneholde “0” eller “1”
avhengig av tilstanden til LEDen. Dersom brukeren trykker p? bildet med
Arduinoen, sender Processing en ‘1’ til Arduinoen av typen
char
. Deres oppgave blir dermed:
- Fange opp n?r brukeren har trykket p? bildet ved hjelp av
Serial.read()
-funksjonen. - Sette
LED_BUILTIN
tilHIGH
dersom den er lav og vice versa. - Sende en string ved hjelp av
Serial.print()
-funksjonen som er “0” hvisLED_BUILTIN
erLOW
og “1” hvisLED_BUILTIN
erHIGH
.
Dere kan bruke Arduinokoden under som et utgangspunkt:
char inputValue; // Data received from the serial port
void setup() {
// put your setup code here, to run once:
(LED_BUILTIN, OUTPUT); // Set pin as OUTPUT
pinMode.begin(9600); // Start serial communication at 9600 bps
Serial
}
void loop() {
if (Serial.available())
{ // If data is available to read,
= Serial.read(); // read it and store it in val
inputValue
if (inputValue == '1')
{ // If 1 was received
.print(""); //Insert your code in this block
Serial}
= '0';
inputValue }
(10); // Wait 10 milliseconds for next reading
delay}
Innlevering:
- Koden fra oppgave 3 skal leveres p? formen
oblig1_<brukernavn>.ino
ogoblig1_<brukernavn>.pde
.
Generelle krav til innlevering
- Sett dere inn i sikkerhetsrutiner for lab.
- IFIs retningslinjer for obligatoriske oppgaver finner dere her.
- Oppgavene skal l?ses individuelt med mindre annet er oppgitt i oppgaveteksten.
- Besvarelsene leveres i f?lgende format i Canvas:
- Tekstlig besvarelse skal leveres PDF format p?
formen
oblig<nummer>_<brukernavn>.pdf
. (Se v?r LaTeX-mal) - Arduinokode skal leveres p? formen
<filnavn>.ino
. - Processingkode skal leveres p? formen
<filnavn>.pde
. - Matlabkode skal leveres p? formen
<filnavn>.m
. - Pythonkode skal leveres p? formen
<filnavn>.py
.
- Tekstlig besvarelse skal leveres PDF format p?
formen
- Plott m? inkludere tittel og benevnelser p? aksene. Man m? ogs? oppgi m?leenhet i parentes hvis man plotter en fysisk st?rrelse (se eksempel i malene: Plotting i Python og Plotting i Matlab)
- Plotter dere flere kurver i samme plott m? dere spesifisere kurvene med “legend” (se eksempel i malene)