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

Relaterede dokumenter
Delay(100); Man skriver fx blot delay(100); for at få Microcontrolleren til at vente 100 ms inden programmet fortsætter.

Arduino opgaver Teknologi

Internt interrupt - Arduino

Arduino kursus lektion 3:

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

Arduino opgaver. I dette dokument er der inspiration til en række programmerings-opgaver til Arduino.

CANSAT & ARDUINO step by step

Start på Arduino og programmering

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

Fra programmering til mikroprocessor

Arduino opgaver Teknologi

Hvorfor & Hvordan lære Elever At programmere Arduinoer

Arduino opgaver Teknologi

Brug af digitale ind og udgange

Hvorfor & Hvordan lære. at programmere Arduinoer

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 05/ Arduino, Loops, løkker, programfunktioner mm.

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

Hvorfor & Hvordan lære Elever At programmere Arduinoer

Arduino opgaver. I dette dokument er der inspiration til en række programmerings-opgaver til Arduino.

Lektion 6 / Analog Arduino

Optimering af fraværsregistrering

Modeljernbane elektronik for begyndere...og dem der vil igang med at bygge deres egne dekodere

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).

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

CANSAT & ARDUINO step by step

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

// Definition af porte og funktioner

01 tilt/shift:theaestheticofselection Boluk,LeMieux,Tankersley 02

Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4.

SVINGNING. 2 x 5,3 kw AC

TinkerCad - Arduino simulator

Arduino opgaver. For at få hjælp til at lave opgaverne, brug Arduino-kompendiet, eller søg på nettet!

Skab Din Egen Verden

Betjeningsanvisning til model KCVR9NE Installationsanvisninger:

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

ARDUINO PROGRAMMERING

Alt elektronik heri er købt via og arduino udviklingssoftware er hentet fra

Arduino kursus lektion 4:

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Bruger manual AGAM kontrolboks

Dokumentation af UR Med børnetimer til TV-visning

BASAL ARDUINO SÅDAN KOMMER DU IGANG MED ARDUINO, OG FORBEREDER DIG TIL KURSERNE MBHOBBY.COM AFHOLDER.

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Projekt - RoboNet Del Journal.

Analoge indgange og A/D konvertering. Analoge udgange

Fang Prikkerne. Introduktion. Scratch

Projekt Når maskinen reagerer - Dataopsamling og aktuatorer

System Arkitektur og Integration

Arduinostyret klimaanlæg Afsluttende projekt programmering C

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

Datamaters arkitektur og programmering

Filnavn: main.c

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Andreas Nordbek & Kristoffer Skude Jensen. DMX Styring Side 1 af 15

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

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt

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

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

Port & Bitmanipulation

Video Projector Controller. Brugermanual

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

Mircobit Kursus Lektion 4 (Du skal her vælge Lets Code Og herefter Block Editor.)

Robotbil del 1 (Chassis / hjul / motor / motordriver)

Qwpikkemandtyuiopåasdfghjklæøzxc vbnmqwertyuiopåasdflortefissezxcvb nmqwertyuiopåasdfghjklæsupernørd mqwertyuiopåasdfghjklæøzxcvbnmq

Betjeningsvejledning. til. Vandudvejning. system

Morse med micro:bit. Morse med micro:bit

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

Demonstration af transitmetoden

Blockprog Rev1.0. Block programmering CS1/CJ1. Qiuck guide OMRON

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 08/ Arduino, Loops, løkker, programfunktioner mm.

Pædagogisk vejledning til. Materialesæt. Sphero.

ChatBot. Introduktion. Scratch. Nu skal du lære hvordan du programmerer din egen talende robot! Arbejdsliste. Test dit Projekt.

KONSTANT REGN 6 BETJENINGSVEJLEDNING VERSION 18 DATO UDLÆSNING I DISPLAY. - Indtrækshastighed. - Total vandingstid

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

Quick guide-dk SO2000/A SOON v1,2

BETJENINGSVEJLEDNING VERSION 19.1 DATO PR9V19.DA TAST FOR AT FÅ FORSKELLIGE UDLÆSNINGER I DISPLAY

X88. X88 er en GSM/SMS baseret fjernstyring med: 8 indgange 8 relæudgange Mulighed for temperaturføler

Bekrig Klonerne. Introduktion. Scratch. I dette projekt skal du lære, hvordan du laver et spil, hvor du skal redde Jorden fra monstre i rummet.

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

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

Programmering i C. Lektion oktober 2008

Rumfart. Introduktion. Scratch. Nu skal du lære hvordan du programmerer din egen animation! Arbejdsliste. Test dit Projekt.

Manual til Storskærme og Ur

GSM-AUTO SPECIFICATIONS

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

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at beskrive et forløb. Det kan fx være en microcontrollers programafvikling.

Arduino. Processoren på kittet er fra Atmel, af AVR-familien, og hedder Atmega 328.

Kyndestoft 3 sektioners sprøjtestyring

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen

Hjernetræning. Introduktion. Scratch

Projekt Træningsmaskine

ECE 551: Digital System * Design & Synthesis Lecture Set 5

danske karakterer på Lcd

DFRC Radiografisk fjernbetjening for gaspejse


Betjeningsvejledning. til. Vandkiosk. system

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

Betjeningsvejledning. SMS modul

Transkript:

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 TimeOut fra v 1.06_N pilotfrekvens justeret i match OCR1A register fra v 1.06_o pilot kobles på når pilot_ok == 1 deklaration af pins ---------------------------------------- const int disponibel_2 = 2; (bruges ikke lige nu) const int disponibel_3 = 3; (bruges ikke lige nu) const int pilot_gate = 4; ud optokobler 1 const int pilot_ud = 5; altid pilottone ud 88.5 Hz (Timer 1) const int tone_ud = 6; morsetegn og dyt output LF const int TimeOutLED = 7; viser TimeOUT på LED const int disponibel_8 = 8; ud optokobler 3 const int tx_tast = const int disponibel_10= 10; const int disponibel_11= 11; 9; ud optokobler 4, taster sender const int disponibel_12= 12; const int blinkled = 13; pin 13 er LED på NANO const int pilot_ind = 14; ind optokobler 1, Pilottone const int disponibel_15= 15; ind optokobler 2, interrupt variable til millis tidskonstant -------------------------- unsigned long SlutStartMillis = 0; morse-tegn timer unsigned long SlutAktuelMillis = 0; morse-tegn timer unsigned long SlutInterval = 0; morse-tegn timer unsigned long MaxStartMillis = 0; unsigned long MaxAktuelMillis = 0; unsigned long MaxInterval = 0; unsigned long MaxStep = 1000; unsigned long Max_TX_tid = 180; max TX timer max TX timer max TX timer Step Max_TX_tid (milliseconds) Max_TX_tid default 180 sec unsigned long GenStartStartMillis = 0; GenStart timer unsigned long GenStartAktuelMillis = 0; GenStart timer unsigned long GenStartInterval = 0; GenStart timer unsigned long GenStartStep = 1000; Step GenStart_TX_tid (milliseconds) unsigned long GenStart_TX_tid = 3; Stille tid før GenStart (seconds) unsigned long BlinkLastTime; a-live-delay timer boolean toggle1 = 0; pilottone timer 1 interrupt (pilotgenerator) deklaration af globale variable -------------------------------------- boolean Start_OK = 0; boolean Pilot_OK = 0; boolean Send_OK = 0; Flag for modtaget start pilottone Flag for modtaget pilottone Flag til tast af sender Side 1

boolean TX_Stop = 0; Flag for max taletid const int StartTid = 1; Krævet bærebølge-tid (sekund + 1) ved første tast const int ResetTid = 20; Krævet pause (K)(20*70 msec) til reset Max_TX_tid const int TegnFrekv = 1000; LF frekvensen på Morsetegn (Hz) const int DytFrekv = 800; LF frekvensen på pause Dyt (Hz) const int BotFrekv = 600; LF frekvensen på pause Bot (Hz) const int SlutStep = 70; Step i morse = dot længde (millisec) const int BlinkDelay = 1000; a-live LED pin13 (milliseconds) int BlinkStatus; a-live LED pin13 (milliseconds) int DotTid = SlutStep; længde af en prik int DashTid = 3 * DotTid; længde af en streg -------------------------------------------------------------- void setup() Serial.begin(9600); sender til konsol i IDE for debug pinmode(pilot_ind, INPUT_PULLUP); pilottone modtaget = LOW pinmode(tone_ud, OUTPUT); pinmode(pilot_gate, OUTPUT); pinmode(pilot_ud, OUTPUT); pinmode(timeoutled, OUTPUT); pinmode(tx_tast, OUTPUT); pinmode(blinkled, OUTPUT); morse og dyt, tone() styring af pilot_gate Timer 1 88.5 Hz LED lyser ved TimeOut taster sender blink LED på Nano digitalwrite(pilot_gate, LOW); turn pilot tone ON cli(); stop interrupts ***** IKKE PILLE ***** ---------------Her genereres 88.5 Hz pilottone START------------------ set 16 bit timer1 interrupt ved 177Hz (output 177 / 2 = 88.5 Hz) TCCR1A = 0; sæt hele TCCR1A register til 0 TCCR1B = 0; sæt hele TCCR1B register til 0 TCNT1 = 0; initialize counter værdi til 0 sæt compare match register til 177 Hz increments, test mod god tæller OCR1A = 11305; ((16*10^6) / (177*8)) - 1 = 11298 (must be <65536) TCCR1B = (1 << WGM12); turn on CTC mode TCCR1B = (1 << CS11); Sæt CS11 bits for 8 prescaler TIMSK1 = (1 << OCIE1A); enable timer compare interrupt -------------------------------------------------------------- sei(); allow interrupts ***** IKKE PILLE ***** ---------------------------timer interrupts setup end--------- timer1 interrupt 177 Hz toggles pin pilot_ud (88.5 Hz output) ISR(TIMER1_COMPA_vect) if (toggle1) digitalwrite(pilot_ud,high); toggle1 = 0; else digitalwrite(pilot_ud,low); toggle1 = 1; Side 2

---------------Her genereres 88.5 Hz pilottone SLUT------------------ ---------------------Her begynder funktioner--------------- void aliveblink() blink med LED på NANO for at vise vi er i live if(millis()- BlinkLastTime >= BlinkDelay) BlinkStatus=!BlinkStatus; digitalwrite(13,blinkstatus); BlinkLastTime = millis(); Serial.print("blink "); Serial.print(BlinkStatus);Serial.println(" "); ------------------------------------------------------------ void GenStartMax_TX_timer() GenStartStartMillis = millis(); if ((GenStartStartMillis - GenStartAktuelMillis >= GenStartStep)&&(TX_Stop == 1)&&(Pilot_OK == 0)) GenStartInterval = GenStartInterval + 1; GenStartAktuelMillis = GenStartStartMillis; if (GenStartInterval >= GenStart_TX_tid) TX_Stop = 0; digitalwrite(timeoutled,low); GenStartInterval = 0; ------------------------------------------------------------ void Max_TX_timer() stopper sender, hvis mere end Max_TX_tid uden at høre K MaxStartMillis = millis(); if ((MaxStartMillis - MaxAktuelMillis >= MaxStep)&&(TX_Stop == 0)) MaxInterval = MaxInterval + 1; MaxAktuelMillis = MaxStartMillis; if ((MaxInterval == StartTid) && (Pilot_OK == 1)) Start_OK = 1; Krævet bærebølge ved start if (MaxInterval == (Max_TX_tid + 0)) tone(tone_ud, DytFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 1)) tone(tone_ud, BotFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 2)) tone(tone_ud, DytFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 3)) tone(tone_ud, BotFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 4)) tone(tone_ud, DytFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 5)) tone(tone_ud, BotFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 6)) tone(tone_ud, DytFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 7)) tone(tone_ud, BotFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 8)) tone(tone_ud, DytFrekv, DashTid); if (MaxInterval == (Max_TX_tid + 9)) tone(tone_ud, BotFrekv, DashTid); if (MaxInterval >= (Max_TX_tid + 10)) TX_Stop = 1; digitalwrite(timeoutled,high); MaxInterval = 0; Side 3

------------------------------------------------------------ void SlutGenerator() SlutStartMillis = millis(); if ((SlutStartMillis - SlutAktuelMillis >= SlutStep)&&(TX_Stop == 0)&&(Pilot_OK == 0)) SlutInterval = SlutInterval + 1; SlutAktuelMillis = SlutStartMillis; if (SlutInterval == 12) tone(tone_ud, TegnFrekv, DashTid); K if (SlutInterval == 16) tone(tone_ud, TegnFrekv, DotTid); K if (SlutInterval == 18) tone(tone_ud, TegnFrekv, DashTid); K if (SlutInterval == ResetTid) MaxInterval = 0; Krævet pause til Reset af Max_TX_timer if (SlutInterval == 58) tone(tone_ud, DytFrekv, DotTid); if (SlutInterval == 88) tone(tone_ud, DytFrekv, DotTid); ----------------Morse begynd------------------------------------------ if (SlutInterval == 108) digitalwrite(pilot_gate, HIGH); pilot tone OFF if (SlutInterval == 120) tone(tone_ud, TegnFrekv, DashTid); O if (SlutInterval == 124) tone(tone_ud, TegnFrekv, DashTid); if (SlutInterval == 128) tone(tone_ud, TegnFrekv, DashTid); if (SlutInterval == 134) tone(tone_ud, TegnFrekv, DashTid); Z if (SlutInterval == 138) tone(tone_ud, TegnFrekv, DashTid); if (SlutInterval == 142) tone(tone_ud, TegnFrekv, DotTid); if (SlutInterval == 144) tone(tone_ud, TegnFrekv, DotTid); if (SlutInterval == 148) tone(tone_ud, TegnFrekv, DashTid); 7 if (SlutInterval == 152) tone(tone_ud, TegnFrekv, DashTid); if (SlutInterval == 156) tone(tone_ud, TegnFrekv, DotTid); if (SlutInterval == 158) tone(tone_ud, TegnFrekv, DotTid); if (SlutInterval == 160) tone(tone_ud, TegnFrekv, DotTid); if (SlutInterval == 164) tone(tone_ud, TegnFrekv, DotTid); R if (SlutInterval == 166) tone(tone_ud, TegnFrekv, DashTid); if (SlutInterval == 170) tone(tone_ud, TegnFrekv, DotTid); if (SlutInterval == 174) tone(tone_ud, TegnFrekv, DotTid); E if (SlutInterval == 178) tone(tone_ud, TegnFrekv, DotTid); S if (SlutInterval == 180) tone(tone_ud, TegnFrekv, DotTid); if (SlutInterval == 182) tone(tone_ud, TegnFrekv, DotTid); if (SlutInterval == 190) digitalwrite(pilot_gate, LOW); pilot tone ON if (SlutInterval >= 190) Send_OK = 0; Start_OK = 0; SlutInterval = 0; Side 4

------------------------------------------------------------ void Test_Input() Pilot_OK =!digitalread(pilot_ind); Bemærk: pilot_ind inverteres if ((Pilot_OK == 1) && (TX_Stop == 0)) Send_OK = 1; *************************************************************** HOVEDPROGRAM. Her står den kode, som kører i uendelig sløjfe. void loop() aliveblink(); Max_TX_timer(); SlutGenerator(); GenStartMax_TX_timer(); Test_Input(); if (TX_Stop == 1) digitalwrite(tx_tast,low); TX blokeres pga Max_TX_timer if (Pilot_OK == 1) digitalwrite(pilot_gate, LOW); turn pilot tone ON if (Pilot_OK == 1) Send_OK = 1; if (Pilot_OK == 1) SlutInterval = 0; nulstil SlutGenerator if (Pilot_OK == 1) GenStartInterval = 0; nulstil GenStart timer if ((Pilot_OK == 0) && (Start_OK == 0)) Send_OK = 0; if (Send_OK == 0) SlutInterval = 0; nulstil SlutGenerator if (Send_OK == 0) MaxInterval = 0; nulstil Max_TX_timer if (Send_OK == 0) digitalwrite(tx_tast,low); TX tast OFF if ((Send_OK == 1) && (TX_Stop == 0)) digitalwrite(tx_tast,high); TX tast ON /* --- efterfølgende bruges til dbug til monitor, og bør ud-blankes ------- ---- Brug af monitor i denne mængde nedsætter morse-hastigheden -------- Serial.print("Pilot "); Serial.print(Pilot_OK); Serial.print(" Max "); Serial.print(MaxInterval); Serial.print(" Start "); Serial.print(Start_OK); Serial.print(" Send "); Serial.print(Send_OK); Serial.print(" Slut "); Serial.print(SlutInterval); Serial.print(" Gen "); Serial.print(GenStartInterval); Serial.print(" Stop "); Serial.print(TX_Stop); Serial.println(); */ *************************************************************** Side 5