HOP9850. void sendfrequency(unsigned long frequency) zie SWEEP9850

Vergelijkbare documenten
DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Programmeren met Arduino-software

Werkbladen voor Arduino workshop 1

RCL Arduino Workshop 1

Arduino Workshop 1 Zuid-Limburg

Arduino[4KIDS] Maak je eigen muziekinstrument!

Workshop Arduino - deel 2

Infographic De infographic geeft in grove lijnen het overkoepelend concept weer Your home remotely controlled Zie de infographic hier naast.

Jeroen uit. Extra informatie. Voor de lunch. Arduino zo aangesloten om mijn code te laten werken. (versie voor lunch) (code voor de lunch)

Arduino CURSUS. door Willy - 09-juni-2017

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

ID-er/sequencer. Beschrijving. Pag 1/6

De FOR lus: // terug naar waar je vandaan kwam Serial.begin(115200); // communicatie snelheid met de PC

arduino programmeerboek Davy Wolfs

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

Oefening 1 - Seriële communicatie via USB

Tweede workshop Arduino

CTCSS Encoder Super Flexibel Ontwerpen met een Arduino Nano

Pulse Burst Generator. Handleiding

Arduino. Arduino UNO. Sam Decoster. CoderDojo Roeselare. Sam Decoster

Deel 8: stappenmotoren en interrupts

Seriële bluetooth verbinding ATmega128

ES1 Project 1: Microcontrollers

ES1 Project 1: Microcontrollers

Arduino Programmeer handleiding

// hier wordt de functie: ZegHallo aangeroepen

Bij manueel trein elke keer vanaf spoor 1 te starten, dus altijd twee ritten. StartLED gaat aan en pas uit als trein op 1 arriveert.

4x4x4 LED cube deel 2

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

1. Testdata TA sensor met Ohmse belasting

delay(1000); // Eén seconde pauze digitalwrite(pin, LOW); // zet 'pin' uit delay(1000); // Eén seconde pauze }

Toets In2305-ii Embedded Programming Dinsdag 28 November 2006, 15:45-16:30

Microcontrollers. Bart Kardinaal E Verslag microcontrollers Rev 1.0 Status definitief.

Lineaire data structuren. Doorlopen van een lijst

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

Arduino Opstartgids.

Javascript oefenblad 1

th_elt Hardware & Software

EM2 Microcontroller Project. LED cube

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

Workshop Arduino voor beginners. door TkkrLab Enschede

Inhoudsopgave. Optimalisatie van de mmips. Forwarding optie 1. Design flow. implementation

Arduino Workshop. door Geert Roumen (CC) BY-SA. lemio.nl/arduino/

Wat is Arduino? Arduino = microprocessor (Atmel)

Handleiding. Vanaf BFC Software Versie: MTD Hardware Versie: 5.2 Document Versie: van 16 Handleiding BFC Versie:

EE1400: Programmeren in C BSc. EE, 1e jaar, , 2e college

Arduino Zuid-Limburg Workshop 2

int main() { int m; m = power(2,3) /* berekent 2^3 en geeft de resultaat naar m terug */ }

Naam LL en : Thibo Meuwes - Maxime Carrein. Evert Cottyn - Lowie De Lombaerde. Naam Lkr en : Benjamin Samyn. Johan Vanhaverbeke.

Digitale Systeem Engineering 1. Week 4 Toepassing: Pulse Width Modulation Jesse op den Brouw DIGSE1/

Muziek. Muziek. Analoog rekenen. Hoofdstuk 1: Van analoog naar digitaal. Analoog. Digitaal. Analoog. Gebruik makend van fysische grootheden Cf Babbage

17 Operaties op bits Bitoperatoren en bitexpressies

Design This! Kim van Dessel

Meet the Arduino FAMILY

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

Arduino : Morse Voltmeter

Winter Workshop ROBOTBOUW

Hoofdstuk 4. Digitale techniek

Tentamen Programmeren in C (EE1400)

Naam + Klas: Laptop Nr: Cijfer:

ARDUINO IDE SCHOOLHANDLEIDING MET THEORIE, OEFENINGEN en EVALUATIETOOL

Inleiding Digitale Techniek. Week 7 Schuifregisters Jesse op den Brouw INLDIG/

10 Meer over functies

Automatische spoel installatie voor legionella preventie. NTKC - Bennie ten Haken 27 Mrt

Java. Basissyllabus. Egon Pas

Niet-numerieke data-types

Programma HCC!Forth komende zaterdag

//enable de interne pull-up weerstand. //variabele sensorval. //naar de seriële monitor

Betaalbaar Home Control. Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

Zelf PIC's programmeren. Deel-13 IR-sensor

Single Board computers. Ruud van der Meer (voor HCC d.d. 4 dec2017 Leiderdorp)

Ar-doe-wie-no. Voorwoord

Instructies en blokken

Week 2 : Hoofdstukken 2 en 6; extra stof: inleiding pointers

Sequentiële schakelingen

Programmeren van de Raspberry Pi.

DATA SHEET C2-10. Besturing en bescherming van elektrische actuators. DATA SHEET C2-10 A&E Trading b.v. 1

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

18 Embedded systemen 1

De Arduino-microcontroller in de motorvoertuigentechniek (4)

De hardware 11. De ontwikkelomgeving 13. Programmeren van de ATtiny 17

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

DOC A. De Arduino programmeertaal. Versie 1.1

Technology, Innovation & Society Delft

Hoofdstuk 7. Computerarchitectuur

b) Geef het schema van een minimale realisatie met uitsluitend NANDs en inverters voor uitgang D.

Luchtdrum. Door: s s s

Sensor Test Unit TSK40A

De Arduino-microcontroller in de motorvoertuigentechniek (2)

Tentamen Computersystemen

Robocode. Inleiding tot programmeren

VOORBLAD SCHRIFTELIJKE TOETSEN

Microcontrollers Week 4 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Dit wordt niet in deze setup guide besproken, raadpleeg indien nodig de handleiding voor meer informatie.

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

Bio-control Stresstester Dr. Arduino meet de huidweerstand

Kunstmatige Intelligentie (AI) Hoofdstuk 25 van Russell/Norvig = [RN] Robotica. voorjaar 2016 College 8, 12 april 2016

Transcriptie:

SWEEP9850 #define DDS_CLOCK 120000000 // frequentie van de DDS-klok (in Hz) byte LOAD = 8; // I/O 8 is verbonden met FQ_UD van de DDS (frequency update) byte CLOCK = 9; // I/O 9 is verbonden met W_CLK van de DDS (word clock) byte DATA = 10; // I/O 10 is verbonden met D7 van de DDS (data) void setup() // deze instructies worden eenmaal uitgevoerd // Plaats alle I/O pennen in OUTPUT mode pinmode (DATA, OUTPUT); pinmode (CLOCK, OUTPUT); pinmode (LOAD, OUTPUT); void loop() // deze instructies worden doorlopend uitgevoerd // Doe een frequentiezwaai tussen 1 en 10 khz in stappen van 1 Hz for(unsigned long freq = 1000; freq < 10000; freq++) sendfrequency(freq); delay(2); void sendfrequency(unsigned long frequency) // Bereken het datawoord unsigned long tuning_word = (frequency * pow(2, 32)) / DDS_CLOCK; // Zet W_CLK laag digitalwrite(clock, LOW); // Zet FQ_UD laag digitalwrite(load, LOW); // Klok de eerste 8 bits in het register van de DDS (W0-W7) shiftout(data, CLOCK, LSBFIRST, tuning_word); // Klok de volgende 8 bits (W8-W15) shiftout(data, CLOCK, LSBFIRST, tuning_word >> 8); // Klok de volgende 8 bits (W16-W23) shiftout(data, CLOCK, LSBFIRST, tuning_word >> 16); // Klok de volgende 8 bits (W24-W31) shiftout(data, CLOCK, LSBFIRST, tuning_word >> 24); // Klok de volgende 8 bits = 0 (W32-W39) shiftout(data, CLOCK, LSBFIRST, 0x0); // Zet FQ_UD hoog om het datawoord door te schuiven in de DDS (= nieuwe frequentie) digitalwrite(load, HIGH);

// Frequentiesturing van een AD9850 DDS via een schakelaar met drie standen #define DDS_CLOCK 120000000 // frequentie van de DDS-klok (in Hz) byte LOAD = 8; // I/O 8 is verbonden met FQ_UD van de DDS byte CLOCK = 9; // I/O 9 is verbonden met W_CLK van de DDS byte DATA = 10; // I/O 10 is verbonden met D7 van de DDS byte switcha1 = 11; // I/O 11 is verbonden met schakelaar A, pen 1 byte switcha2 = 12; // I/O 12 is verbonden met schakelaar A, pen 2 byte switcha3 = 13; // I/O 13 is verbonden met schakelaar A, pen 3 unsigned long freq1 = 50040000; unsigned long freq2 = 50041000; unsigned long freq3 = 50042000; int switchnu = 1; int switchvorig = 0; HOP9850 void setup() // deze instructies worden eenmaal uitgevoerd pinmode (DATA, OUTPUT); // I/O 10 is output van het tuning word pinmode (CLOCK, OUTPUT); // I/O 9 is output van de klokpuls pinmode (LOAD, OUTPUT); // I/O 8 is output van de finale puls FQ_UD pinmode (switcha1, INPUT); // via I/O 11 wordt de status van de schakelaar pen 1 gelezen pinmode (switcha2, INPUT); // via I/O 12 wordt de status van de schakelaar pen 2 gelezen pinmode (switcha3, INPUT); // via I/O 13 wordt de status van de schakelaar pen 3 gelezen void loop() // deze instructies worden doorlopend uitgevoerd if (digitalread(switcha1)!= 0) // schakelaar A1 hoog? switchnu = 1; if (digitalread(switcha2)!= 0) // schakelaar A2 hoog? switchnu = 2; if (digitalread(switcha3)!= 0) // schakelaar A3 hoog? switchnu = 3; if (switchnu!= switchvorig) // als de schakelstand gelijk is: niets uitvoeren switch (switchnu) case 1: // A1 is gesloten sendfrequency(freq1); break; case 2: // A2 is gesloten sendfrequency(freq2); break; case 3: sendfrequency(freq3); // A3 is gesloten break; switchvorig = switchnu; delay (1000); void sendfrequency(unsigned long frequency) zie SWEEP9850

FSKCW9850 // DDS FSKCW generator // fragmenten afkomstig uit Morse.h (Erik Linder SM0RVV and Mark VandeWettering K6HX) // morsetabel aangevuld door ON4LP #define DDS_CLOCK 120000000 // frequentie van de DDS-klok (in Hz) byte LOAD = 8; // I/O 8 is verbonden met FQ_UD van de DDS (frequency update) byte CLOCK = 9; // I/O 9 is verbonden met W_CLK van de DDS (word clock) byte DATA = 10; // I/O 10 is verbonden met D7 van de DDS (data) byte speedwpm = 8; // seinsnelheid in wpm int lendah; // lengte dah int lendit; // lengte dit unsigned long int freqlo = 28350000; // DDS lage frequentie unsigned long int freqhi = 28350170; // DDS hoge frequentie byte morsetab[] = // 1 = geen morseteken beschikbaar 107, //ASCII 33! 82, //ASCII 34 " 1, //ASCII 35 # 137, //ASCII 36 $ 1, //ASCII 37 % 40, //ASCII 38 & 94, //ASCII 39 ' 109, //ASCII 40 ( 109, //ASCII 41 ) 1, //ASCII 42 * 42, //ASCII 43 + 115, //ASCII 44, 97, //ASCII 45-106, //ASCII 46. 41, //ASCII 47 / 63, //ASCII 48 0 62, //ASCII 49 1 60, //ASCII 50 2 56, //ASCII 51 3 48, //ASCII 52 4 32, //ASCII 53 5 33, //ASCII 54 6 35, //ASCII 55 7 39, //ASCII 56 8 47, //ASCII 57 9 120, //ASCII 58 : 53, //ASCII 59 ; 1, //ASCII 60 < 49, //ASCII 61 = 1, //ASCII 62 > 76, //ASCII 63? 69, //ASCII 64 @ 6, //ASCII 65 A 17, //ASCII 66 B 21, //ASCII 67 C

9, //ASCII 68 D 2, //ASCII 69 E 20, //ASCII 70 F 11, //ASCII 71 G 16, //ASCII 72 H 4, //ASCII 73 I 30, //ASCII 74 J 13, //ASCII 75 K 18, //ASCII 76 L 7, //ASCII 77 M 5, //ASCII 78 N 15, //ASCII 79 O 22, //ASCII 80 P 27, //ASCII 81 Q 10, //ASCII 82 R 8, //ASCII 83 S 3, //ASCII 84 T 12, //ASCII 85 U 24, //ASCII 86 V 14, //ASCII 87 W 25, //ASCII 88 X 29, //ASCII 89 Y 19, //ASCII 90 Z 1, //ASCII 91 [ 1, //ASCII 92 \ 1, //ASCII 93 ] 1, //ASCII 94 ^ 77, //ASCII 95 _ 94, //ASCII 96 ` 6, //ASCII 97 a 17, //ASCII 98 b 21, //ASCII 99 c 9, //ASCII 100 d 2, //ASCII 101 e 20, //ASCII 102 f 11, //ASCII 103 g 16, //ASCII 104 h 4, //ASCII 105 i 30, //ASCII 106 j 13, //ASCII 107 k 18, //ASCII 108 l 7, //ASCII 109 m 5, //ASCII 110 n 15, //ASCII 111 o 22, //ASCII 112 p 27, //ASCII 113 q 10, //ASCII 114 r 8, //ASCII 115 s 3, //ASCII 116 t 12, //ASCII 117 u 24, //ASCII 118 v 14, //ASCII 119 w 25, //ASCII 120 x 29, //ASCII 121 y

19 //ASCII 122 z ; void setup() // Plaats alle I/O pennen naar de DDS in OUTPUT mode pinmode (DATA, OUTPUT); pinmode (CLOCK, OUTPUT); pinmode (LOAD, OUTPUT); lendit = (1200/speedWpm); lendah = (3*lenDit); void loop() // deze instructies worden doorlopend uitgevoerd sendmsg("on6ms JO10UX"); sendfrequency(freqlo); delay(5000); void sendmsg(char *str) while (*str) send(*str++); void dah() sendfrequency(freqhi); delay(lendah); sendfrequency(freqlo); delay(lendit); void dit() sendfrequency(freqhi); delay(lendit); sendfrequency(freqlo); delay(lendit); void send(char c) byte i; byte p; if (c == ' ') delay(7*lendit) ; return ;

// Morsewaarde opzoeken in de tabel else i = ((byte) c) - 33; p = morsetab[i]; // Main algoritm for each morse sign while (p!= 1) if (p & 1) dah(); else dit(); p = p / 2; // Tekenspatie delay(2*lendit); void sendfrequency(unsigned long frequency) // Bereken het datawoord unsigned long tuning_word = (frequency * pow(2, 32)) / DDS_CLOCK; // Zet W_CLK laag digitalwrite(clock, LOW); // Zet FQ_UD laag digitalwrite(load, LOW); // Klok de eerste 8 bits in het register van de DDS (W0-W7) shiftout(data, CLOCK, LSBFIRST, tuning_word); // Klok de volgende 8 bits (W8-W15) shiftout(data, CLOCK, LSBFIRST, tuning_word >> 8); // Klok de volgende 8 bits (W16-W23) shiftout(data, CLOCK, LSBFIRST, tuning_word >> 16); // Klok de volgende 8 bits (W24-W31) shiftout(data, CLOCK, LSBFIRST, tuning_word >> 24); // Klok de volgende 8 bits = 0 (W32-W39) shiftout(data, CLOCK, LSBFIRST, 0x0); // Zet FQ_UD hoog om het datawoord door te schuiven in de DDS (= nieuwe frequentie) digitalwrite(load, HIGH); Nuttige links: www.arduino.cc de enige echte Arduino site arduino.cc/en/reference/homepage De Engelstalige Arduino referentiemanual www.kompanje.nl/arduino/arduino%20manual%201_0%20nl.pdf Arduino programmeer manual Nederlands www.analog.com/static/imported-files/data_sheets/ad9850.pdf Datasheet AD9850 www.electricalelectronics.jotoexplorer.com/electrical-engineering/digital-frequency-synthesis-demystified-free-pdf/ - Digital Frequency Synthesis Demystified Free PDF