Dokumentation af UR Med børnetimer til TV-visning

Størrelse: px
Starte visningen fra side:

Download "Dokumentation af UR Med børnetimer til TV-visning"

Transkript

1 Dokumentation af UR Med børnetimer til TV-visning Bent Arnoldsen Holstebro HTX Eksempelrapport Dækker ind over fagene Teknologi B, Computer- og El-Teknik A og Programmering C September-Oktober 2018

2 Indholdsfortegnelse Indledning... 3 Problemformulering... 3 Udviklingsprocessen... 3 Kravspecifikation... 3 Blokdiagram... 4 Hardware opbygning... 5 Hardware dokumentation... 5 Display... 6 Tilslutning af displayet... 7 Styring af TV-et med en relæudgang... 8 Tilslutning af relæet... 8 Betjening af uret... 9 Tilslutning af betjening... 9 Totaldiagram... 9 Strømforsyning til opstillingen Grænsefladespecifikation Test Software opbygning Hoved-loopet Start-koden setup() Optælling af uret i sekunder, minutter og timer Præcis håndtering af tiden Kommentarer til overløb af millis() Udskrift af tiden i Serial Monitor Test af tiden i uret Justering af tiden Test af justeringen af uret Visning i Display Test af TV-tiden og relæ Sluttest af prototype Konklusion Perspektivering

3 Kildeliste Bilag 1 Programkoden Bilag 2 Totaldiagram

4 Indledning Denne dokumentation er blevet til som resultatet fra et kursus i Arduino-programmering på Holstebro HTX, og er ikke tæt knyttet til et bestemt fag, men låner dokumentationsstandarder fra fagene teknologi, teknikfag-el og programmering. Dokumentationen skal således betragtes som et forslag til hvordan man kunne dokumentere inden for de forskellige fag, og ikke som en skabelon for en rapportform. Hen gennem dokumentationen er der også indflettet kommentarer om hvordan dokumentationen er opbygget, og hvordan den ellers kunne udformes, altså en form for metakommunikation til dokumentationen. Problemstillingen er valgt ud fra at der skal kunne illustreres forskellige programmeringsteknikker der viser forskellige måde at løse tingene på i en Arduino. Den konkrete problemstilling kunne være formuleret i følgende: Jeg ønsker et apparat der kan begrænse mine børns TV-tid til 2 timer i døgnet. Problemformulering Der ønskes fremstillet en konstruktion (på prototype-niveau) som kan udmåle tiden i et døgn, og som hvert døgn tildeler en fast mængde tid hvor et TV kan være tændt. Konstruktionen skal kunne tænde og slukke for TV et, så brugeren selv styrer den tildelte tid. Der skal vises både hvad klokken er og hvor lang tid der er tilbage at se TV i. Udviklingsprocessen Selve udviklingsprocessen er præget af at det for udvikleren er en ret kendt problemstilling, så der er ikke de store tekniske forhindringer i at udvikle softwaren. Processen er alligevel taget ud fra et iterativt synspunkt ved hjælp af stepwise improvement (Arnoldsen, 2013d), hvor der trinvist tilføjes nye dele til programmet, hvor der testes og tilrettes i koden til den nye del fungerer og spiller sammen med de resterende dele der er implementeret. Denne metode minder lidt om en agil metode, men minder nok mest om en spiral metode, da nogle dele bliver tilrettet også efter hvordan de næste dele udvikles. Endelig har processen også lånt noget fra vandfaldsmodellen, da hele den grundlæggende kravspecifikation er sat op inden udviklingsprocessen går i gang. Kravspecifikation Ud fra ovenstående problemformulering opstilles følgende kravspecifikation, hvor der defineres et niveau for færdiggørelsen (den skal ikke sættes i produktion): Konstruktionen skal opbygges som en prototype på fumlebræt Uret skal holde styr på tiden i et døgn. Der skal være visning af timer, minutter og sekunder i døgnet Uret skal være let aflæseligt Der skal være mulighed for på brugervenlig vis at justere tiden Konstruktionen skal have en udgang der skal kunne tænde og slukke for et TV (230V) Der skal tildeles en fast tid (fx 2 timer) hvert døgn, hvor TV et kan være tændt Der skal være en let aflæselig visning af den resterende tid Tiden skal tælle ned når TV et er tændt TV et skal ikke kunne tændes i den resterende del af døgnet, når den tildelte tid er brugt 3

5 Ud fra kravspecifikationen lægger det op til at konstruktionen kommer til at bestå af en række dele til at opfylde de forskellige krav, således at man ved hjælp af en central programmerbar enhed (Arduinoen) kan komme til at opfylde de stillede funktionskrav. Konstruktionen vil komme til at indeholde følgende dele: En Arduino som centralt element i styringen, den programmeres via en PC, som anvendes under udviklingen, men som kan erstattes med en simpel strømforsyning, når konstruktionen er færdigudviklet. Et display der kan vise klokkeslæt og resterende tid i det pågældende døgn. En kontakt til at tænde og slukke for TV et Et relæ der faktisk kan tænde og slukke for 230V, så det kan styre om TV et må være tændt. En betjening til at justere uret med. Blokdiagram Ud fra kravspecifikationen kan vi opstille et blokdiagram, der illustrerer sammenhængen mellem de dele der indgår i konstruktionen. Figur 1. Blokdiagram over konstruktionen af uret med styring af TV-tid Som det kan ses i blokdiagrammet på figur 1, så er Arduinoen den centrale enhed, og der er ikke indikeret hvor den egentlige tidsregistrering sker, men det tænkes gjort inde i Arduinoens program. 4

6 Hardware opbygning Ud fra kravspecifikationen er der valgt at lave konstruktionen på et fumlebræt, så den ender med at se ud som vist i figur 2. Figur 2. Den færdige prototype opbygget med en Arduino og komponenter på fumlebræt Hardware dokumentation For at dokumentere opbygningen af hardwaren vil det aldrig være godt nok at vise et billede af opstillingen som i figur 2. Det vil være et krav i teknikfaget at man anvender diagrammer, men man i teknologi kan vise en pæn skitse der dokumenterer sammenhængen i hardwaren. 5

7 Til at dokumentere hvordan hardwaren er bygget op kan man bruge forskellige programmer. I teknologi vil det være helt fint at vise opstillingen bygget i Fritzing (Source, 2018). Denne opbygning kan ses i figur 3. Figur 3. Tegning af opstillingen lavet ved hjælp af Fritzing Der kan også trækkes et diagram ud af Fritzing, men den viste breadboard-opbygning vil normalt være dækkende for teknologis vedkommende. Det vil også hjælpe på dokumentationen hvis der er en kort beskrivelse af fumlebrættet: Øverst er der Arduinoen, der indeholder programmet der er udviklet på en PC Til venstre på fumlebrættet sidder de 4 kontakter til betjening Nederst ses displayet, der også har tilsluttet en kontrastjustering Til højre for fumlebrættet sidder relæet, der skal kunne styre 230V til TV et, og inde på fumlebrættet er der en lysdiode som indikator for at TV et er tændt samt de komponenter der skal til at drive relæet. I praksis anvendes et modul med transistoren på, men det fandtes ikke i Fritzing. I teknikfaget vil denne dokumentation være lidt overflødig, men skal i stedet erstattes af diagrammer der fx kan tegnes i Eagle (Autodesk, 2018). Display Som display-enhed vælges et LCD-display med 2 linjer på hver 16 karakterer (Arnoldsen, 2017a). Displayet er i stand til at vise både tal og bogstaver, hvilket giver mulighed for at kunne tilføje forklarende tekst. Denne løsning er valgt ud fra at det er et meget brugt display til Arduino, og at det er relativt let at tilslutte. 6

8 Alternative valg kunne være 7-segment display. Denne løsning er fravalgt, så det ville kræve 6 displays til hvert tid, altså 12 i alt. Dette ville give meget hardware-opkobling, krav til driverkredse og mange forbindelser fra Arduinoen. Der kunne vælges et 2 linjers display med 8 karakterer på hver dette ville lige kunne vise det ønskede, men giver meget lidt frihed i designet. Der kunne vælges et TFT grafisk display (Arnoldsen, 2017b), så man kunne lave noget der minder om et analogt ur, og samtidigt have tekst det ville endda give muligheden for at lægge betjeningen ind i displayet, da det også har touch-funktion. Dette er fravalgt, da det ville lægge meget af programmeringsfokus på netop denne komponent. Tilslutning af displayet Som illustreret i figur 4, så skal displayet kobles op med 6 signal-ledninger, et potentiometer til kontrastjustering og forsyning til både displayet og baggrundslys (A og K). Figur 4. Deldiagram med tilslutning af displayet. Kommunikationen til displayet er opdelt, så den foregår med 4 bit ad gangen på DB4-DB7, og den kontrolleres med de to kontrolledninger RS og E. Der er også mulighed for at læse i displayets hukommelse, men da det ikke udnyttes sætte R/W til stel, så man kun kan skrive til displayet. Selve skrivningen til displayet håndteres af et bibliotek der kommer med i Arduinoens IDE. 7

9 Styring af TV-et med en relæudgang I sin endelige form tænkes konstruktionen indbygget i et TV, og vil derfor kunne integreres i den styring der sidder i TV et. I prototypen skal det kunne godtgøres at konstruktionen kan tænde og slukke for TV et. Dette gøres ved at anvende et relæ der kan arbejde med 230V på kontakterne i prototypen vil der af hensyn til sikkerheden ved arbejde med 230V ikke blive testet med et TV. Tilslutning af relæet I diagrammet er der valgt at indsætte et relæ og en transistor til at drive relæet, da Arduinoen ikke kan levere strøm nok til relæspolen. Dette er illustreret i figur 5. Figur 5. Deldiagram med relæ-tilslutningen og en Lysdiode som indikator. I teknikfaget vil man foretage en beregning af modstanden R2 foran lysdioden (Arnoldsen, 2013b), hvor den viste modstand på 330 ohm er beregnet ud fra 10 ma i lysdioden. Tilsvarende beregnes formodstanden R1 til transistoren ud fra den strøm relæet kræver og transistorens strømforstærkning. Strømmen til relæet er på 89,3 ma (Relay, u.d.) og strømforstærkningen i transistoren sættes til 40 gange. Dioden over relæet skal forhindre er der opstår en induktiv spænding fra relæspolen, som kan ødelægge transistoren. II RR1 = II RRRRRRæ = 89,3mmmm = 2,23mmmm HH FFFF 40 RR1 = VV AAAAAAAAAAAAAA VV BBBB II RR1 = 5VV 0,7VV 2,23mmmm = 1926 oohmm Figur 6. Relæmodulet der anvendes Der vælges en 2,2 kω til R1. I praksis er der valgt en simplere løsning, hvor der er valgt et kinamodul (Arnoldsen, 2017c) som det viste her til højre i figur 6. Hvis opstillingen skal laves på print skal man tage højde for banetykkelser og afstande mellem banerne i den del af kredsløbet der skal håndtere de 230V. 8

10 Betjening af uret Der er to ting man skal kunne betjene på uret. Man skal kunne tænde og slukke for TV-udgangen og man skal kunne justere timer og minutter i uret, så tiden passer. Tænd og sluk af uret kunne vælges som en vippeomskifter, så stillingen indikerer om der er tændt eller slukket. Disse kontakter er produktionsmæssigt dyrere, så derfor vælges i stedet en simpel trykknap som er tændt når man trykker på den. Programmet sørger så for at tolke den funktion de enkelte trykknapper skal have. Til indstillingen af uret vælges en anden trykknap til at angive om der skal justeres og om det er timer eller minutter der skal justeres. For at gøre det brugervenligt skal brugeren justere både op og ned på det man justerer. Det kunne gøres med en Rotary Encoder (Arnoldsen, 2013c), hvor man kan registrere hvilken retning man drejer i, som så kunne skrue op og ned for tallet. I stedet vælges to simple knapper til op og ned. Tilslutning af betjening Overvejelserne omkring betjeningen af uret fører til deldiagrammet i figur 7. Figur 7. Betjeningsknapper tilsluttet Arduinoen Alle knapper er tilsluttet +5V, så de giver et højt signal når der trykkes på dem. Når der ikke er trykket på knapperne vil indgangene på Arduinoen bare svæve, så der sættes en modstand på hver kontakt der kan trække signalet til stel. Størrelsen af denne modstand er svær at beregne, men en erfaringsværdi på kω kan anvendes, her er valgt 10 kω. Totaldiagram Et samlet diagram over hele opstillingen kan ses i Bilag 2. 9

11 Strømforsyning til opstillingen I hele testfasen er Arduinoen tilsluttet en PC, så den får 5V fra USB-porten, hvilket er i stand til at forsyne hele opstillingen. I en driftsfase vil det naturligvis ikke være smart at skulle have en PC stående sammen med produktet, så her vil man kunne anvende en 9V adapter (Arnoldsen, 2013a) til at forsyne Arduinoen med som vist i figur 8. Figur 8. Eksempel på adapter der kan forsyne en Arduino Grænsefladespecifikation Den grænseflade der dokumenteres her er mellem den omliggende elektronik og Arduinoen, så softwaren ved hvilke ben der anvendes til hvad. Ben Funktion Retning Kommentar D0 Rx Input Anvendes til kommunikation med PC en D1 Tx Output Anvendes til kommunikation med PC en D2 DB7 Output Databen til Displayet D3 DB6 Output Databen til Displayet D4 DB5 Output Databen til Displayet D5 DB4 Output Databen til Displayet D6 TV_OUT Output Styreben til relæet TV D7 Select Juster Input Vælger justerings-mode: Vis Ur / Juster Timer / Juster Minutter D8 Juster Minus Input Justering af Timer/Minutter nedad D9 Juster Plus Input Justering af Timer/Minutter opad D10 Tænd/Sluk TV Input Tænder og slukker for TV-udgangen (hvis der er tid tilbage) D11 En Output Enable styresignal til displayet D12 RS Output Register Select - styresignal til displayet D13 Disponibel / LED på Arduino-boardet +5V Forsyning Power Forsyning til Display, relæ og kontakter GND Stel Power Referencepunkt for signaler og forsyning A0-5 Analog In Disponible ben kan også anvendes til digital I/O Tabel 1. Ben-definitioner på Arduinoen Denne grænsefladespecifikation der vises i tabel 1 er den beskrivelse der skal bruges til softwaren. 10

12 Test En test kan afgøre flere forskellige ting, og det er vigtigt at reflektere over hvad det egentlig er man tester. I denne dokumentation er der fokuseret på at teste softwaren, men dette vil selvfølgelig også indbefatte at man tester via hardwaren, så den bliver faktisk også testet Hardwaren vil også have indflydelse på testen. Når man lige har programmeret en ny funktion/del ind i koden, så er det en god ide at teste om det man har lavet opfører sig som forventet. Dette er den helt basale form for test. Den næste form for test er at man prøver at udsætte produktet for forskellige fejlbetjeninger/underlige situationer. Det kan virke lidt underligt, men det er med til at teste om produktet fungerer robust, og ikke laver uventede ting. Det kan være svært at forestille sig hvilke fejlbetjeninger et produkt udsættes for, men det er ikke desto mindre vigtigt at teste det, for at kunne lave et ordenligt produkt. For at kunne dokumentere denne form for test, så er man nødt til at beskrive hvordan man tester de enkelte fejlsituationer, og hvilket resultat testen giver, samt om det er acceptabelt i forhold til kravspecifikationen. Den sidste form for test man skal udføre er en bruger-test, hvor man tager en vilkårlig bruger fra den tiltænkte målgruppe for produktet, og hvis testen skal give mening, så må brugeren ikke kende produktet på forhånd. Denne test er virkelig vigtig på et færdigudviklet produkt, men det er ikke en god ide at vente med denne test til produktet er lige før det går i produktion, da det på dette tidspunkt kan være meget dyrt at lave rettelser på produktet. Det er heller ikke altid lige let at lave bruger-test på en prototype, da der tit mangler navne på knapper og produktet ikke ser ud som man forventer at et produkt skal se ud. Dette skal man forsøge at kompensere for i testen her skal man dog passe på at man ikke kompenserer for meget, da det vil gøre at man måske hjælper brugeren uden om nogen faldgruber i produktet, som ellers kunne være fejl man skulle have rettet. Det gode ved en bruger-test er at man kommer ud i situationer som man ikke lige havde tænkt over, samt at man får fokus på brugerens behov. Denne måde at anvende test på er det der har ført til agile (Wikipedia, 2018a) udviklingsprincipper. Det der er rigtigt vigtigt ved en brugertest er at man forholder sig til hvad brugeren siger. Det kan tit være en god ide at optage testen, så man kan se hvad det er der sker, høre hvad brugeren tænker og evt. kan genskabe fejlsituationer. Den største fejl man normalt begår ved bruger-testen er at man afskriver fejlsituationer ved at tænke at så dumme kan brugere ikke være man skal tage det alvorligt, hvis en bruger ønsker en anderledes betjening, så skal man prøve at lave det, så længe det ikke går ud over andre krav til produktet, selvom det også kan virke besværligt. Man skal også notere hvad brugeren finder smart og godt det er vigtigt at disse funktioner bliver bevaret, når man går i gang med at rette andre fejl/uhensigtsmæssigheder. Software opbygning Softwaren er opbygget og testet hen ad vejen som et udviklingsprojekt ved hjælp af Stepwise Improvement, altså ud fra princippet at man starter helt fra bunden og så kobler flere og flere funktioner på programmet. 11

13 Der er både fordele og ulemper ved denne metode. Fordelen er klart at man kan overskue hvad man laver, og når man ikke har så meget programmeringserfaring, også skal lære teknikkerne undervejs. Det letter også fejlfindingen at man ved hvilken del man har rettet i, og dermed hvor man skal begynde med at lede efter fejl. Selvom det var dette princip, så startede udviklingen med at sætte et overblik over hvad det færdige projekt skulle ende med at kunne. Dette låner principper fra vandfalds-modellen (Wikipedia, 2018b), at man opstiller alle krav fra starten, gennemfører kodningen og foretager en sluttest af produktet. Hoved-loopet I hovedloopet er det fokus på at holde fast i et overblik over koden, så her er koden begrænset til at kalde forskellige funktioner der så løser de enkelte ting. Dette kan udtrykkes i det flowchart der er i figur 9. Det fører til en kode i loop() der ser ud som følger: // Hovedloopet der gennemløbes igen og igen void loop() { taeltid(); udskrivserial(); justertid(); taendsluk(); visdisplay(); Denne kode afspejler flowchartet på nær en enkelt ting, nemlig ventetiden på 1 sekund. Dette er nærmere gennemgået i afsnittet Håndtering af tid. I starten laves der bare 5 tomme funktioner der bare skal gøre at koden kan oversættes. Sådan en tom funktion kan se ud som følger: void taeltid(){ ; Start-koden setup() Ud fra grænsefladespecifikationen er der defineret en række bennumre, som blot angiver hvilket bennummer der er knyttet til en bestemt funktion. Dette er defineret som følger: Figur 9. Flowchart over hovedloopet // Konstanter der definerer input og output ben const byte TV_OUT = 6; const byte select = 7; const byte justerminus = 8; const byte justerplus = 9; const byte skifttv = 10; 12

14 Disse definitioner er lavet inden setup() der skal sætte alle dele op til at fungere inden loop() begyndes at blive kaldt. Definitionerne er lavet for at input og output kan sættes op med pinmode(navn, mode). I sin endelige version indeholder setup() forskellige ting, der skal startes inden hoved-loopet kan fungere. Disse ting er den serielle port, så vi kan skrive til PC en hvad der foregår i programmet og der er displayet som skal startes, og der skrives en velkomstbesked i displayet, for at identificere programmet. Dette er vist i følgende kode: void setup() { // Seriel port til visningen i starten og til test senere Serial.begin(9600); // Start displayet - antal karaterer og linjer lcd.begin(16, 2); // Velkomst-besked. lcd.print("tv Timer UR"); lcd.setcursor(0,1); lcd.print("version 1.0"); delay(2000); lcd.clear(); // Sæt ind og udgange op til kontakter og relæet til TV'et pinmode(select, INPUT); pinmode(justerminus, INPUT); pinmode(justerplus, INPUT); pinmode(skifttv, INPUT); pinmode(tv_out, OUTPUT); Ud over selve setup() sker der også en del definitioner af variabler og kontakten til display-koden, dette bliver dokumenteret sammen med beskrivelsen af de forskellige dele af koden. Optælling af uret i sekunder, minutter og timer I starten af udviklingen arbejdedes med selve det at få tiden til at tælle fornuftigt, så der var tidsregistreringen baseret på at lave en delay(1000) der blot venter et sekund, så loop() blev gennemført ca. en gang i sekundet 13

15 Til at huske tiden, så er der lavet 3 variabler sekunder, minutter og timer, der skal kunne indeholde tal fra 0 til 59 eller fra 0 til 23, derfor er typen valgt til en byte der kan indeholde 0 til 255. Variablerne sættes til et tidspunkt der er valgt tilfældigt Arduinoen har ikke indbygget en mulighed for at lade tiden fortsætte når den er slukket. Skulle man have lavet den funktion ville det kræve en Real Time Clock (Arnoldsen, 2018a), der er et separat modul med batteribackup, som sikrer at tiden tælles videre med Arduinoen er slukket. // Variabler indeholdende tiden byte sekunder = 55; byte minutter = 59; byte timer = 14; unsigned long tidsregistrering = 0; boolean taelsekund = false; Håndteringen af tiden kan illustreres i flowchartet i figur 10, der er implementeret i koden som vises herunder. En del af funktionen håndterer større præcision i tidsmålingen, men er udeladt her af hensyn til overskueligheden. Dette dokumenteres i næste afsnit. Figur 10. Flowchart over optælling af tid void taeltid() { // Funktion der håndterer tiden //.... Her er udeladt kode der forklares i næste afsnit // Håndter tællingen af tid sekunder = sekunder + 1; if (sekunder == 60) { sekunder = 0; minutter = minutter + 1; if (minutter == 60) { minutter = 0; timer = timer + 1; if (timer == 24) { timer = 0; resttid = doegntid; //.... Her er udeladt kode der forklares i næste afsnit Præcis håndtering af tiden Som nævnt håndteredes tiden i starten af udviklingen ved blot at lave en delay(1000) i hvert gennemløb af koden. Problemet med denne metode er at afviklingen af den anden kode i loopet også tager tid. Det kunne man kompensere ved at man tilpasser delay indtil tiden går rigtigt. Det vil kræve meget tilpasning og lang tids test indtil man finder den rette tid, og hvis man så retter noget i koden, så skal man processen igennem igen. 14

16 Den teknik der anvendes nu i den ovenstående kode er at anvende en indbygget funktion millis() (Arduino, 2017) til at registrere hvor lang tid der er gået. millis() returnerer det antal millisekunder der er gået efter reset. For udnytte den anden kode der er skrevet så registreres der hvornår vi sidst har talt et sekund op i variablen tidsregistrering, der er af samme type som millis() returnerer en unsigned long, der kan indeholde positive tal op til ca Når koden tæller et sekund frem, så lægges der 1000 til tidsregistrering, så den ved hvornår der skal tælles frem næste gang, ellers returnerer koden bare, så der ikke sker andet. Dette sikrer at hvis ellers koden kan nå at kalde taeltid(), så bliver der talt et sekund frem hvert sekund, også selvom det rammer lidt skævt. // Indiker at der ikke er gået et sekund taelsekund = false; // Fortsæt kun, hvis der er gået et sekund. if (millis() < tidsregistrering) { return; // Stop tidstælling, hvis der justeres på tiden. if (selectmode > 0) { tidsregistrering = millis(); return; tidsregistrering += 1000; // sæt tidsregistreringen et sekund frem //.... Her står koden med håndtering af tiden, der tæller sekunder osv. // Signal til de andre rutiner om at der er gået et sekund taelsekund = true; For at sikre at tiden ikke opfører sig underligt mens man indstiller uret, så afbrydes tidstællingen men der justeres på uret. Det gøres ved at se om selectmode angiver at indstillingen er i gang. Den sidste ting der sket i taeltid() er at hver gang der er talt et sekund frem, så er taelsekund sand, ellers er den falsk. Det gør at andre rutiner der også skal gøre noget hvert sekund også kan se at der er gået et sekund. Kommentarer til overløb af millis() Som det er dokumenteret på så er der et problem med den måde tidsmålingen bliver lavet på her (Arduino, 2018b). Problemet er at variablen tidsregistrering vil løbe over før millis() gør det, og indtil millis() løber over, så vil den være størst, og den vil så tælle et sekund frem hver gang funktionen kaldes, hvilket vil gøre at tiden springer et stykke frem, indtil millis() løber over inden for et sekund. Variablen tidsregistrering vil så være talt et pænt stykke frem, hvilket vil gøre at uret står stille indtil millis()er kommet frem til det rigtige tidspunkt. Tiden vil rette sig selv, men opførslen er forkert. Måden det skal håndteres på er at registrere hvornår et sekund er startet, og så se om millis() er kommet et sekund længere. Det gør at overflowet bliver håndteret i denne beregning, og hele tiden giver det rigtige resultat. Variablerne bør navngives lidt anderledes fx som følger: unsigned long startsekund = 0; unsigned long sekundinterval = 1000; 15

17 Med disse variabler vil koden kunne laves som følger: // Indiker at der ikke er gået et sekund taelsekund = false; // Fortsæt kun, hvis der er gået et sekund. if ((millis() startsekund) < sekundinterval) { return; // Stop tidstælling, hvis der justeres på tiden. if (selectmode > 0) { tidsregistrering = millis(); return; startsekund += sekundinterval; // sæt tidsregistreringen et sekund frem //.... Her står koden med håndtering af tiden, der tæller sekunder osv. // Signal til de andre rutiner om at der er gået et sekund taelsekund = true; Det vil ikke være let at teste denne del af koden, da det først sker efter ca. 49 dage og 17 timer, så med mindre man vil til at manipulere systemvariablerne, så er det ret besværligt at teste denne problematik. Udskrift af tiden i Serial Monitor I starten af udviklingen er det let at få noget ud i Serial Monitor (Arduino, 2018a), så der udskives tiden ved hjælp af udskrivserial() funktionen. Koden i funktionen ser ud som følger: void udskrivserial() { // Funktion der udskriver tiden if (! taelsekund) { return; // Udskriv tiden til Seriel-porten i formatet hh:mm:ss - minutter og sekunder anvender foranstillede 0'er Serial.print(timer); Serial.print(":"); if (minutter < 10) { Serial.print(0); Serial.print(minutter); Serial.print(":"); if (sekunder < 10) { Serial.print(0); Serial.println(sekunder); Funktionen udskrivserial() anvender ikke egne variable, men bruger blot de variable som taeltid() har defineret. Der fortsættes kun i funktionen hvis der er talt et sekund op, ellers ville der komme voldsomt meget i den serielle monitor. Der udskrives i formatet hh:mm:ss, hvor der indsættes 0 foran minutter og sekunder, hvis de er under 10, så tiden har et fast format. 16

18 Den serielle monitor viser tiden som vist i figur 11: Figur 11. Visning af tiden i seriel monitor. Test af tiden i uret Her testes hvordan tiden forløbet i uret, og det svarer til den forventede opførsel. Testen er i første omgang udført på den serielle monitor, og senere på displayet som det er illustreret på figur 12. De test der er udført er beskrevet i tabel 2. Figur 12. Visning af tiden i displayet. 17

19 Testbeskrivelse Forventet resultat Res. midlertidig test Resultat Sluttest Sekunder tæller op At de gør Det gør de Det gør de Sekundskifte fra 59 til 00 skal tælle At det sker Det sker Det sker minutter op Minutskifte fra 59 til 00 skal tælle At det sker Det sker Det sker timer en op Timeskifte fra 23 til 00 skal ske, og TVtiden skal stilles til 2 timer for næste døgn. At det sker Det sker med test-tid 1 minut og 40 sekunder Det sker med test-tid 1 minut og 40 sekunder Præcision af uret Tabel 2. Test af tidens forløb i uret At uret ikke afviger mere end et sekund i døgnet Svingende testresultater under udviklingen Ikke testet ordentligt Ikke testet ordentligt, men afviger ikke over 1 sekund pr. time 1 I figur 13 ses en af testene for tiden, der dokumenterer at både sekund og minut skiftene fungerer som de skal. Desuden dokumenteres at justeringen af formatet med foranstillede nuller fungerer. Figur 13. Udskrift på serial monitor, der viser at overløb af sekunder og minutter fungerer korrekt Illustrationen i figur 13 efterviser desuden af den serielle udskift fungerer som ønsket skulle man ønske mere kunne man også have en udskrift af resttiden samt af status på TV et. Justering af tiden I kravspecifikationen er der defineres at der skal kunne vælges at justere minutter og timer for sig, og at der skal kunne justeres både op og ned. Dette er valgt ved at en knap vælger justeringsmode og to knapper justerer hhv. op og ned. Da knapperne skal kunne reagere hurtigt på brugerens tryk registreres forkanten (Arnoldsen, 2018b) at et tryk på knappen skal tælle en fremad, så skal der til de enkelte knapper defineres variabler som kan husk hvilket stadie knappen var i sidst justertid() blev kaldt. Der skal også være en variabel selectmode, der er 0 når uret kører normalt, 1 når der justeres timer og 2 når der justeres minutter. 1 Denne test afhænger af hvor præcist Arduinoens krystal er, så det kan svinge op til +/- 1 %. Ønsker man større præcision kan man anvende en real-time-clock som DS3231 der har en unøjagtighed på 2 ppm. 18

20 // Variabler til justering af tiden og display-visning boolean lastselect = false; byte selectmode = 0; boolean lastplus = false; boolean lastminus = false; Et groft flowchart over funktionen er vist i figur 14. Flowchartet er lavet ud fra at trykket betyder at der er modtaget en forkant på knappen Figur 14. Groft flowchart over justering af tid I visdisplay() håndteres tiden for opdateringen af displayet, og dette spiller sammen med justertid() ved hjælp af de følgende variabler, hvor visjuster angiver om det tal man er ved at justeres skal vises, så det står at blinker. Variablen timeout sørger for at den går ud af justermode, hvis man ikke betjener den 19

21 og justercount holder styr på hvor mange gange der er talt op mens man holder knappen ned, så den kan justere hurtigere efter den har talt 5 langsomt frem. Disse variabler bliver nulstillet i justertid(). boolean visjuster = false; int timeout = 0; int justercount = 0; Det at fange forkanten af knaptrykket er lavet ud fra flowchartet i figur 15. Ideen med kun at reagere på forkanten er at der kun skal reageres en gang på hvert knaptryk. Flowchartet er lavet generelt for et knaptryk, og princippet anvendes på de 3 knapper i justertid(). Figur 15. Generelt flowchart over tryk på en knap Herunder ses koden der vælger hvilket mode man befinder sig i, hvor der anvendes princippet i at finde en forkant på knaptrykket. Ved registreringen af forkanten tælles selectmode en frem og begrænses til 0, 1 eller 2. Variablerne omkring display af justeringen nulstilles når der skiftes mode. Til sidst er der indført et lille delay på 30 ms, dette er et forsøg på at eliminere at der er noget prel (Arnoldsen, 2018c) på trykknapperne. // Vælg om der skal justeres - bestemmes af selectmode if (digitalread(select)) { if (! lastselect) { // Tæl justeringsmodet en frem og begræns til 0, 1 og 2 selectmode++; selectmode %= 3; timeout = 0; justercount = 0; visjuster = false; delay(30); // eleminer prel 20

22 lastselect = true; else { lastselect = false; Når selectmode er på 1 eller 2, så kan uret justeres. Der er to knapper til at justere hhv. positivt og negativt. De to koder minder ret meget om hinanden. Der bruges samme teknik som før, som finder forkanten af et tryk på knappen, og alt efter selectmode justeres så timer eller minutter en op (eller en ned i den negative del af koden). // Håndter positiv justering af uret - afhængig af selectmode if (digitalread(justerplus)) { if (! lastplus) { delay(30); // eleminer prel if (selectmode == 1) { timer = timer + 1; if (timer == 24) { timer = 0; if (selectmode == 2) { minutter = minutter + 1; if (minutter == 60) { minutter = 0; lastplus = true; else { lastplus = false; Test af justeringen af uret Justeringen af tiden er lavet ud fra at man sætter den i justeringsmode, og at man så kan skifte mellem time- og minut-justering. Begge dele kan justeres både op og ned, og hvis man holder knappen inde skal den først tælle langsomt, derefter hurtigt. Endelig skal justerings-mode afsluttes, hvis man efterlader uret inde i justering, da uret er stoppet i dette mode. 21

23 De test der er udført er beskrevet i tabel 3. Testbeskrivelse Forventet resultat Res. midlertidig test Resultat Sluttest Skift mellem visning af uret og Skifter Ur timer Det virker Prel er ikke løst justering af hhv. timer og minutter minutter Ur nogenlunde, men Justering op i timer / minutter Justering ned i timer / minutter At der lægges en til ved hvert tryk At der trækkes en fra ved hvert tryk Langsom justering ved hold Den tæller roligt op / ned Hurtig justering ved hold Efter 5-6 langsomme trin tæller den hurtigt op / ned Exit fra justering ved passivitet At den går tilbage til Ur-visning efter passende tid Tabel 3. Test af justering af uret problemer med prel Det virker nogenlunde, men problemer med prel Det virker nogenlunde, men problemer med prel Det virker Det virker Det virker Prel er ikke løst Prel er ikke løst Det virker Det virker Går ud efter ca. 20 sekunder og viser Ur Problemerne med prel formodes at komme fra at kontakterne sidder løst i fumlebrættet, så det vurderes ikke at det vil være et problem, hvis man laver opstillingen på print. Skulle der stadig være prel-problemer i kontakterne, så kan man forsøge at eliminere det yderligere i softwaren, men erfaringen siger at det normalt er nok med de 30 ms der er indført i softwaren. Visning i Display Selve den elektrisk kommunikation med displayet er ret kompliceret, da alle bytes der skrives til uret bliver delt op i 2 gange 4 bit og sent til displayet ved hjælp af de to ledninger RS og EN. Hele denne kommunikation er håndteret af et bibliotek LiquidCrystal (Arduino, 2018b) der kommer sammen med Arduinoens IDE, og benforbindelserne der er anvendt, er taget fra et af eksemplerne til displayet Hello World (Arduino, 2018a). Det er fra denne kode at der er taget den grundlæggende setup af displayet i følgende kode: // Biblioteket til displayet #include <LiquidCrystal.h> // Displayets objekt lcd - med bendefinitioner const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); Koden henviser til biblioteket med include. Derefter defineres hvilke ben der anvendes til displayet ved at navngive dem som konstanter Til sidst oprettes et objekt ved navn lcd som kan kommunikere med displayet via forskellige metoder. 22

24 Til at håndtere hvor tit der skal skrives til displayet oprettes en variabel der indeholder tidspunktet i millisekund for den næste visning af displayet unsigned long displayvisning = 0; Denne variable anvendes også til timingen af justeringen af uret, når man ønsker justere hurtigt, så er det denne displaytid der tilpasses om justeringen af uret skal gå langsomt frem eller løbe hurtigere. Det er funktionen visdisplay() der skriver i displayet, og som lige forklaret er det variablen displayvisning der bestemmer hvornår displayet skal opdateres. Dette sker i starten af funktionen som vist her: void visdisplay() { // Visning på et display // Opdater displayet efter det valgte interval (efter hvad visningen angiver) if (millis() < displayvisning) { return; Display-visningen er styret af selectmode, der bestemmer om man er i gang med at justere uret. Hvis man ikke er i gang med at justere, så vises tiden og der sættes en opdatering til 250 ms senere det viste sig at den ikke bare skulle opdatere hvert sekund, da det kunne gøre at den ville springe et sekund over en gang imellem. Selve tidsvisningen starter med at rense displayet, og skriver derefter tiden med lcd.print(). // Visningen af tiden og resttid if (selectmode == 0) { // Opdater 4 gange i sekundet - ellers kan displayet springe sekunder over displayvisning += 250; lcd.clear(); // Print visningen af tiden i displayet - visning hh:mm:ss lcd.print("klokken "); if (timer < 10) { lcd.print(" "); lcd.print(timer); lcd.print(":"); if (minutter < 10) { lcd.print("0"); lcd.print(minutter); lcd.print(":"); if (sekunder < 10) { lcd.print("0"); lcd.print(sekunder); 23

25 Resttiden af TV-tid skrives herefter i den næste linje, bestemt af setcursor(0,1). Da resttiden er lagret som antal sekunder tilbage, så konverteres den tid først til timer, minutter og sekunder i lokale variable, inden der skrives ud til displayet på samme måde som urets tid. lcd.setcursor(0,1); lcd.print("resttid "); // Konverter resttiden i antal sekunder til timer minutter og sekunder tilbage byte restsec = resttid % 60; byte restmin = resttid / 60; byte resttim = restmin / 60; restmin = restmin % 60; // Print den resterende tid i displayet - visning hh:mm:ss if (resttim < 10) { lcd.print(" "); lcd.print(resttim); lcd.print(":"); if (restmin < 10) { lcd.print("0"); lcd.print(restmin); lcd.print(":"); if (restsec < 10) { lcd.print("0"); lcd.print(restsec); Hvis man er i gang med at justere uret, så er det valgt at det kun er timer eller minutter der skal vises, og at de vises i den position som de normalt står i, mens der vises hvad man justerer. Den første del er den samme uanset om man justerer timer eller minutter, så der er skrevet sammen til funktionen justeringvalg() som forklares senere, men ellers er det ved timerne følgende kode der giver visningen i displayet, hvor der startes med at slette displayets indhold med lcd.clear(), hvorefter der skrives Timer og så variablen timer, hvorefter der skrives de to : som normalt deler tiden, så man kan se hvad det er man justerer på. // Visning af kun timer hvis der justeres timer if (selectmode == 1) { justeringvalg(); lcd.clear(); lcd.print(" Timer "); if (visjuster) { if (timer < 10) { lcd.print(" "); lcd.print(timer); else { lcd.print(" "); lcd.print(":"); lcd.print(" "); lcd.print(":"); 24

26 Dette giver følgende i figur 16 (taget i en test før der blev tilføjet teksten Timer) Figur 16 Visning af timer under justering af uret Visningen af minutter under justering er lavet ud fra samme principper som det ses her: // Visning af kun minutter hvis der justeres minutter if (selectmode == 2) { justeringvalg(); lcd.clear(); lcd.print(" Min. "); lcd.print(" "); lcd.print(":"); if (visjuster) { if (minutter < 10) { lcd.print("0"); lcd.print(minutter); else { lcd.print(" "); lcd.print(":"); Den fælles rutine justeringvalg() er laves som følger, hvor den udnytter de variabler lastplus og lastminus som husker om der var trykket på en knap i sidste gennemløb, dels til at se om der er trykket på knapperne, og dels ved at sætte dem false, så funktionen justertid() ser det som et nyt tastetryk. Ved hjælp af justercount ses det om der er lavet 5 langsomme tællinger, ellers tælles hurtigere ved at manipulere displayvisning. // Hjælperutine der håndterer tiden i visningen af tiden og som aktiverer tælling, når man holder knapperne nede void justeringvalg() { // Hvis en af knapperne er holdt nede if (lastplus lastminus) { // I starten tælles langsomt op, senere hurtigt if (justercount < 5) { displayvisning += 800; else { displayvisning += 200; justercount++; 25

27 // Signaler det som et nyt tastetryk if (lastplus) { lastplus = false; if (lastminus) { lastminus = false; // Vis tallet og nulstil timeout for justering visjuster = true; timeout = 0; Hvis der ikke er trykket på en af knapperne til justering, så bruges variablen visjuster til at få tallet til at blinke, så der er en indikation af at man er ved at indstille uret. Der håndteres også at der timeoutes, hvis uret står mere end 20 sekunder i juster-modet. else { // Hvis der ikke er nedtrykket en knap, så blinker tallet og der timeoutes visjuster =! visjuster; displayvisning += 400; justercount = 0; timeout++; if (timeout > 50) { selectmode = 0; 26

28 Test af TV-tiden og relæ Hele formålet med konstruktionen er at kunne tænde og slukke for et TV, og kunne begrænse tiden det er tændt i løbet af et døgn. De test der er udført er beskrevet i tabel 4. At TV et ikke kan tændes når resttiden står på 0:00:00 At der tilskrives ny resttid når døgnet skifter til ur-visning 0:00:00 At resttidens timer, minutter og sekunder vises korrekt Test af relæ-funktionen Tabel 4. Test af TV-tiden og relæet At relæet ikke påvirkes, når man forsøger at tænde TV et At der kommer den bestemte resttid At det vises som normal tid LED en tænder og relæet skifter Det blokkerer Det sker med 0:01:40 Kun testet på de sidste 100 sekunder LED en tændes / slukkes korrekt. Man kan høre relæet. Testbeskrivelse Forventet resultat Res. midlertidig test Resultat Sluttest Der kan tændes og slukkes for TV et At relæet kan Det virker Det virker tænde og slukke Tiden tæller ned mens TV et er tændt At det sker Det virker Det virker Tiden tæller ikke ned mens TV et er At rest tiden står Det virker Det virker slukket stille At nedtællingen stopper ved 0:00:00 samt at TV et slukkes At tiden stopper og TV et slukkes Det virker Det virker med 0:01:40 som testtid Det blokkerer fra tiden talt ned fra 0:01:40 Det sker med 0:01:40 Kun testet på de sidste 100 sekunder LED en tændes / slukkes korrekt. Selve kontakten i relæet ikke testet. Hele testen er kun foretaget med en resttid på 100 sekunder (0:01:40), men da de vigtige ting baseres på en int-variabel, så vil det ikke gøre nogen forskel om den initialiseres med 100 eller 7200 (2 timer i sekunder). Det eneste der bør testes nøjere er visningen af resttiden, som dog formodes at blive vist korrekt. Sluttest af prototype Der er i tabellerne for testen under udvikling også noteret resultaterne af den sluttest der er foretaget, hvor hele testen er løbet igennem, for at verificere at udviklingen ikke har ødelagt funktioner der var testet tidligt i forløbet. Som bemærket er der stadig enkelte ting der ikke testet ordenligt igennem, dette bør selvfølgelig afsluttes, men da det er relativt enkle ting der fejler eller ikke er testet til ende, så betragtes dette ikke som en alvorlig mangel ved projektet. Til gengæld burde brugertesten gennemføres, da det kun er udvikleren der har testet. Dette kan give en del ændringsforslag, specielt omkring justeringen af uret, hvis det ikke opfører sig som forventet. 27

29 Konklusion Umiddelbart virker produktet som det er specificeret i kravspecifikationen, men dog kun på prototypeniveau, som kan illustrere de forskellige funktioner der ønskes implementeret i produktet. Der er stadig fejl i betjeningen, men de kan sikkert tilskrives hardwaren, fordi det er en prototype, og der er derfor ikke gjort yderligere for at rette fejlen. Dokumentationen har nået et stort omfang, også fordi den dækker ind over forskellige fag som har hver deres dokumentations-tradition, men også fordi der på relevante steder i dokumentationen er argumenteret for hvorfor dokumentationen er lavet som den er. Dette vil normalt ikke relevant i en dokumentation. Perspektivering Projektet opfylder sit egentlige formål, at vise hvordan man kan dokumentere et projekt, hvor der indgår både hardware og software. Som et egentlig produkt vil det ikke have nogen salgsværdi, da det er for begrænset i sin funktion. Projektet kan dog vise vejen frem mod en funktionalitet der kan indbygges i et TV. Dette ville fordre en del flere funktionaliteter indbygget i produktet som fx Forældre login Administration af flere børns tid Tildeling af individuel tid til de enkelte børn Adgangskontrol for børn (login / iris-scanning) Mulighed for akkumulering af tid over flere døgn Jo mere smarte TV bliver i dag, og har funktionaliteter på nettet kunne dette også være en del af brugerinterfacet (fx som administrationsdelen for forældrene). 28

30 Kildeliste Arduino, Arduino Refernce - millis. [Online] Available at: [Senest hentet eller vist den ]. Arduino, 2018a. Hello World. [Online] Available at: [Senest hentet eller vist den ]. Arduino, 2018b. Liquid Crystal Display. [Online] Available at: [Senest hentet eller vist den ]. Arduino, H., 2018a. HTX Arduino - Serial Monitor. [Online] Available at: [Senest hentet eller vist den ]. Arduino, H., 2018b. Tid og Samtidighed i software - millis(). [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2013a. Adapter - Holstebro HTX Wiki. [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2013b. LED - formodstand. [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2013c. Rotary Encoder - Holstebro HTX Wiki. [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2013d. Stepwise Improvement. [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2017a. Arduino Display - Holstebro HTX Wiki. [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2017b. Arduino TFT Touch display. [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2017c. Relæ Modul. [Online] Available at: [Senest hentet eller vist den ]. 29

31 Arnoldsen, B., 2018a. Real Time Clock. [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2018b. Trykknap, forkant - Holstebro HTX Wiki. [Online] Available at: [Senest hentet eller vist den ]. Arnoldsen, B., 2018c. Trykknap, Prel - Holstebro HTX Wiki. [Online] Available at: [Senest hentet eller vist den ]. Autodesk, Eagle software - Autodesk. [Online] Available at: [Senest hentet eller vist den ]. Relay, S., u.d. PDF med datablad til relæet. [Online] Available at: [Senest hentet eller vist den ]. Source, O., Fritzing - Electronics made Easy. [Online] Available at: [Senest hentet eller vist den ]. Wikipedia, 2018a. Agil Systemudvikling. [Online] Available at: [Senest hentet eller vist den ]. Wikipedia, 2018b. Vandfaldsmodellen. [Online] Available at: [Senest hentet eller vist den ]. 30

32 Bilag 1 Programkoden /* * Program-eksempel til et elektronisk ur * Udviklet i forbindelse med Arduinokursus 2018 * Bent Arnoldsen */ // Variabler indeholdende tiden byte sekunder = 55; byte minutter = 59; byte timer = 14; unsigned long tidsregistrering = 0; boolean taelsekund = false; // Variabler og konstanter der holder styr på tændt-tiden boolean TV_ON = false; const int doegntid = 100; int resttid = doegntid; boolean lastskift = false; // Konstanter der definerer input og output ben const byte TV_OUT = 6; const byte select = 7; const byte justerminus = 8; const byte justerplus = 9; const byte skifttv = 10; // Variabler til justering af tiden og display-visning unsigned long displayvisning = 0; boolean visjuster = false; boolean lastselect = false; byte selectmode = 0; boolean lastplus = false; boolean lastminus = false; int timeout = 0; int justercount = 0; // Biblioteket til displayet #include <LiquidCrystal.h> // Displayets objekt lcd - med bendefinitioner const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { // Seriel port til visningen i starten og til test senere Serial.begin(9600); // Start displayet - antal karaterer og linjer lcd.begin(16, 2); // Velkomst-besked. lcd.print("tv Timer UR"); lcd.setcursor(0,1); lcd.print("version 1.0"); delay(2000); lcd.clear(); // Sæt ind og udgange op til kontakter og relæet til TV'et pinmode(select, INPUT); 31

33 pinmode(justerminus, INPUT); pinmode(justerplus, INPUT); pinmode(skifttv, INPUT); pinmode(tv_out, OUTPUT); // Hovedloopet der gennemløbes igen og igen efter setup() void loop() { // De enkelte servicerutiner ar lavet til at returnere hurtigt, så der ikke er noget der blokerer taeltid(); udskrivserial(); justertid(); taendsluk(); visdisplay(); void taeltid() { // Funktion der håndterer tiden // Indiker at der ikke er gået et sekund taelsekund = false; // Fortsæt kun, hvis der er gået et sekund. if (millis() < tidsregistrering) { return; // Stop tidstælling, hvis der justeres på tiden. if (selectmode > 0) { tidsregistrering = millis(); return; tidsregistrering += 1000; // sæt tidsregistreringen et sekund frem // Håndter tællingen af tid sekunder = sekunder + 1; if (sekunder == 60) { sekunder = 0; minutter = minutter + 1; if (minutter == 60) { minutter = 0; timer = timer + 1; if (timer == 24) { timer = 0; resttid = doegntid; // Signal til de andre rutiner om at der er gået et sekund taelsekund = true; void udskrivserial() { // Funktion der udskriver tiden if (! taelsekund) { return; // Udskriv tiden til Seriel-porten i formatet hh:mm:ss - minutter og sekunder anvender foranstillede 0'er Serial.print(timer); Serial.print(":"); if (minutter < 10) { Serial.print(0); 32

34 Serial.print(minutter); Serial.print(":"); if (sekunder < 10) { Serial.print(0); Serial.println(sekunder); void justertid() { // Funktion der håndterer justering af minutter og timer // Vælg om der skal justeres - bestemmes af selectmode if (digitalread(select)) { if (! lastselect) { // Tæl justeringsmodet en frem og begræns til 0, 1 og 2 selectmode++; selectmode %= 3; timeout = 0; justercount = 0; visjuster = false; delay(30); // eleminer prel lastselect = true; else { lastselect = false; // Håndter positiv justering af uret - afhængig af selectmode if (digitalread(justerplus)) { if (! lastplus) { delay(30); // eleminer prel if (selectmode == 1) { timer = timer + 1; if (timer == 24) { timer = 0; if (selectmode == 2) { minutter = minutter + 1; if (minutter == 60) { minutter = 0; lastplus = true; else { lastplus = false; // Håndter negativ justering af uret - afhængig af selectmode if (digitalread(justerminus)) { if (! lastminus) { delay(30); // eleminer prel if (selectmode == 1) { if (timer > 0) { timer = timer - 1; else { timer = 23; if (selectmode == 2) { 33

Arduino Programmering

Arduino Programmering Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået

Læs mere

TinkerCad - Arduino simulator

TinkerCad - Arduino simulator TinkerCad - Arduino simulator Dokument fra H.C.Ørsted Gymnasiet, delt i HTX-Strømspassergruppen. ( Lidt modificeret / Valle ) På tinkercad.com kan man både arbejde med 3D emner, men også elektroniske kredsløb.

Læs mere

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... 3 Kildekoden... 4 Variabler... 4 Setup... 4 Loop... 4 Indledning

Læs mere

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan

Læs mere

Ved indkøring påtrykkes en kendt amplitude (HUSK 50 ohms afslutning) og displayet aflæses.

Ved indkøring påtrykkes en kendt amplitude (HUSK 50 ohms afslutning) og displayet aflæses. /* Power Meter 2012 /* Rettet den 13.februar 2013 /* Version 1.2 /* Input medie er en AD8307, som forsynes fra Arduino Uno stabiliserede 5 volt. A/D input er på Arduino analog input pin A0 AREF er tilført

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Programmerbar elektronik. uc Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Forstå princippet i programmering af en uc og se mulighederne. Programmeringen

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-2012 IT-vejleder: Karl G. Bjarnason

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Arduinostyret klimaanlæg Afsluttende projekt programmering C Arduinostyret klimaanlæg Afsluttende projekt programmering C Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleverings-dato: 02-03-2012 Afleverings-dato: 11-05-2012 Programmeringvejleder: Karl G. Bjarnason

Læs mere

Projekt Træningsmaskine

Projekt Træningsmaskine Computer- og El-teknik A. Holstebro Tekniske Gymnasium - HTX Projekt Træningsmaskine Afleveret: Fredag d. 10/10-2008. Udarbejdet af: Bent Arnoldsen, Holstebro HTX. Gruppemedlem: Hjalmar Krarup Andersen,

Læs mere

Analoge indgange og A/D konvertering. Analoge udgange

Analoge indgange og A/D konvertering. Analoge udgange Programmering for begyndere Brug af Arduino Programmeringskursus Analoge indgange og A/D konvertering Analoge udgange Knud Krogsgaard Jensen OZ1QK Oversigt Oversigt over i aften: A/D konvertering iterations

Læs mere

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

Arduino kursus lektion 3:

Arduino kursus lektion 3: Arduino kursus lektion 3: I denne lektion skal vi lave få en diode til at fade op og ned! Herefter skal denne diode bruges sammen med en lysføler til at lave en smart lysfølsom diode som selv justere lyset

Læs mere

Brug af digitale ind og udgange

Brug af digitale ind og udgange Programmering for begyndere Brug af Arduino Programmeringskursus Brug af digitale ind og udgange Oversigt over aftenen Digitale ind- og udgange Det er der ikke så meget i: Digitale indgange kan tænde og

Læs mere

Alt elektronik heri er købt via http://dx.com, og arduino udviklingssoftware er hentet fra http://arduino.cc.

Alt elektronik heri er købt via http://dx.com, og arduino udviklingssoftware er hentet fra http://arduino.cc. Få-tiden-til-at-gå-[DIGITAL]-ur =============================== Copyright 2013, Richard Jørgensen. Alle ophavsretlige rettigheder frafaldet 2015. (Kopier og brug som du har lyst.) Forord: ===== Denne vejledning

Læs mere

Lektion 6 / Analog Arduino

Lektion 6 / Analog Arduino 1 Jeremiah Teipen: Electronic Sandwich BSPR11 Lektion 6 / Analog Arduino Mogens Jacobsen / moja@itu.dk Siden sidst 2 Har I fået nogle LEDs til at blinke? Har I brugt kontakter? Hvad har I eksperimenteret

Læs mere

Enes Kücükavci Roskilde Tekniske Gymnasium 20 05 2010 Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C

Enes Kücükavci Roskilde Tekniske Gymnasium 20 05 2010 Mathias Turac Informationsteknolog B Vejleder: Karl Bjranasson Programmering C Indhold Indledning(Enes)... 2 Problemstilling (Enes)... 2 Teori (Enes)... 2 Løsningsforslag (Enes)... 4 RFID relæet (Mathias)... 6 Krav (Enes og Mathias)... 8 Målgruppen (Mathias)... 8 Rekvirent... 8 Implementering(Mathias)...

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Kompendium til Arduino-programmering i Teknologi. Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Vi skal forstå princippet i programmering af en uc og se

Læs mere

Internt interrupt - Arduino

Internt interrupt - Arduino Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt

Læs mere

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Programmering for begyndere Brug af Arduino Programmeringskursus Interrupt - Arduino EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Interrupts Programmeringskursus Genbrug Interrupts Betyder blot at man afbryder

Læs mere

Programmeringskursus Kursusaften 3. Programmering for begyndere Brug af Arduino. Display. Kursusaften 3 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Programmeringskursus Kursusaften 3. Programmering for begyndere Brug af Arduino. Display. Kursusaften 3 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Programmering for begyndere Brug af Arduino Programmeringskursus Display EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Programmering for begyndere Brug af Arduino Programmeringskursus Sidste gang havde vi

Læs mere

Optimering af fraværsregistrering

Optimering af fraværsregistrering Journal Optimering af fraværsregistrering Eksamensprojekt i Programmering C, klasse 3.4, 2011 AFLEVERET 09-05-2014 Indhold Abstract... Fejl! Bogmærke er ikke defineret. Problemformulering... 2 Produktet...

Læs mere

LCD Character display Intro

LCD Character display Intro LCD Character display Intro Der findes flere typer af LCD karakter-displays, fra forskellige firmaer. Her er vist en type, der er blå. Pins: Nummer 1 fra venstre Her er vist en nærmere beskrivelse af de

Læs mere

ARDUINO PROGRAMMERING

ARDUINO PROGRAMMERING ARDUINO PROGRAMMERING Teknologisk Institut Opgaver i programmering af Arduino Indholdsfortegnelse Kapitel 1... 2 Arduino Uno mikrokontroller... 2 Digitalt signal... 3 Analogt signal... 3 Arduino Uno Specifikationer...

Læs mere

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

Mircobit Kursus Lektion 3   (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) Mircobit Kursus Lektion 3 http://microbit.org/ (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) I sidste lektion var der en opgave man selv skulle prøve at løse. Man skulle lave et tabel

Læs mere

Software Dokumentation

Software Dokumentation Software Dokumentation Jan Boddum Larsen Teknologi B og A på HTX Dokumentation af software i Teknologi I samfundet sker der en bevægelse mod mere digitale løsninger i teknologi. Det betyder at software

Læs mere

SPIDER Quick guide. DATO: August 2017 FORHANDLER: WASYS A/S. Langebjergvænget Roskilde

SPIDER Quick guide. DATO: August 2017 FORHANDLER: WASYS A/S. Langebjergvænget Roskilde SPIDER Quick guide DATO: August 2017 FORHANDLER: WASYS A/S Langebjergvænget 18 4000 Roskilde +45 7221 7979 Indhold Om SPIDER... 3 Funktioner ved SPIDER... 3 Spændingsforsyning... 3 Installation og fysiske

Læs mere

LCD intro. LCD Character display-intro. Redigeret 4/6-2019

LCD intro. LCD Character display-intro. Redigeret 4/6-2019 LCD Character display-intro Parallel interface, Forbindelsesdiagram, Ram & Rom-struktur, Biblioteksfunktioner til at styre LCD-skærmen, Lcd.Print vs Lcd.Write, Selvdefinerede karakterer, herunder æ, ø

Læs mere

ELCANIC A/S. ENERGY METER Type ENG110. Version 3.00. Inkl. PC program: ENG110. Version 3.00. Betjeningsvejledning

ELCANIC A/S. ENERGY METER Type ENG110. Version 3.00. Inkl. PC program: ENG110. Version 3.00. Betjeningsvejledning ELCANIC A/S ENERGY METER Type ENG110 Version 3.00 Inkl. PC program: ENG110 Version 3.00 Betjeningsvejledning 1/11 Generelt: ELCANIC A/S ENERGY METER Type ENG110 er et microprocessor styret instrument til

Læs mere

MP3 player med DMX interface.

MP3 player med DMX interface. Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK MP3 player med DMX interface. Funktion: En avanceret Mp3spiller med forskellige styringsmuligheder, velegnet til brug i museer, teatre, udstillinger

Læs mere

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET Mandag den 14 januar 2013 I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET OZ1QK Knud Krogsgaard Jensen 1 ARDUINO I 2 C - BUSSEN ELLER?? Plan for I aften: Jeg siger noget i 10 minutter I fortæller lidt om

Læs mere

Svane Electronic Timer universal med 8 funktioner 1

Svane Electronic Timer universal med 8 funktioner 1 Svane Electronic Timer universal med 8 funktioner 1 Digital timer print modul 12V 2000.2231 Multi funktions timer med 8 funktioner, anvendelig i mange installationer, forsyning 12VDC drift. Printet har

Læs mere

Svendeprøve Projekt Tyveri alarm

Svendeprøve Projekt Tyveri alarm Svendeprøve Projekt Tyveri alarm Påbegyndt.: 8/2-1999 Afleveret.: 4/3-1999 Projektet er lavet af.: Kasper Kirkeby Brian Andersen Thomas Bojer Nielsen Søren Vang Jørgensen Indholds fortegnelse 1. INDLEDNING...3

Læs mere

CANSAT & ARDUINO step by step

CANSAT & ARDUINO step by step CANSAT & ARDUINO step by step Jens Dalsgaard Nielsen SATLAB Aalborg Universitet Danmark jdn@space.aau.dk 1/51 Arduino CANSAT - MÅL At måle ved hjælp af sensor temperatur, tryk, acceleration, CO2, lys,...

Læs mere

Fra programmering til mikroprocessor

Fra programmering til mikroprocessor Programmering for begyndere Brug af Arduino Fra programmering til mikroprocessor EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Programmerings kursus Sidste gang (Introduktion)

Læs mere

MANUAL FANTRONIC 20AMP. TRIAC SLAVEENHED FOR VENTILATION VER:FAN 1.1 SKIOLD GØR EN FORSKEL!

MANUAL FANTRONIC 20AMP. TRIAC SLAVEENHED FOR VENTILATION VER:FAN 1.1 SKIOLD GØR EN FORSKEL! MANUAL SKIOLD GØR EN FORSKEL! FANTRONIC 20AMP. TRIAC SLAVEENHED FOR VENTILATION VER:FAN 1.1 981 002 317 Ver. 01 11-03-2013 Indhold 1. INTRODUKTION... 4 2. BESKRIVELSE FANTRONIC... 5 2.1 SÅDAN FUNGERER

Læs mere

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003 Side 1 af 8 Dato: 14-05-2003 Til Sigurd Som aftalt vil jeg her fremsende vores program til vores 80C535 kit og display. Det gik jo ud på at vi skulle starte med at få den til at intialiserer displayet,

Læs mere

ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning

ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning Generelt: ELCANIC A/S COUNTER Type CNT150 er en microprocessor baseret tæller. Specielt designet

Læs mere

Dobbelt sender detektor med 4 kanals frekvenser. 1. Funktioner. 2. Produkt gennemgang

Dobbelt sender detektor med 4 kanals frekvenser. 1. Funktioner. 2. Produkt gennemgang Dobbelt sender detektor med 4 kanals frekvenser Tak, fordi du har købt denne stråle detektor, læs venligst denne brugsanvisning omhyggeligt før installation. Forsøg aldrig at adskille eller reparere produktet.

Læs mere

const int disponibel_10= 10; const int disponibel_11= 11; const int disponibel_12= 12; const int blinkled = 13; // pin 13 er LED på NANO

const int disponibel_10= 10; const int disponibel_11= 11; const int disponibel_12= 12; const int blinkled = 13; // pin 13 er LED på NANO Styring_af_analog_repeater_OZ1LN_07-04-2018_v_1_07 device Arduino NANO fra v 1.06_j kræves Starttid bærebølge for valid pilottone ved start fra v 1.06_j kræves ResetTid uden bærebølge ved genstart efter

Læs mere

Projekt - RoboNet Del Journal.

Projekt - RoboNet Del Journal. Projekt - RoboNet Del Journal. Udarbejdet af: Klaus Jørgensen. Gruppe: Jacob Clausen, Klaus Jørgensen og Ole Rud It og Elektronikteknolog, 2a Erhvervsakademiet Fyn Udarbejdet i perioden: 20/01-03 03/02-03

Læs mere

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato: Side 1 af 13 Dato: 03-06-03 Til Sigurd Som aftalt får du nu tilbygningen til 80C535 kittet, keyboard og programmet med programopdatering. Den sidste opgave her, gik så ud på at tilslutte et tastatur, og

Læs mere

FSystem beskrivelse PAR 200 CLOCK

FSystem beskrivelse PAR 200 CLOCK FSystem beskrivelse PAR 200 CLOCK Driftvejledningsnr: PAR-200-SYS-DK-041223 Beskrivelse Billede PAR-200-SYS er den overordnede og komplette beskrivelse af Ølands nye tidsstyring inden for analoge regulatorer.

Læs mere

Teknisk manual for TIMETÆLLER/AFLADE MONITOR ISTR-P Spændingsområde fra 24V til 80V

Teknisk manual for TIMETÆLLER/AFLADE MONITOR ISTR-P Spændingsområde fra 24V til 80V Teknisk manual for TIMETÆLLER/AFLADE MONITOR ISTR-P Spændingsområde fra 24V til 80V VIGTIGSTE KENDETEGN: Nominel spænding fra 24V til 80V Automatisk indikation af batterispænding: 24V, 36V, 48V eller 72V.

Læs mere

MONTERINGSVEJLEDNING P-WATCH FS03

MONTERINGSVEJLEDNING P-WATCH FS03 MONTERINGSVEJLEDNING P-WATCH FS03 P-WATCH FS03 Bør kun monteres af et autoriseret værksted. Vær opmærksom på at garantien på din bil kan bortfalde såfremt udstyr monteres på din bil af andre end de af

Læs mere

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /* OZ1HJR Program til styring af Mercury Motor SM-42BYG011-25 (ROB-09238) med EasyDriver V4.4 (ROB-10267). Når MS1 og MS2 begge er High, er et step (1.8 grader) opløst i 8 mikrostep. Et mikrostep svarer

Læs mere

Montørvejledning for DTC2100 Temperaturtyring - Version 1. Generel beskrivelse

Montørvejledning for DTC2100 Temperaturtyring - Version 1. Generel beskrivelse 1 2 3 R DTC2100 Danotek Generel beskrivelse DTC2100 er udviklet til væskebaseret solfangersystemer, men kan også benyttes til anden temperatur styring med op til tre temperatur målinger og en relæudgang.

Læs mere

Michael Jokil 11-05-2012

Michael Jokil 11-05-2012 HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...

Læs mere

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor. Simple kontakter Accelorometer Example sensors Lysfølsomme modstande RFID reader & tags Temperaturfølsomme modstande Flex Sensor Ultralyds afstandsmåler Piezo Pressure/vibration Piezo Sound/buzzer Peltier

Læs mere

GSM SMS Modem MODEL: SA RTU-1 V1.01

GSM SMS Modem MODEL: SA RTU-1 V1.01 GSM SMS Modem MODEL: SA RTU1 V1.01 Brugervejledning Indgange: Der er fire indgange på modulet. De kan programmeres som normale indgange. De kan programmeres som tæller. Udgange: Der er en udgang på modulet

Læs mere

PHP kode til hjemmeside menu.

PHP kode til hjemmeside menu. PHP kode til hjemmeside menu. Home Hovedmenu 1 Hovedmenu 2 Hovedmenu 3 Hovedmenu 4 Undermenu 1 Breadcrumb Her vises indholdet af den valgte side Undermenu 2 Undermenu 3 Undermenu 4 Evt. en mulighed for

Læs mere

Genius laderegulator Monterings og brugervejledning

Genius laderegulator Monterings og brugervejledning Genius laderegulator Monterings og brugervejledning Laderegulatorens opbygning Genius er en avanceret laderegulator for solceller/solpaneler der kontroller, overvåger og styrer indladning og afladning

Læs mere

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system SSI-9001 IP65 GSM fjern kontrol og alarm system Installations vejledning SSIHuset v/svane Electronic ApS Vejledning Kontakt Tænd/sluk 1 - Strømforsyning: Forbundet til egen 12V / 1.5A strømforsyning (*)

Læs mere

Instruktion. MINIGAM+ On/off og analog styring IN217DKA

Instruktion. MINIGAM+ On/off og analog styring IN217DKA Instruktion MINIGAM+ On/off og analog styring IN217DKA 1. Beskrivelse af kort Advarsel! Flere dele på printkortet er forsynet med 115/230VAC. Afbryd altid strømmen før der arbejdes på aktuatoren. 2. For

Læs mere

Fable Kom godt i gang

Fable Kom godt i gang Fable Kom godt i gang Opdateret: 26-03-2018 Indholdsfortegnelse 1. Først skal du installere programmet på din computer 3 2. Når programmet er installeret er du klar til at pakke robotten ud 4 3. Nu er

Læs mere

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn. Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen Elektronikteknologafdelingen på Erhvervsakademi Fyn. Journal JTAG Xilinx XC9536 29-9-3 Generel beskrivelse af JTAG: JTAG:

Læs mere

Kom godt i gang med Fable-robotten

Kom godt i gang med Fable-robotten Kom godt i gang med Fable-robotten 1. Først skal du installere programmet på din computer. Gå ind på shaperobotics.com og under support vælger du download: Her vælger du, under PC App om du kører Windows

Læs mere

danske karakterer på Lcd

danske karakterer på Lcd Arduino og LCD ( 16/3-13 ) Når Arduinoen kobles til et LCD-display, kan man ikke umiddelbart skrive de danske karakterer æ, ø og å. Bag hver karakterplads i LCD-en er der en 8-bit RAM. Hvis der skrives

Læs mere

DiSEqC-Positioner. Best. nr. HN4892 (Brugsanvisnings nr. 361)

DiSEqC-Positioner. Best. nr. HN4892 (Brugsanvisnings nr. 361) DiSEqC-Positioner Best. nr. HN4892 (Brugsanvisnings nr. 361) DiSEqC 1.0/1.2 Positioner DiSEqC-omformer, som gør at man kan styre en parabolmotor 36-Volts type med alle digital modtagere som har standard

Læs mere

Sådan forbindes Arduinoen via et fumlebræt til ATTiny45 chippen.

Sådan forbindes Arduinoen via et fumlebræt til ATTiny45 chippen. Arduino software: https://www.arduino.cc/en/main/software Klaus modeltog, det levende hus: http://www.moppe.dk/levhusel.html TV simulation: http://www.herberts-n-projekt.de/basteleien-1/belebtes-haus/

Læs mere

//--------------------------------- Definition af porte og funktioner -------------------------

//--------------------------------- Definition af porte og funktioner ------------------------- Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4

Læs mere

Kravspecifikation For. Gruppen

Kravspecifikation For. Gruppen Kravspecifikation For Gruppen Indholdsfortegnelse 1. INDLEDNING...3 1.1 FORMÅL...3 1.2 REFERENCER...3 1.3 LÆSEVEJLEDNING...3 2. GENEREL BESKRIVELSE...4 2.1 SYSTEM BESKRIVELSE...4 2.2 SYSTEMETS FUNKTION...4

Læs mere

X88S. SMS fjernstyring til sommerhuse

X88S. SMS fjernstyring til sommerhuse X88S SMS fjernstyring til sommerhuse X88s er en GSM/SMS baseret fjernstyring med: 6 indgange 8 relæudgange 2 temperaturfølere Billig i drift, intet abonnement. Kan køre på taletidskort. Nem og hurtig montering.

Læs mere

Dansk Mink Papir. Teknisk brugermanual

Dansk Mink Papir. Teknisk brugermanual Dansk Mink Papir Teknisk brugermanual Styring til FIX tørrekasse Beskrivelse Enheden styrer en AC blæser-motor via en relæudgang. Betjening foregår via et tastatur og et display, og brugeren kan vælge

Læs mere

KOMPONENT BESKRIVELSE

KOMPONENT BESKRIVELSE Beskrivelse : S12-20-8A tegningsnummer 630014 Program som styrer 5 individuelle trykforløb på samme tid. Kan køre med intern tryk-reservoir. Kommunikerer med PC-program 714014 Dato Sign. Beskrivelse af

Læs mere

Spil Master Mind. Indledning.

Spil Master Mind. Indledning. side 1 af 16 Indledning. Spillet som denne rapport beskriver, indgår i et større program, der er lavet som projekt i valgfaget programmering C på HTX i perioden 9/11-98 til 12/1-99. Spillet skal give de

Læs mere

Morse med micro:bit. Morse med micro:bit

Morse med micro:bit. Morse med micro:bit Forord Dette dokument indeholder 4 opgaver, som alle går ud på at kode en micro:bit til at udføre en funktion med morsealfabetet. Opgaverne er beregnet til elever i 5-7. klasse. Opgaverne har stigende

Læs mere

INSTALLATIONS GUIDE. Waoo Smart WiFi

INSTALLATIONS GUIDE. Waoo Smart WiFi INSTALLATIONS GUIDE Waoo Smart WiFi PAKKENS INDHOLD Tjek, at det hele er der, før du går i gang med installationen. 2 x trådløse enheder 2 x strømforsyninger 2 x netværkskabler 1 x installationsguide WAOO

Læs mere

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO Model: HN13549 Vejledning Funktioner 1. INFO/MENU 2. ALARM 3. NULSTIL 4. VÆLG 5. MODE 6. SCAN 7. VENSTRE ( ) 8. HØJRE ( ) 9. BÆREGREB 10. DOT-MATRIX

Læs mere

INSTALLATIONS GUIDE. Waoo Smart WiFi FIBERBREDBÅND TV TELEFONI

INSTALLATIONS GUIDE. Waoo Smart WiFi FIBERBREDBÅND TV TELEFONI INSTALLATIONS GUIDE Waoo Smart WiFi FIBERBREDBÅND TV TELEFONI PAKKENS INDHOLD Tjek, at det hele er der, før du går i gang med installationen. 2 x trådløse enheder 2 x strømforsyninger 2 x netværkskabler

Læs mere

BRUGERVEJLEDNING TÆND-SLUK ENHED

BRUGERVEJLEDNING TÆND-SLUK ENHED BRUGERVEJLEDNING TÆND-SLUK ENHED Side 1 til tænd-sluk enheden Introduktion Med tænd-sluk enheden fra LOCKON kan du styre strømmen i din bolig. Du kender princippet fra de traditionelle tænd-sluk ure, der

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

Klasse 1.4 Michael Jokil 03-05-2010 HTX I ROSKILDE Afsluttende opgave Kommunikation og IT Klasse 1.4 Michael Jokil 03-05-2010 Indholdsfortegnelse Indledning... 3 Formål... 3 Planlægning... 4 Kommunikationsplan... 4 Kanylemodellen... 4 Teknisk

Læs mere

Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011

Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011 Spil Rapport Spil lavet i GameMaker Kevin, Mads og Thor 03-02-2011 Indholdsfortegnelse Indledning... 2 HCI... 2 Planlægning / Elementær systemudvikling... 2 Kravspecifikationer... 4 Spil beskrivelse...

Læs mere

Svane Electronic Timer universal med 8 funktioner 1

Svane Electronic Timer universal med 8 funktioner 1 Svane Electronic Timer universal med 8 funktioner 1 Digital timer print modul 12V 2000.2231 Multi funktions timer med 8 funktioner, anvendelig i mange installationer, forsyning 12VDC drift. Printet har

Læs mere

USB Alarm Fag : El-teknik A Navn : Bent Arnoldsen Skole : Holstebro Tekniske Gymnasium Periode : Uge 43 til 48 2005 Aflevering : 29.

USB Alarm Fag : El-teknik A Navn : Bent Arnoldsen Skole : Holstebro Tekniske Gymnasium Periode : Uge 43 til 48 2005 Aflevering : 29. USB Alarm Fag : El-teknik A Navn : Bent Arnoldsen Skole : Holstebro Tekniske Gymnasium Periode : Uge 43 til 48 2005 Aflevering : 29. november 2005 Holstebro HTX USB Alarm Side 2 af 26 Indholdsfortegnelse:

Læs mere

Manual IHC Kompatibelt SMS modem. Generel info:... 2 Controllere:... 2 Manualen... 2 Komandoer syntax... 2 Lysdioder... 2 Tilslutning:...

Manual IHC Kompatibelt SMS modem. Generel info:... 2 Controllere:... 2 Manualen... 2 Komandoer syntax... 2 Lysdioder... 2 Tilslutning:... Manual IHC Kompatibelt SMS modem. Modemmet er kompatibelt med LK IHC visual2 controllere. IHC er registreret varemærke hos LK, Schneider Electric. Generel info:... 2 Controllere:... 2 Manualen... 2 Komandoer

Læs mere

Montørvejledning for DTC2102 Temperaturtyring - Version 1. Generel beskrivelse

Montørvejledning for DTC2102 Temperaturtyring - Version 1. Generel beskrivelse 1 2 3 R E DTC2102 Danotek Generel beskrivelse DTC2102 er udviklet til væskebaseret solfangersystemer, men kan også benyttes til anden temperatur styring med op til tre temperatur målinger og to relæudgange.

Læs mere

Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9

Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9 PLC - analogteknik INDHOLDSFORTEGNELSE Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9 2-20 Rekv. 0 Prod. 20-11-2005-21:51 Ordre 000 EFU OPGAVER -

Læs mere

Brugervejledning. ComX brugervejledning version 4.1

Brugervejledning. ComX brugervejledning version 4.1 Brugervejledning ComX brugervejledning version 4.1 1 INDHOLD PAKKENS INDHOLD Pakkens indhold side 2 Fjernbetjening side 2 Tilslutning af Settop-boksen side 3 Introduktion til Bredbånds-TV side 4 Tilslutning

Læs mere

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO Model: HN13549 Vejledning Funktioner 1. INFO/MENU 2. ALARM 3. NULSTIL 4. VÆLG 5. MODE 6. SCAN 7. VENSTRE ( ) 8. HØJRE ( ) 9. BÆREGREB 10. DOT-MATRIX

Læs mere

Kom godt i gang med Mini Bots fra

Kom godt i gang med Mini Bots fra Kom godt i gang med Mini Bots fra Indholdsfortegnelse Generel Information... 3 Elektricitet... 3 Robotter, kunstige mennesker?...3 Forklaring af komponenter... 4 Robot-byggesættet inderholder følgende:...4

Læs mere

WEA-Base Brugervejledning til vejetransmitter

WEA-Base Brugervejledning til vejetransmitter WEA-Base Brugervejledning til vejetransmitter Version 3.4 WEA-Base Brugervejledning til vejetransmitter WEA-Base Brugervejledning til vejetransmitter Version 3.4 Indholdsfortegnelse 1. Tekniske data...

Læs mere

Hos Podconsultsbutik kan du finde vandpumpen i 3 udgaver, hvilket har betydning for hvordan du samler og forbinder pumpen til din Micro:bit.

Hos Podconsultsbutik kan du finde vandpumpen i 3 udgaver, hvilket har betydning for hvordan du samler og forbinder pumpen til din Micro:bit. Leg med vandpumper Hos Podconsultsbutik kan du finde vandpumpen i 3 udgaver, hvilket har betydning for hvordan du samler og forbinder pumpen til din Micro:bit. For nemheds skyld vil vi i denne guide kalde

Læs mere

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER

INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER INSTALLATIONSMANUAL TIL GARAGEPORT ÅBNER INSTALLATIONS MANUALEN SKAL GENNEMLÆSES OMHYGGELIG FØR IBRUGTAGNING ADVARSEL FOR SIKKER INSTALLATION Inden installation af automatikken skal balance fjederen på

Læs mere

Teknisk information. ( Hvad skal der bruges? ) Porten som Puls : Evt. Solid-Stat relæ Omron (G3R-OA202SZN) Evt. Solid-Stat relæ Omron (G3R-OA202SZN)

Teknisk information. ( Hvad skal der bruges? ) Porten som Puls : Evt. Solid-Stat relæ Omron (G3R-OA202SZN) Evt. Solid-Stat relæ Omron (G3R-OA202SZN) Teknisk information ( Hvad skal der bruges? ) Porten som Input : Kontaktsæt på relæ ( Til forbindelse mellem klemme 45 & port ) Porten som Output : Evt. Solid-Stat relæ Omron (G3R-OA202SZN) ( Til forbindelse

Læs mere

GSM / SMS port kontrol enhed

GSM / SMS port kontrol enhed 26.1.2011 GSM / SMS port kontrol enhed 6 stk. Digitale indgange med egen tekst besked via SMS 4 stk. Udgange med aktivering via SMS besked 4 stk. Administrator telefonnumre der modtager SMS alarm besked

Læs mere

Nedenstående opgaver er lavet til en Allen-Bradley PLC, men uden videre tilpasses andre PLC typer.

Nedenstående opgaver er lavet til en Allen-Bradley PLC, men uden videre tilpasses andre PLC typer. PLC, analogteknik Øvelse 1 Nedenstående opgaver er lavet til en Allen-Bradley PLC, men uden videre tilpasses andre PLC typer. Timer 1.1 "TON" Timer on delay: I skal konstruerer en styring, hvor en lampe

Læs mere

Arduino Programmering

Arduino Programmering Microcontroller-programmering med Arduino I teknologi skal vi lære at lave programmer til en microcontroller for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal

Læs mere

GSM port styring 400 brugere

GSM port styring 400 brugere 1 GSM port styring 400 brugere SMS alarm, temperatur og fjernkontrol system 16 brugere til at modtage alarmbeskeder via SMS Software vejledning SSIHuset Svane Electronic ApS Arildsvej 27, Gråmose, DK-7442

Læs mere

MEN-001-B GARAGEPORTÅBNER MONTERINGSVEJLEDNING

MEN-001-B GARAGEPORTÅBNER MONTERINGSVEJLEDNING MEN-001-B GARAGEPORTÅBNER MONTERINGSVEJLEDNING INDHOLDSFORTEGNELSE Sikkerhedsforanstaltninger.....1 Nødvendigt værktøj...1 Montering af garageportåbneren...2-6 Montering af skinnerne..7-8 Stramning af

Læs mere

Oversigts billedet: Statistik siden:

Oversigts billedet: Statistik siden: 1 Tilslutning: Tilslut et nætværks kabel (medfølger ikke) fra serverens ethernet port til din router. Forbind derefter bus kablet til styringen, brun ledning til kl. 29, hvid ledning til kl. 30 Forbind

Læs mere

FireBUS PARKERINGSVENTILATION

FireBUS PARKERINGSVENTILATION FireBUS PARKERINGSVENTILATION QUICK GUIDE Quick guiden beskriver hvordan et mindre anlæg kan installeres og idriftsættes. Alle moduler tildeles en individuel adresse på DIP-switchen i modulet Modulerne

Læs mere

Brugervejledning for centralenheden

Brugervejledning for centralenheden Brugervejledning for centralenheden Præsentation af centralenheden INTRATONE Centralenheden INTRATONE Light giver mulighed for en sikret løsning for at udskifte en mekanisk lås af typen T25. Takket være

Læs mere

Dansk El-montage manual Portautomatik

Dansk El-montage manual Portautomatik Dansk El-montage manual Portautomatik (med fysiske ende stop) Terminaler: Power Portstyring 1 2 Power input 220/230Vac. Kabeldim. 3x1.5 PVIKJ eller lign. 3 4 Advarselslampe. Udgang 230Vac/20W. Signalet

Læs mere

Bruger manual for SW 3.06

Bruger manual for SW 3.06 Ecco 101 VÆGTE & VEJESYSTEMER Power Tare Charge KG Max 200 Kg O T Bruger manual for SW 3.06 Nyskovvej 13 DK-6580 Vamdrup Tlf. +45 76 92 02 00 Fax +45 75 58 06 31 E-mail: scales@farmertronic.com www.farmertronic.com

Læs mere

Undersøgelse teknologi og resurser: Eleverne skal lære om enkel produktudvikling fra ide til implementering.

Undersøgelse teknologi og resurser: Eleverne skal lære om enkel produktudvikling fra ide til implementering. Forløbets titel Design og byg en solcelle racerbil Intro: Solcellelamper findes i mange forskellige versioner til haven. Solcellen omdanner solens energi til elektrisk strøm, så man kan bruge den til fx

Læs mere

GSM / SMS dør/port kontrol enhed

GSM / SMS dør/port kontrol enhed 11-07-2013 GSM / SMS dør/port kontrol enhed 6 stk. Digitale indgange med egen tekst besked via SMS 4 stk. Udgange med aktivering via SMS besked 4 stk. Administrator telefonnumre der modtager SMS alarm

Læs mere

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!) MHz KIT Rev: /- Det er ikke tilladt, at man bare udsender radiobølger på den frekvens, man ønsker. Forskellige frekvenser er udlagt til forskellige formål. Nogle til politiet, militæret, FM-radio-transmission,

Læs mere

Svane Electronic Universal timer med 4 relæer og et valg af 18 funktioner hver 1. 4 kanals timer med 18 funktioner

Svane Electronic Universal timer med 4 relæer og et valg af 18 funktioner hver 1. 4 kanals timer med 18 funktioner Svane Electronic Universal timer med 4 relæer og et valg af 18 funktioner hver 1 4 kanals timer med 18 funktioner 2000.2238 Vi sikrer en høj kvalitet sammen med vores samarbejdes partnere! Vi udveksler

Læs mere

User Guide AK-SM 720 Boolean logic

User Guide AK-SM 720 Boolean logic User Guide AK-SM 720 Boolean logic ADAP-KOOL Refrigeration control systems Anvendelse Funktionen er indeholdt i Systemmanager type AK-SM 720, og kan anvendes til brugerdefinerede funktioner. Funktionerne

Læs mere