Obligatorisk oppgave nr.5

DEL I - Servo-motor

Oppgave 1

I denne oppgaven skal dere lage et enkelt instrument som viser lysstyrke. Instrumentet bruker input fra en phototransistor for å måle lysstyrken og en servo som indikerer lysstyrken for brukeren. Målet med oppgaven er at dere skal ha prøvd og styre en servo ved hjelp av innebygde biblioteker, som en forberedelse på oblig 6 hvor dere skal bygge en egen servo.

Dere skal bruke følgende komponenter:

Komponent Benevnelse
Servo S1
Phototransistor Q1
Kondensator 100uF C1
Motstand 10kOhm R1

Hint: analogRead() tar inn verdier fra 0 til 1023, men servoen har virkeområde fra \(0^\circ\) til \(180^\circ\).

Ta bilde av oppsettet med postitlapp eller lignende, med dato og brukernavn. Lim inn bildet i oblig5_<brukernavn>.pdf. Koden leveres i egen fil som oblig5_1_<brukernavn>.ino.

DEL II - I2C bus kommunikasjon mellom tre arduinoer

Oppgave 2

Merk: denne oppgaven krever at dere jobber sammen i en gruppe på tre. Om det blir vanskelig å finne partner, ta kontakt med gruppelærer. Skriv inn brukernavnet på medstudentene du har jobbet sammen med i oppgaveteksten. Legg også til følgende i arduinoprogrammet:

/**
 * Oblig 5 oppgave 2
 * Samarbeid mellom: <brukernavn1> <brukernavn2> <brukernavn3> 
 */

Erstatt <brukernavnN> med egne brukernavn.

Komponent Benevnelse
Analog Discovery 2 OSC1

Koble opp de tre arduinoene ved å koble A5 til A5, A4 og A4, og gnd til gnd mellom hverandre. A5 og A4 tilsvarer scl og sda av I2C bussen for en Arduino UNO R3 som vist her. Det anbefales å bruke brødbrettet slik at det er lettere å koble kretsen til oscilloskopet. Merk at hver arduino skal drives av en separat USB-kabel. Legg også merke til at pull-up-motstander for SCL- og SDA-linjene er innebygd i ATmega328P.

Ta bilde av oppsettet med postitlapp eller lignende, med dato og brukernavn. Lim inn bildet i oblig5_<brukernavn>.pdf.

For å skrive til og lese av registerne på arduinoer bruker vi det innebygd biblioteket Wire.h. Dette inneholder noen funksjoner som skriver og leser av registerene. Se mer i Arduinos dokumentasjon.

Oppsummering:

  1. Last opp det første programmet til masteren
  2. Last opp det andre paret med programmer til slavene
  3. Koble USB-kabelene til alle Arduinoene, og kjør Processing-koden gitt i oblig 1 oppgave 3

Den resulterende oppførselen bør være som følger:

første klikk: LED for Slave 1 slås på
andre klikk: LED for Slave 2 slås på
tredje klikk: LED for Slave 1 slås av
fjerde klikk: LED for Slave 2 slås av
...

Merk at noen ganger kan adferden se annerledes ut. Det kan skyldes at behandlingskoden registrerer to museklikk i stedet for ett, og kan identifiseres ved å analysere signalene, som forklart nedenfor:

Ta et skjermbilde av dataen (noen få linjer er nok) og lim inn i besvarelsen.

Innlevering:

Generelle krav til innlevering