Microcontrollers Programmeren (Extract)

Page 1

books books

books

Microcontrollers Programmeren In dit boek gebruiken we JAL (Just Another Language) om de PIC-microcontroller te programmeren in 60 oefeningen. JAL is makkelijk in gebruik en is een goede basis om programmeren in andere talen snel te leren. Na het lezen en toepassen van de voorbeelden in dit boek kan iedereen die zich hierin serieus heeft verdiept met behulp van JAL zelf de microcontroller aansturen. Je leert onder meer het programmeren van timers, analoog/digitaal omzetters, comparators, pulsbreedte regeling voor motoren en geluid, LED- en LCD-scherm aansturing, USB-connectie en communicatiemogelijkheden met computers of andere microcontrollers. Ook weet je aan het eind van het boek wat je moet doen om nu nog onbekende mogelijkheden te gaan toepassen. Met deze kennis kan iedereen van beginner tot meer gevorderde zijn creativiteit vorm geven in projecten met microcontrollers. Wil je verder met leren programmeren dan legt dit boek ook een zeer goede basis. Wie goed met JAL overweg kan en zich de gestructureerde wijze van denken heeft aangeleerd, zal de stap naar andere programmeertalen zoals Python, C++ enz. kunnen maken. Ook het programmeren van minicomputers zoals de Raspberry Pi en Arduino zijn mogelijkheden.

Peter Zwart is een gepensioneerd leraar van een school voor kinderen met leer- en opvoedingsmoeilijkheden. Na de opheffing van dit onderwijs volgde hij een managementopleiding en vervolgde zijn loopbaan als interim-directeur. Al heel jong was hij geïnteresseerd in elektronica en bouwde versterkers. Bij het aanleren van de programmeertaal JAL was zijn conclusie dat weinig documentatie compleet is. Met zijn didactische kennis probeert hij met dit boek hier verandering in te brengen.

Elektor International Media BV www.elektor.com

Microcontrollers Programmeren Leer PIC-microcontrollers programmeren met JAL in 60 lessen

• Peter Zwart

Om te starten is geen kennis van elektronica nodig. Wie niets weet van elektronica, krijgt overal in het boek de noodzakelijke kennis aangereikt. Alle belangrijke en benodigde informatie staat in de tekst

Microcontrollers Programmeren

Leer PIC-microcontrollers programmeren met JAL in 60 lessen

Peter Zwart

Zwart.indd All Pages

23/03/2021 09:59:47



Microcontrollers Programmeren ●

Leer PIC-microcontrollers programmeren met JAL in 60 lessen Peter Zwart

an Elektor Publication

LEARN DESIGN SHARE


Niets uit deze uitgave mag worden verveelvoudigd, opgeslagen in een geautomatiseerd

gegevensbestand, of openbaar gemaakt, in enige vorm of op enige wijze, hetzij elektronisch, mechanisch, door middel van druk, fotokopie, microfilm of op welke andere wijze dan ook, zonder voorafgaande schriftelijke toestemming van de uitgever. Alle rechten voorbehouden.

Ondanks alle aan de samenstelling van dit boek bestede zorg kunnen noch de auteur, noch de redactie,

noch de uitgever aansprakelijkheid aanvaarden voor eventuele schade die zou kunnen voortvloeien uit enige fout die in deze uitgave zou kunnen voorkomen.

Voor zover het maken van reprografische verveelvoudiging uit deze uitgave is toegestaan op grond van

artikel 16h Auteurswet 1912 dient men de daarvoor wettelijk verschuldigde vergoedingen te voldoen aan de Stichting Reprorecht (Postbus 3051, 2130 KB Hoofddorp, www.reprorecht.nl)

Voor zover het maken van reprografische verveelvoudiging uit deze uitgave is toegestaan op grond van

artikel 16h Auteurswet 1912 dient men de daarvoor wettelijk verschuldigde vergoedingen te voldoen aan de Stichting Reprorecht (Postbus 3051, 2130 KB Hoofddorp, www.reprorecht.nl)

Voor het overnemen van gedeelte(n) uit deze uitgave in bloemlezingen, readers en andere

compilatiewerken (artikel 16 Auteurswet 1912) kan men zich wenden tot de Stichting PRO (Stichting Publicatie- en Reproductierechten Organisatie, Postbus 3060, 2130 KB Hoofddorp, www.stichting-pro.nl).

ISBN: 978-90-5381-307-2

Grafische vormgeving & productie: DMC ¦ daverid.com Druk: Ipskamp Printing, Enschede

Elektor is part of EIM, the world’s leading source of essential technical information and electronics products for pro engineers, electronics designers, and the companies seeking to engage them. Each day, our international team develops and delivers high-quality content - via a variety of media channels (e.g., magazines, video, digital media, and social media) in several languages - relating to electronics design and DIY electronics. www.elektor.com

LEARN DESIGN SHARE


De leercurve van JAL was steil in het begin. Veel antwoorden op vragen vond ik in het Forum. En voor alle antwoorden op de vragen die ik op het forum stelde, bedank ik de forumleden. Ik noem geen namen, want dan vergeet ik er vast een.


Microcontrollers Programmeren

● VOORWOORD Toen de microcontroller in de tweede helft van de twintigste eeuw in de hobby-elektronica zijn intrede deed, werd dit voor veel hobbyisten het einde van hun liefhebberij. Je kocht wat onderdelen, een geprogrammeerde chip en een bijbehorend printbordje en monteerde alles op de juiste plek en het werkte. Het werd een elektronisch Ikea-kunstje. Wat er in de chip was geprogrammeerd, was onduidelijk en hoe het werkte nog veel onduidelijker. Een groot verschil met de jaren hiervoor toen een project nog werd opgebouwd met losse onderdelen zodat de werking altijd stap voor stap te volgen was in het schema. Gelukkig zijn er altijd mensen die veel kennis van zaken hebben en in staat zijn situaties te veranderen. Er kwamen steeds hogere (meer toegankelijke) programmeertalen om de microcontroller als gebruiker te besturen. En daarmee werd de microcontroller een chip die niet alleen veel losse onderdelen vervangt en veel mogelijkheden heeft, maar ook de gebruiker zelf laat bepalen welke mogelijkheden te gebruiken. In dit boek gebruiken we JAL (Just Another Language) om de microcontroller te programmeren. JAL is makkelijk in gebruik en is daar mede een goede basis om programmeren in andere talen snel te leren. Dit boek heeft geen downloadsite. Programmeren is zelf bedenken wat je wil en uitzoeken hoe je dat moet programmeren en vervolgens foutzoeken. Een vergeten komma, een opdracht niet sluiten, een typefout enz. kan je programma danig verstoren. Programmeren leer je door te doen en niet door te downloaden. In de datasheet van de leverancier van de microcontroller krijg je een prima overzicht van wat de chip kan. Voor minder dan 10 euro koop je een microcontroller met timers, analoog/digitaal omzetters, comparators, pulsbreedte regeling voor motortjes en geluid, LCD-schermpjes aansturing, led display aansturing, USB-aansluitmogelijkheden en communicatiemogelijkheden met computers of andere microcontrollers enz. enz. Na het lezen en toepassen van de voorbeelden in dit boek kan iedereen die zich hierin serieus heeft verdiept met behulp van JAL zelf de microcontroller aansturen. Ook weet je aan het eind van het boek wat je moet doen om nu nog onbekende mogelijkheden te gaan toepassen. Met deze kennis kan elke hobbyist zijn creativiteit vorm gevent met deze microcontrollers zoals voor het maken van een Kerstlandschap, een modeltrein-maquette of aanpassingen in speelgoed (poppenhuis) enz. Wil je verder met leren programmeren dan legt dit boek ook een goede basis. Wie goed met JAL overweg kan, zal de stap naar andere programmeertalen zoals Python, C++ en kunnen maken. Ook het programmeren van minicomputers zoals de Raspberry (kan worden geprogrammeerd met Python) en Arduino zijn mogelijkheden. Als de gestructureerde wijze van denken is aangeleerd, zijn hierdoor deze andere programmeertalen snel aan te leren. Om te starten is geen kennis van elektronica nodig. Wie niets weet van elektronica, krijgt overal in het boek de noodzakelijke kennis aangereikt. Alle belangrijke en benodigde informatie staat in de tekst. Er zijn dan ook geen voetnoten mede, omdat dit het lezen van de tekst verstoort. Wie meer wil weten kan op Internet gaan zoeken en wie al over de basiskennis beschikt, kan eventueel sommige delen overslaan.

●6


VOORWOORD

Velen zijn minder vertrouwd met Technisch Engels dan met conversatie Engels. Daarom worden in het begin zoveel mogelijk Nederlands termen gebruikt. Gaandeweg worden steeds meer de Engelse termen gebruikt, want de basistaal voor en van de microcontroller is uiteindelijk Engels. Ook op forums gaat de conversatie in het Engels.

●7


Microcontrollers Programmeren

● INLEIDING Toen ik mij een paar jaar geleden in JAL ging verdiepen, liep ik tegen een aantal problemen op. De boeken die er waren gebruikten bijvoorbeeld nog JAL-opdrachten die niet meer ondersteund werden of werkten met communicatie-hardware (de Wisp628) die al een aantal jaren niet meer te koop was. Als je als nieuweling met JAL wil gaan werken, worden dit hele grote problemen die in het begin niet eenvoudig te doorgronden zijn. Na drie weken worstelen met JAL en een flink aantal vragen op het JAL-forum, besloot ik opnieuw te beginnen op een totaal andere manier. Het betekende wel dat ik van alles wat ik deed aantekeningen ging maken. Deze aantekeningen zijn de basis voor dit boek geworden. Het bleek ook dat een flinke portie geduld nodig was voordat ik het eerste programmeerwerk in de microcontroller geladen kreeg. Op verschillende websites staat informatie en word je doorverwezen. Ergens staat in een tutorial: je hebt een Programmer nodig en dan drie plaatjes. En dan maar zoeken hoe die Programmers heten en waar je ze kan kopen enz. En dat is jammer, want de ontwikkelaars van JAL hebben een uiterst veelzijdige programmeertaal ontwikkelt. Ik hoop met dit boek een bijdrage te leveren om JAL toegankelijk te maken. Ik behoor niet tot de groep ontwikkelaars van JAL en ben van beroep ook geen elektronicus, maar weet wel veel van didactiek: hoe leg ik een stuk leerstof begrijpelijk uit. Ik hoop dat ik erin slaag deze boeiende materie op een begrijpelijke wijze uit te leggen, zodat de lezer net zo veel plezier beleeft aan dit boek als ik tijdens het schrijven. Met JAL kunnen heel veel microcontrolleren worden aangestuurd. JAL beschikt ook over een aparte map met voorbeelden van toepassingen voor allerlei microcontrolleren. Aan het eind van dit boek ben je in staat om die voorbeelden aan te passen en te bepalen welke microchip bij jouw planning past. Op deze manier kun je dus allerlei onbekende mogelijkheden van de microcontroller zelf gaan uitzoeken Op dit moment beleeft JAL een soort revival. Er worden libraries ontwikkeld die andere microchipchips en randapparatuur ondersteunen. Hierdoor wordt JAL nog universeler en breder toepasbaar. Donaties voor de verdere ontwikkeling zijn dan ook zeer welkom. Rest nog te vermelden dat alle software die in dit boek wordt gebruikt, freeware is en voor iedere gebruiker zonder commerciële doeleinden vrij toegankelijk en te downloaden is.

●8


INHOUDSOPGAVE

● INHOUDSOPGAVE ● VOORWOORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 ● INLEIDING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

VOORBEREIDINGEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 ● ONDERDELENLIJST EN PROGRAMMA’S . . . . . . . . . . . . . . . . . . . . . . . . . . 01 ● Onderdelenlijst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Basisonderdelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

DEEL 1

25 25

Programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Voeding: adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Voor de ‘alles-in-een-werkplek’ (als je die wilt gaan toepassen) . . . . . . . . . . 26

Ingangsversterker voor WinOscillo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Onderdelenlijst voor de opdrachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

● In het algemeen is nodig: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 02 ● Programma JAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Windows installatie van JAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

03

25

28 29 29

Instellingen JALEditor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Instellingen JALEditor 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

● Linux installatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● De Programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Mogelijkheid 1: de PICkit3 van Microchip . . . . . . . . . . . . . . . . . . . . . . . . .

32 32 32

Mogelijkheid 2: de PICkit4 en de SNAP van . . . . . . . . . . . . . . . . . . . . . . . . 36

Mogelijkheid 3: De Wisp648 en XWisp (de software) . . . . . . . . . . . . . . . . . . 36

● Mogelijkheid 4: van eenvoudig tot uitgebreid . . . . . . . . . . . . . . . . . . . . . . . 04 ● De voeding van de Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 05 ● De alles-in-een-werkplek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Het insteekbordje aansluiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 06 ● Terminal programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Terminal programma: RealTerm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38 39 44 46 48 49

Batchprogramma voor RealTerm en PICKit3 . . . . . . . . . . . . . . . . . . . . . . . 49

● Batchprogramma voor RealTerm en Wisp648 (in Pass-through-mode) . . . . . . 07 ● Voltmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 08 ● Oscilloscoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 09 ● Frequentiemeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51 54 54 56

●9


Microcontrollers Programmeren 10 11 12

● ● ●

Datasheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Simulatieprogramma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

DEEL 2 ● KENNIS HEBBEN VAN ELEKTRONICA, REKENKUNDIGE BEWERKINGEN . . 59

Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 01 ● Printplaat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

● Alternatieve methode zonder PCB en met een microcontroller . . . . . . . . . . . 02 ● Statische elektriciteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 03 ● Weerstanden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Kleurcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

● Rekenen met weerstanden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 04 ● Condensatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 05 ● Wet van Ohm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 06 ● Talstelsels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Andere talstelsels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 07 ● Rekenkundige bewerkingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

60 60 60

61 62 63 63 66

DEEL 3 ● FOUTZOEKEN (DEBUGGING) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 01 02

● ●

Programmeer problemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Hardware problemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

DEEL 4 ● WERKEN MET JAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

● JAL – taal afspraken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● JAL – standaard opdrachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Commentaar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● 1. Variabelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 01 02

● 10

69 69 69 69 72

Count (Binnen array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Constanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Long table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

2. Manipulatoren en getal generatoren . . . . . . . . . . . . . . . . . . . . . . . . 74

Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Dice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Enable_digital_io() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

3. Voorwaarden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

If then else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77


INHOUDSOPGAVE

03

Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

4. Herhaal commando’s (lussen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

For loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

using . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

exit loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Forever loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Repeat until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Loop while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Functie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

In-line assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

● Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Een aantal overige JAL opdrachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Opdrachten voor de microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84 84 84

Pragma: instellen microcontroller Fuses . . . . . . . . . . . . . . . . . . . . . . . . . . 84

● Registers instellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 04 ● Handige opdrachten bij het programmeren . . . . . . . . . . . . . . . . . . . . . . . ● Led aan en uit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85 86 86

Nibble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Pin aanwijzing per nibble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Pinstatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Poorten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Spatie op een LCD display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Tussenvariabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Verkorte notering pinstatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Wachten op een signaal van buiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Word naar byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

Word naar byte(2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

● Byte naar word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 05 ● ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 06 ● Opbouw van een JAL-programmeeropdracht . . . . . . . . . . . . . . . . . . . . . .

89 90 90

● 11


Microcontrollers Programmeren 07 08

● ●

Programmeren met duidelijk commentaar . . . . . . . . . . . . . . . . . . . . . . . . 92 Algemene aanwijzingen en ‘denk eraan’ –herinneringen . . . . . . . . . . . . . 93

HET PROGRAMMEREN MET JAL . . . . . . . . . . . . . . . . . . . . . . . . 95 ● SPELEN MET LEDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opdracht 1 ● Twee leds om de beurt aan en uit . . . . . . . . . . . . . . . . . . . . . . . . ● De software: opdracht nr. 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

DEEL 1

Programmeren met de PICKit3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

De Wisp648 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

● 12

Economischer programmeren bij de ledbalk . . . . . . . . . . . . . . . 104

De software: opdracht nr. 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

De software opdracht nr. 3a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Toelichting op opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

Ledbalk met gebruik van ‘case’ en een counter . . . . . . . . . . . . . 120

De software: opdracht nr. 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

Ledbalk met gebruik van ‘case’ en een drukknop . . . . . . . . . . . 127

De software: opdracht nr. 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Opdracht 6

Ledbalk oplopend aan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Opdracht 5

De software: opdracht nr. 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Opdracht 4

95

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Opdracht 3

95

Opdracht 2

95

Twee kleuren led wordt driekleuren led . . . . . . . . . . . . . . . . . . 137

De software: opdracht nr. 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137


INHOUDSOPGAVE

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

DEEL 2 ● PROGRAMMEREN MET ANDERE LIBRARIES . . . . . . . . . . . . . . . . . . . . . . 140 Opdracht 7

Hexadecimale counter naar terminal (RealTerm) . . . . . . . . . . . 140

De software: opdracht nr. 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

De programmeeropdracht voor de PICkit3 . . . . . . . . . . . . . . . . . . . . . . . 141

De programmeeropdracht voor de Wisp648 . . . . . . . . . . . . . . . . . . . . . . . 143

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

Opdracht 8

Een zin naar de Terminal van RealTerm . . . . . . . . . . . . . . . . . . 146

De print library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

De software: opdracht nr. 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

Opdracht 9

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Opdracht 10

Tekst van Terminal naar microcontroller en terug (1) . . . . . . . 155

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

Tekst van Terminal naar microcontroller en terug (2) . . . . . . 158

De software: opdracht nr. 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

Opdracht 12

De software: opdracht nr. 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

Opdracht 11

Tekens van Terminal naar microcontroller en terug . . . . . . . . . . 150

De software: opdracht nr. 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

Alleen cijfers van Terminal naar microcontroller en weer terug 162

De software: opdracht nr. 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

● 13


Microcontrollers Programmeren

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Opdracht 13

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Aansturen met cijferkeuzemenu in RealTerm . . . . . . . . . . . . . 172

De software: opdracht nr. 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Opdracht 15

Alleen tekst van Terminal naar microcontroller en weer terug . 167

De software: opdracht nr. 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Opdracht 14

Aansturen met letterkeuzemenu in RealTerm . . . . . . . . . . . . . 181

De software: opdracht nr. 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

DEEL 3 ● ANALOOG NAAR DIGITAAL CONVERSIE (ADC) . . . . . . . . . . . . . . . . . . . 189 Opdracht 16

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

Verder met de toelichting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

Truncate oplossen met printen/formatteren . . . . . . . . . . . . . . 199

De software: opdracht nr. 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Opdracht 18

● 14

Knippertijd van een led regelen met ADC . . . . . . . . . . . . . . . . 189

De software: opdracht nr. 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

Opdracht 17

ADC hoge en lage resolutie en de library bijwerken . . . . . . . . 206

De software: opdracht nr. 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215


INHOUDSOPGAVE

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

Opdracht 19

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

Function en ADC en delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

De software: opdracht nr. 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

Shift operator (bits verschuiven) en ADC en delay . . . . . . . . . 237

De software: opdracht nr. 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

5 drukknoppen op één pin en ADC met lage resolutie . . . . . . . 243

De software: opdracht nr. 24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Opdracht 25

Procedure-out en ADC en delay . . . . . . . . . . . . . . . . . . . . . . . 228

Opdracht 24

De software: opdracht nr. 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Opdracht 23

De delay opdrachten bij ADC inkorten . . . . . . . . . . . . . . . . . . 225

Opdracht 22

De software: opdracht nr. 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Opdracht 21

ADC en delaytijden op 5 niveaus met 5 druknoppen . . . . . . . . 216

De software: opdracht nr. 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Opdracht 20

ADC met hoge resolutie en 5 drukknoppen op één pin . . . . . . . 259

De software: opdracht nr. 25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

● 15


Microcontrollers Programmeren

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

Opdracht 26

ADC met potmeter (of random) en niveau-indicator . . . . . . . . 268

De software: opdracht nr. 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

DEEL 4 ● HET 7-SEGMENT-DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Opdracht 27

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Twee led displays met teller tot 100 . . . . . . . . . . . . . . . . . . . . 281

De software: opdracht nr. 28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

Opdracht 29

Het zeven segment led-display . . . . . . . . . . . . . . . . . . . . . . . . 277

De software: opdracht nr. 27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

Opdracht 28

Twee led displays met scoreteller en reset . . . . . . . . . . . . . . . 296

De software: opdracht nr. 29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

DEEL 5 ● LIQUID CRISTAL DISPLAY (LCD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Opdracht 30

● 16

LCD-scherm aansturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

De software: opdracht nr. 30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

Opdracht 31

Looptekst naar links en rechts op het LCD-scherm . . . . . . . . . 312

De software: opdracht nr. 31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

Opdracht 31a Looptekst naar links op de 2e regel . . . . . . . . . . . . . . . . . . 315

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317


INHOUDSOPGAVE

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Opdracht 31b Looptekst naar links op 1e regel . . . . . . . . . . . . . . . . . . . . 317

De software: opdracht nr. 31b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

Opdracht 31c Looptekst naar rechts op de 1e regel . . . . . . . . . . . . . . . . . 319

De software: opdracht nr. 31c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

Opdracht 31d Looptekst naar rechts op de 2e regel . . . . . . . . . . . . . . . . . 322

De software: opdracht nr. 31d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

Opdracht 32

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

De Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

LCD met ADC en een progress balk . . . . . . . . . . . . . . . . . . . . . 326

De software: opdracht nr. 33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

Opdracht 34

LCD met teller en progress balk . . . . . . . . . . . . . . . . . . . . . . . 323

De software: opdracht nr. 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

Opdracht 33

LCD met ADC, LDR en een progress balk . . . . . . . . . . . . . . . . . 329

De software: opdracht nr. 34. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

DEEL 6 ● PULS BREEDTE MODULATIE (PWM) . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

Inleiding PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

● 17


Microcontrollers Programmeren Opdracht 35

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

● 18

Motortje met ADC en PWM aansturing . . . . . . . . . . . . . . . . . . 349

De software: opdracht nr. 38 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

PWM en geluid: een pieptoon . . . . . . . . . . . . . . . . . . . . . . . . 356

De software: opdracht nr. 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

PWM en geluid met drukknop . . . . . . . . . . . . . . . . . . . . . . . . . 359

De software: opdracht nr. 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

Opdracht 41

Een motortje aansturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

Opdracht 40

De software: opdracht nr. 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

Opdracht 39

PWM1 en PWM2 (met ADC) . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Opdracht 38

De software: opdracht nr. 36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Opdracht 37

PWM en procentueel een led dimmen (= lage resolutie) . . . . . 335

Opdracht 36

De software: opdracht nr. 35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

PWM: een lichtgevoelige schakelaar met led en geluid . . . . . . 361

De software: opdracht nr. 41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363


INHOUDSOPGAVE

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

DEEL 7 ● REGISTERS VAN DE DATASHEET GEBRUIKEN . . . . . . . . . . . . . . . . . . . . 365 Opdracht 42

PWM2 op pin_b3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

Het CONFIG3H register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

De software: opdracht nr. 42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

Opdracht 43

PWM en Timer 0 interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

Het T0CON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

Het INTCON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

De software: opdracht nr. 43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376

Opdracht 44

Poort B interrupt on change . . . . . . . . . . . . . . . . . . . . . . . . . . 376

Het INTCON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

Het INTCON2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

De software: opdracht nr. 44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

Opdracht 45

Poort B external interrupt op B0, B1 en B2 . . . . . . . . . . . . . . . 383

Het INTCON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

Het INTCON2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

Het INTCON3 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

De software: opdracht nr. 45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

Opdracht 46

De microcontroller op 48.000.000 Hz . . . . . . . . . . . . . . . . . . . 390

Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

De software: opdracht nr. 46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

● 19


Microcontrollers Programmeren

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

DEEL 8 ● GEHEUGENCHIPS EN GEGEVENS OPSLAAN MET I2C . . . . . . . . . . . . . . . . 394

● ● ● ● ●

Geheugenopbouw . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extern geheugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C verbinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Geheugen aansturen . . . . . . . . . . . . . . . . . . . . . . . . . . De opdrachten voor de geheugenchip . . . . . . . . . . . . . . . Opdracht 47 ● De geheugenchip 24LC1025-DIP vullen .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

394 395 395 396 398 400

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406

Controle van de opslag op de geheugenchip . . . . . . . . . . . . . . 406

De software: opdracht nr. 48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

De geheugenchip vullen met een array . . . . . . . . . . . . . . . . . . 410

De software: opdracht nr. 49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

Controle van de array-opslag op de geheugenchip . . . . . . . . . 414

De software: opdracht nr. 50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

De geheugenchip vullen met een getallen array . . . . . . . . . . . 418

De software: opdracht nr. 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422

De Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

Opdracht 52

● 20

. . . . . .

Opdracht 51

. . . . . .

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

Opdracht 50

. . . . . .

Opdracht 49

. . . . . .

De software: opdracht nr. 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

Opdracht 48

. . . . . .

Controle van de array opslag op de geheugenchip . . . . . . . . . 426


INHOUDSOPGAVE

De software: opdracht nr. 52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

De Hardware: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Opdracht 53

De geheugenchip vullen vanuit een bestand . . . . . . . . . . . . . . 431

Gegevensbestand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Van word naar 2 bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

Van 2 bytes naar word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

De software: opdracht nr. 53 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

De Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

Opdracht 54

Controle van het opgeslagen bestand in de geheugenchip . . . . 445

De software: opdracht nr. 54 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

DEEL 9 ● EEN SERIËLE HARDWARE VERBINDING . . . . . . . . . . . . . . . . . . . . . . . . 450

● ● ●

Een hardware RS232-verbinding met de MAX232 De opdrachten voor een RS232 verbinding . . . . . Voorbereidingen in RealTerm . . . . . . . . . . . . . . Opdracht 55 ● Een RS232 verbinding maken . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

450 453 454 454

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

De Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

Lezen en schrijven met een RS232 verbinding . . . . . . . . . . . . 457

De software: opdracht nr. 56 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

Opdracht 57

. . . .

De software: opdracht nr. 55 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

Opdracht 56

. . . .

De geheugenchip schrijven en lezen met RS232_hw . . . . . . . . 460

De software: opdracht nr. 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462

● 21


Microcontrollers Programmeren

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

Opdracht 58

De geheugenchip alleen lezen met RS232_hw . . . . . . . . . . . . 464

De software: opdracht nr. 58 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

DEEL 10 ● COMMUNICATIE VIA USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

● ●

Inleiding USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 De opdrachten voor USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 Opdracht 59 ● USB en RealTerm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

De software: opdracht nr. 59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

Opdracht 60

USB: met toetsenbord opdrachten geven . . . . . . . . . . . . . . . . 474

De software: opdracht nr. 60 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

● AFSLUITING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

● 22


VOORBEREIDINGEN

● VOORBEREIDINGEN Met een microcontroller kun je allerlei handelingen automatiseren. Deze handelingen maak je met de editor van JAL. Na het maken moet het programma vervolgens in de microcontroller worden geladen. Hiervoor is software nodig en communicatie-hardware. Welke microcontroller? In de voorbeelden wordt overal de microcontroller PIC 18f4455 van Microchip gebruikt. Dit is een microcontroller met veel pinnen en dus veel ingebouwde mogelijkheden. Dit geeft de mogelijkheid veel te experimenteren zonder andere microcontrolleren aan te schaffen. Ook is er de mogelijkheid om in-circuit te communiceren met behulp van een terminalprogramma op de computer via ‘serial software’ (d.w.z. er zijn mogelijkheden om met de processor te communiceren terwijl het programma in de processor aanstaat), terwijl via de hardware seriële verbinding (RS232) de mogelijkheid om 2 microcontrollers te koppelen ook aanwezig is. Na het programmeren van de microcontroller kan deze worden losgekoppeld en zelfstandig gebruikt. Het programma blijft in de processor ook als de voeding wordt uitgezet. Een andere belangrijke reden om voor de 18f4455 te kiezen is de mogelijkheid om via USB met een computer te communiceren. Dit is van belang als je een geprogrammeerde microcontroller ergens hebt ingebouwd en toch over de mogelijkheid wil beschikken om de microcontroller met een computer te laten communiceren. De ‘serial software aansluiting’ is in die situatie namelijk vaak niet meer te gebruiken. Communicatie via de COM-poort van de computer is (bijna) geen optie meer omdat die poort op de meeste computers/laptops niet meer aanwezig is. De kenmerken van de 18f4455 De 18f4455 heeft 40 pinnen. De meeste pinnen hebben meerdere namen die aangeven waarvoor de pin is te gebruiken. Met de software beslis je welke mogelijkheid van de pin je gebruikt. De 18f4455 heeft de volgende mogelijkheden (tijdens het gebruik krijgen de namen betekenis): • • • • • • •

13 analoge ingangen RS232 hardware-communicatie USB communicatie - Hierdoor bestaat pin c3 niet. I2C communicatie (Inter-IC bus; informatie uitwisselen door een microcontroller (de master) en andere chips (de slaves)). 2 PWM aansluitingen een snelheid van 12 Mb/s Geheugen o Geheugenflash geheugen (programmageheugen) 12288 words (wat in dit geheugen staat blijft bewaard als de microcontroller uit staat)

● 23


Microcontrollers Programmeren

o RAM geheugen (geheugen voor de variabelen) 2048 bytes o EEPROM geheugen (wat in dit geheugen staat blijft bewaard als de microcontroller uit staat) 256 bytes Er zijn dus 35 pinnen voor invoer of uitvoer te gebruiken; de overige 5 pinnen zijn voor de voeding en resetten

Pingebruik Het gebruik van sommige pinnen ligt vast. Dit betekent dat we niet alle 40 pinnen zo maar kunnen gebruiken. Deze pinnen worden gebruikt voor specifieke functies: • • • • • • • • • • •

pin pin pin pin pin pin pin pin pin pin pin

● 24

1 11, 12, 31 en 32 13 en 14 16 17 18 23 24 25 = c6 26 = c7 38, 39 en 40

gebruikt door MCLR en reset gebruikt door de voeding gebruikt door het kristal pwm 2 pwm 1 gebruikt door USB alleen input alleen input RS232 TX hardware RS232 RX hardware gebruikt door de Programmer


DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S

DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S 01

Onderdelenlijst

Voor de experimenten in de rest van het boek is een boodschappenlijstje samengesteld. Het lijkt een grote lijst maar de kosten vallen mee. Afhankelijk van wat je al hebt, ben je ongeveer 100 euro kwijt of minder. Alle onderdelen zijn standaard-onderdelen, goed verkrijgbaar en vaker te gebruiken. Ga je een schakeling echt toepassen dan zal de voorraad onderdelen natuurlijk moeten worden aangevuld. Er wordt vanuit gegaan dat je over een computer beschikt. Basisgereedschap zoals een soldeerbout, striptang, schroevendraaiers e.d. wordt ook verondersteld aanwezig te zijn. Let wel op: de soldeerbout moet een elektronica-exemplaar zijn, want anders worden de onderdelen te heet.

Basisonderdelen

• • •

Microcontroller 18f4455 Insteek bord (Breadboard) 3 ontstoringscondensatoren van 100 nF (Nano Farad)op elke hoek van het insteekbordje en 22 µF afvlak (stabilisatie) condensator rechtsonder Een kristal van 20 MHz met de twee bijbehorende condensatoren van 20 pF (pico Farad) Twee weerstanden van 33 K ohm en 10 K ohm en de condensator van 100 nF aan pen 1 (MCLR) Een set aansluitdraden voor een insteekbordje

• • •

Programmer

Lees eerst het hoofdstuk ‘Programmer’ om een keuze te maken Voeding: adapter

• •

Kant en klare 5 Volt adapter: bijvoorbeeld de standaard voeding voor de Raspberry PI een standaard 12 Volt gelijkstroom adapter

Of • • • • • • •

je wilt zelf aan de slag: Adapter 15V ⎓ en 0.8 A gelijkstroom of adapter 25 V ~ en 1 A wisselstroom Koelpasta TOOL-HEAT-PASTE-01 Spanningsregelaar 7805 en 7812 met koelplaat TO220 13.5 K/W HEATSINK-08 C1, C4, C5, C8 = 2200 µF/35 V (zie tekst) Bij wisselstroom is ook nodig: Bruggelijkrichter 100 V / 1 A - DIODE-BRIDGE-500-DIP Printplaat C2, C3, C6, C7 = 100 nF

● 25


Microcontrollers Programmeren

Voor de ‘alles-in-een-werkplek’ (als je die wilt gaan toepassen)

een behuizing (kastje) van ongeveer 25 cm x 15 cm bijvoorbeeld de ‘Fibox TA241911 Wandbehuizing 240 x 191 x 107 ABS Grijs (RAL 7035)’ • • • • • • • • •

● • • • • • • • • • •

voor noodgevallen: de resetknop: o drukknop-maak miniatuur schakelaar aan/uit potmeter 10K en knop potmeter 1K en knop miniatuur schakelaar-om chassisdeel-ingang voor de adapter een kroonsteentje, waarin je de 12 V draden vastzet om kortsluiting te voorkomen (als je de aansluiting niet gebruikt) montagedraad die in het insteekbord past o kleur zwart (geeft de ‘-‘ aan) o kleur rood (geeft de ‘+’ aan) o en nog minimaal 2 andere kleuren om de draden door te voeren naar buiten zijn led houdertjes prima geschikt: je plakt hem vast en de draden schuren niet meer langs scherpe randen. Geschikt is bijvoorbeeld de ‘LED-5MM-MOUNT-(10)’ van Voti weerstand van 180 ohm Ingangsversterker voor WinOscillo

2x weerstand 10K 1 weerstand van 1K 2x condensator 1µF 1 condensator tantaal 2x 1N4148 Potentiometer met draaiknop 220K (voor grof afstelling) Potentiometer met draaiknop 1K (voor fijn afstelling) IC µA741 of LM312 met voetje Plug aan “UI’ voor de ingang van het geluid van de computer (groene aansluitbus) Twee testpennen of mini test-clips met bijbehorende aansluitingen Onderdelenlijst voor de opdrachten

Opdracht 1 • 2 leds • 2 weerstanden 330 ohm Opdracht 2 en 3 • Een ledbalk van 12 leds • 12 weerstanden van 330 ohm

● 26


DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S

Opdracht 3a • Buzzer van 5 V Opdracht 4 en 5, 7 t/m 15 • 5 miniatuur drukknoppen • 5 weerstanden van 10K Opdracht 6 • Een twee kleuren led (of meer) Opdracht 7 • Een com-poort kabel (recht(straight – niet gekruist) of een ‘Prolific USB to Serial port kabel’ (lees hiervoor eerst het hoofdstuk ‘Programmer’) • In ieder geval heb je een D-sub9 chassisdeel male zoals afgebeeld nodig. Dit chassisdeel moet male zijn vanwege de eventuele Prolific aansluiting. De adapter is onder andere te koop bij www.microkloon.nl. Deze website verkoopt alleen aan particulieren.

Afbeelding 1 D-SUB Female 9 pin com-poort

Opdracht 16 t/m 26 • Potmeter 10K (zit in kastje) • Schakelaar met middenstand (zit in kastje) • 6 weerstanden van 10K • 6 weerstanden van 100K • 6 weerstanden van 1K Opdracht 27 • 7 segment display uno common anode • 7 weerstanden van 180 ohm Opdracht 28 en 29 • Duo 7 segment display common anode • 2 transistors BC327-25 • 2 weerstanden 1K • 3 miniatuur drukknoppen • 3 weerstanden 10K • 7 weerstanden 120 Ω

● 27


Microcontrollers Programmeren

Opdracht 30 t/m 33 • Hd44780 lcd-display 2 rijen 16 karakters (zichtbaar van de 32) • Weerstand 10 ohm • een keramische ontstoringscondensator van 0.1 µF of 0.01 µF • een stuk lintkabel of installatiekabel met 4 draden en massieve kern en niet gevlochten en de juiste dikte voor het insteekbordje • een instelpotentiometer van 5K zit in kastje Opdracht 34 • LDR Opdracht 35 en 36 • Al aanwezig Opdracht 37 en 38 • TC4427A • Gelijkstroommotortje Max 18 Volt Opdracht 39 t/m 41 • Luidspeaker • Weerstand 100 ohm Opdracht 42 t/m 46 • Buzzer al aanwezig Opdracht 47 t/m 54 • Memory chip 245LC 1025 • 2 weerstanden 10 K Opdracht 55 t/m 58 • Chip MAXIM MAX232 • 5 elektrolytische condensatoren van 1 µf • Stukje printplaat met gaatjes • als de computer geen D-Sub 9 pins aansluiting heeft: PCI Express kaart – Serieel 9 pins + RS232 kabel (let op female of male zie tekst) of • chassis deel Seriële D-Sub 9pins female of male (zie tekst) en • Prolific PL2303, USB-A naar RS232 kabel Opdracht 59 en 60 • Condensator 220 nF

● • •

In het algemeen is nodig:

Een kleurcode tabel: Kleurcodesleutel PM-01 Vitrometer. krimpkous (dit wordt verkocht in verschillende diktes; je schuift het over de

● 28


DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S

soldeerverbinding en maakt het warm met een aansteker waardoor het krimpt en de verbinding verstevigd wordt en tegelijk goed is geïsoleerd) gaatjesbord, 2.54 mm raster, soldeerstrips aan 1 kant van 10 x 16 cm) en een kraspen in plaats van een print etsen o.a. bij Voti

Een andere manier om goedkoop aan leuke onderdelen te komen is de plaatselijke rommelmarkt. Op de elektronica afdelingen zijn vaak voor weinig geld usb-uitbreidingsinsteekkaarten te koop waar je de connectoren inclusief bedrading af kunt slopen. Verjaardagskaarten met een muziekchip zijn ook te (her)gebruiken. 02

Programma JAL

JAL is een Nederlands programma en ontwikkeld door Wouter van Ooijen en de afkorting staat voor Just Another Language. Deze programmeertaal lijkt in geen enkel opzicht op de machinetaal die een microcontroller kan lezen. De opdrachten in JAL worden door een compiler omgezet naar de machinetaal. Hoe groter het verschil tussen de opdrachten in de programmeertaal en de voor een leek moeilijk leesbare machinetaal des te makkelijker is die programmeertaal te begrijpen. Bij JAL is het verschil heel groot en daarom wordt JAL een hogere programmeertaal genoemd. Het programma JAL bestaat dus uit een editor (tekstverwerker) en een compiler. JAL zelf is geschreven in de programmeertaal Python, maar dat is voor de gebruiker niet belangrijk. De compiler van JAL zet opdrachten om naar een .hex file. Om de .hex file in de microcontroller te laden is een ‘Programmer’ nodig. De ‘Programmer’ bestaat uit een print die de gegevens uit de .hex file in de microcontroller laadt. In dit boek wordt de PICkit hiervoor gebruikt. De compiler maakt van de ingevoerde programmeer-opdracht ook een assembler-file die kan worden gebruikt in andere programmeer-opdrachten. JAL kan deze assembler-files namelijk ook inlezen en dat scheelt dus typewerk. Hierdoor is JAL een breed in te zetten programma. Een asm-file kun je openen met ‘Notepad’ (Kladblok) en dan kun je zien wat de compiler van JAL gedaan heeft: de ingetypte JAL-opdrachten zijn omgezet in assembler-taal. Interessant om te weten maar we doen er verder niets mee in dit boek. Ook de gemaakte hex-file kan in Notepad worden bekeken. Ook deze is interessant om te bekijken, maar ook hiermee doen we verder niets. Deze file is alleen belangrijk voor de Programmer.

Windows installatie van JAL

Het makkelijkst is het om JAL als een geheel pakket te downloaden van http://www.justanotherlanguage.org/downloads Je kiest nu jallib_full-1.5.0.exe. Dit is de laatste versie voor publicatie van dit boek. De naam van dit bestand lijkt over libraries te gaan, maar het is een volledige installatie van de editor, de compiler en de libraries.

● 29


Microcontrollers Programmeren

Na het downloaden dubbelklik je op het exe-bestand. Kies voor de installatie van de Jallib Libraries + Compiler en JalEdit. Op het volgende scherm wordt de installatie directory ‘JallibWorkpalace’ gekozen en dat is niet zo duidelijk: er vindt een volledige installatie plaats. Verander daarom de installatieplek in C:\JALProgram. De map wordt automatisch aangemaakt en alle verwijzingen aangepast. Verder zijn geen veranderingen nodig en de installatie verloopt vanaf nu automatisch. Kies aan het eind van de installatie ervoor om een desktop icon te maken. De installatiebestanden worden dus niet zoals bij andere installaties in Program Files gezet. Tijdens de installatie werd op de C-schijf een map ‘JALProgram’ gemaakt. In deze map staan de sub mappen met o.a. de JAL editor, libraries, de compiler en een map met voorbeelden ‘samples’. De snelkoppeling op het bureaublad start de JALEditor op vanuit C: \JALProgram\JalEdit. Als je op de hoogte wilt blijven van de nieuwste versies van de libraries ga je naar de eerder genoemde website.

Instellingen JALEditor

Als de JALEditor is gestart, worden een paar instellingen aangepast. • Ga naar Tools – Editor Preferences o 1e tab: General – vak: Editor Special Options - Zet Tab Width ingesteld op 0 - Smart Tabs - uitvinken - Auto Indent Lines – blijft aangevinkt - Sluit het scherm af met OK - Open ‘Editor Preferences’ opnieuw en zet Tab Width = 3 o 3e tab Backup – Backup files on Save - Vink aan ‘Date Time stamp + Filename’ - Kies ‘Date Time Format’: yyyy-mmm-dd-hh.nn= o Oké o Continue application Om de programmeercode overzichtelijk te houden, wordt tekst regelmatig ingesprongen. Het is standaard om dan 3 spaties in te springen. Om dit inspringen tijdens typen makkelijker te maken is de tabsprong op 3 spaties ingesteld. Ook worden er nu automatisch back-ups gemaakt van het programmeerwerk. De datum-instellingen van JALEditor is de Amerikaanse schrijfwijze. Dit is veranderd in de Nederlandse notatie. De notatie ‘yyyy’ geeft aan dat het jaartal in 4 cijfers wordt weergegeven. De notatie ‘mmm’ geeft aan dat de eerste drie letters van de maand worden weergegeven. Er komt een foutmelding na ‘Oké’. Als je klikt op ‘continue application’ gaat het programma gewoon door.

● 30


DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S

Instellingen JALEditor 2

Controleer de instellingen voor de bijbehorende programma’s. Ga naar: • Tools – Environment Options • In de tab “General’ staan de verwijzingen die JAL nodig heeft. Je hoeft niets te veranderen als je geen wijzigingen hebt aangebracht. Pas dit anders aan.

Afbeelding 2 Instellingen Tab ‘General’

Tab ‘JAL’ Hier hoef je niets aan te passen. Er staat slechts 1 vinkje en dat is meestal standaard al ingevuld.

Afbeelding 3 Instellingen Tab ‘JAL’

● 31


Microcontrollers Programmeren

Tab ‘Programmer’ Deze tab wordt alleen ingevuld als de Wisp648 is gekozen. Linux installatie

De installatie op een Linux-computer gaat op een andere manier. Ga voor een Linux installatie als volgt te werk: • • • •

Ga naar de website http://www.justanotherlanguage.org/content/jallib/tutorials/tutorial_installation Scrol een stukje naar beneden Volg de instructies op

03

De Programmer

Voor de communicatie tussen JAL en de microcontroller heb je een Programmer nodig. Er zijn verschillende Programmers te koop. Het makkelijkst werkt een ICSP (In Circuit Serial Programmer). De Programmer kan de PIC programmeren, terwijl deze in de opgebouwde schakeling blijft. De microcontroller hoeft dus niet uit de schakeling en in een andere programmeerschakeling geplaatst om te worden geprogrammeerd. Dit werkt snel en zorgvuldig en de kans op beschadigen van de microcontroller is nihil. De keuze van de Programmer hangt onder andere af van de laptop of computer die je gebruikt. De Programmer PICkit heeft een USB aansluiting. De Wisp648 heeft een aansluiting voor een Com-poort. Veel computers hebben de Com-poort aansluiting niet meer; laptops hebben ze bij hoge uitzondering. Gebruik je een computer dan kun je overwegen een insteekkaart met twee com-poorten te kopen als de computer nog een leeg PCI-slot heeft. Gebruik je een computer, die je niet wilt open maken dan kun je een ‘USB to RS-232 converter’ kabel kopen. In de kabel is een Prolific chip ingebouwd die voor de aanpassing naar een USB-poort van de computer zorgt. Gebruik je een laptop dan kun je geen insteekkaarten inbouwen en heb je altijd een Prolific-kabel nodig.

Afbeelding 4 Com poort

Mogelijkheid 1: de PICkit3 van Microchip

Microchip levert een goede Programmer. Het is een ICSP (In Circuit Serial P. De PICkitof 3 werkt met eigen software en kan niet worden aangestuurd vanuit de JALEditor zoals de Wisp648.

● 32


DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S

De PICkit3 heeft een USB mini-B connector en moet naar USB 2.0 van de computer. Dit is een standaard kabel en wordt bijna altijd meegeleverd bij de bestelling. Ondanks de benodigde eigen software is dit de meest gebruiksvriendelijke oplossing.

Afbeelding 5 PICkit 3

De voeding kan door de USB-aansluiting worden verzorgd maar het aantal mA is dan beperkt. Beter is de PICkit3 op de voeding van de microcontroller aan te sluiten. De aansluitingen van de PICkit 3 1 2 3 4 5 6

= = = = = =

MCLR/VPP VDD Target VSS (ground Target) PGD (ICSPDAT) PGC (ICSPCLK) PGM – wordt niet aangesloten

De software voor de PICkit 3 De PICkit 3 heeft eigen software die je kunt downloaden van de website van MicroChip: De ’Through PICkit 3 Programmer Application’. De bijbehorende handleiding ‘Programmer Application User’s Guide’ kun je ook downloaden van de website. Na de introductie van de PICkit 4 is de software voor de PICkit 3 verplaatst naar het archief van Microchip en vanaf daar te downloaden. De compiler in de JALEditor maakt een hex-file. Deze hex-file moet worden ingelezen in de software van de PICkit 3 en vervolgens in de microcontroller geladen. Er zijn zoals eerder aangegeven wat extra handelingen nodig. Als de software is geopend, zijn de volgende instellingen belangrijk: • Menu o o

File - Met ‘Import Hex’ kies je de hex-file die je wilt laden. - De laatste vier files die je hebt geopend, worden zichtbaar en kun je snel herladen met Control + 1, 2, 3 of 4. Device family Met ‘Baseline’ zie je microcontrollers die niet automatisch kunnen worden herkend. De overige microcontrollers worden automatisch herkend.

● 33


Microcontrollers Programmeren

o Programmer Alleen aanvinken: - Verify on Write - Clear Memory Buffers on Erase Leuk om te weten: - Write on PIC button – als je de button op de PICkit 3 indrukt, wordt de hex-file geladen. Dit is alleen handig als je meer processors met dezelfde hex-file moet laden. - Alert sound Je kunt geluiden instellen bij bepaalde handelingen van de software als auditieve feedback. o Tools - Target Vdd Source • Auto-Detect - Check communications De communicatie tussen de PICkit3 en de microcontroller wordt gecontroleerd. Bij de 16F505 krijg je de mededeling: PICkit3 connected (Parts in this family are not auto-detected). Dit betekent dat je via ‘Device Family – Baseline’ de 16F505 handmatig moet kiezen. Op het scherm staat halverwege aan de rechterkant: • Vdd Target – check. Hiermee controleer je de spanning van de microcontroller. Dit gebruik je als je de PICkit3 even hebt losgekoppeld. Dit voorkomt een foutmelding bij het laden van de hex-file. • Eronder staat een snelbutton ‘Auto Import Hex + Write Device. Je krijgt hetzelfde scherm als bij ‘File – Import Hex’. De hex-file wordt nu ook meteen geladen in de microcontroller. Bij sommige processors wordt een update van de hex-file automatisch direct geladen. De werkwijze van de PICkit3 is nu heel simpel: je laadt een hex-file en kiest: ‘Write’ of gebruikt de snelbutton. Het is mogelijk om ook de data en/of clock pin te programmeren. Dit wordt pas uitgevoerd door de microcontroller als de PICkit3 wordt losgekoppeld. Ben je niet tevreden en verander je je programma dan moet je na het aansluiten van de PICkit3 eerst ‘Vdd Target – Check’ toepassen om een foutmelding te voorkomen. Wil je later ook andere programmeertalen gebruiken dan maakt die bijbehorende editor en compiler ook een hex-file. De PICkit3 kan deze hex-file ook lezen en is hierdoor veelzijdig. Microchip heeft de standalone software al in het archief gezet. Daarom leg ik ook uit hoe de eigen ontwikkelomgeving: MPLAB X van Microchip te gebruiken is. Als je deze software installeert, kun je kiezen de programmeer-unit MPLAB IDE te installeren (MPLAB IDE) of de Programmer software MPLAB IPE. De PICkit 3 kan niet zonder aanpassingen gebruikt worden in de software van MPLAB IPE. De standaardinstelling van de PICkit 3 is voor de PICkit 3 standalone software zoals hierboven beschreven. In de MPLAB IPE geeft de software daarom de foutmelding dat de

● 34


DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S

‘connection’ niet gelukt is. De PICkit3 moet worden aangepast. Aanpassen voor MPLAB IPE: • • • • • • • • • • •

Start de PICkit 3 in de PICkit 3 software Zorg dat de PICkit 3 is aangesloten Open het menu ‘Tools’ Kies ‘Revert to MPLAB mode’ OK In het venster komt de melding dat de PICkit 3 is ‘converted’ OK en sluit af Open MPLAB IPE o Sluit de PICkit 3 niet aan Kies ‘Advanced’ Kies ‘Power settings’ o 5 Volt o Vink uit: ‘Power target circuit from MP3’ Sluit de PICkit 3 aan

Instelling in software: • •

LVP disabled – de microcontroller werkt goed en zelfstandig LVP enabled – de microcontroller werkt alleen als de PICkit 3 is aangesloten en de computer aan is

Terugzetten naar PICkit 3 software: • • • • • • • •

Start de PICkit 3 software Sluit de Picket 3 aan De PICkit 3 wordt herkend maar geeft een foutmelding (PICkit 3 is in MPLAB mode) Open het menu ‘Tools’ Kies ‘Download PICkit Operating System’ Kies in het scherm ‘Open PK 3 OS file’: o C:\Program Files (x86) – Microchip – PICkit 3 o Kies ‘PK3OSVO20005.hex’ o ‘Openen’ In het scherm wordt de voortgang beschreven: o Download PICkit 3 Operating System’ o Download succesfull o Reconnected o PICkit 3 connected o PIC Device found Sluit programma af en open het programma opnieuw

● 35


Microcontrollers Programmeren

Mogelijkheid 2: de PICkit4 en de SNAP van

In 2020 is de PICkit 4 door MicroChip vrijgegeven. Deze versie vereist de MPLAB IPE software, die onderdeel is van de MPLAB X IDE software. Een paar maanden later kwam de volgende upgrade: de SNAP. De SNAP-Programmer werkt alleen met Low Voltage microchips en is daardoor niet te gebruiken met de PIC 18F4455.

Mogelijkheid 3: De Wisp648 en XWisp (de software)

De grondlegger van JAL levert ook een Programmer: de Wisp648. Het is ook een ICSP (In Circuit Serial Programmer). De Programmer kan vanuit JAL worden aangestuurd met een menu icoon en dat werkt heel snel. De aansluiting kan zowel op de com-poort van de computer of laptop en met een ‘USB to RS-232 converter’ kabel op een USB-aansluiting. Zoek voor de kabel op Internet op: ‘Prolific USB to Serial port kabel’ of ’usb to rs232 serial port adapter with Prolific’. WISP is een afkorting van: Wouters In System flash PIC Programmer. Dit is dus ook een Nederlands product en ontwikkeld door Wouter van Ooijen. Op zijn website ‘www.voti.nl’ kun je kiezen tussen een gemonteerde versie van de Wisp648 of een bouwpakket. De ‘Wisp648 Programmer’ verricht dezelfde handelingen als de PICkit 3 maar kan vanuit de JALEditor worden aangestuurd: • • •

nadat een programmeeropdracht is gegeven in JAL zet de Wisp648 de microcontroller in de programmeerstand hierna laadt de Wisp648 het programma in de microcontroller en zet na afloop de programmeerstand van de microcontroller weer uit.

Zelf afbouwen van de Wisp648 is geen probleem, want op de website is een zeer uitgebreide handleiding voor zelfbouwers te vinden. Als je kiest voor zelfbouwen, monteer dan een stukje zwart montage draad (de min-aansluiting) en een stukje rood montagedraad (de plus-aansluiting) op de plek van de led als je de ‘alles-in-een-werkplek’ gaat gebruiken (zie verderop). De stekker en bedrading naar de microcontroller worden meegeleverd in het Voti-pakket.   De COM-poort voor de Wisp648 Voordat we de instellingen van de Programmer kunnen aanpassen in de JALEditor moeten we weten welke COM-poort van de computer door de USB-aansluiting van de Wisp648 gebruikt wordt. De beschrijving hieronder is voor Windows. • •

Sluit eerst de Wisp648 op de voedingsspanning aan Ga in Windows naar o Configuratiescherm – Apparaat beheer – Poorten (COM & LTP) o Sluit de Wisp648 aan op de computer met de ‘USB to RS-232 converter’ kabel en kijk welke poort erbij komt

● 36


DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S

o Er komt een vermelding met Prolific en het nummer van de communicatie poort bijvoorbeeld COM3. o De verbinding gaat dan dus via COM3

Afbeelding 6 Vaststellen welke COM-poort wordt gebruikt

Wijzigen van het nummer van een COM-poort Soms heeft de microcontroller of een programma een bepaald nummer nodig. Natuurlijk geeft de automatische toewijzing niet altijd het nummer dat je nodig hebt. Je kunt het nummer van de COM-poort handmatig wijzigen. Dit gaat als volgt: 1. 2. 3. 4. 5. 6. 7. 8.

Ga naar ‘Apparaatbeheer’ Ga naar ‘Poorten (COM & LPT) Kies de poort die je wilt veranderen en klik hierop met rechts Klik op ‘Eigenschappen’ In de tab ‘Algemeen’ kies je ‘Instellingen wijzigen’ Vul je ‘Administrator-wachtwoord’ in Ga naar de tab ‘Poortinstellingen’ en kies ‘Geavanceerd’ In het volgende scherm kun je linksonder de Com-poort veranderen

Op deze manier kun je een poort-toewijzing ook eerst veranderen zodat de poort vrijkomt voor jouw toepassing. De XWisp software De ‘XWisp’ software op de website www.voti.nl is oorspronkelijk de software voor de eerdere hardware Wisp628 van de Programmer, maar werkt ook prima bij de Wisp648. Let wel op want er is ook de software ‘Wisp’ en die is alleen in DOS te gebruiken. De software ‘XWisp’ versie 1.41 maakt gebruik van de programmeertaal Python en wordt in de download meegeleverd. Download de software en maak in ‘JALProgram’ een map ‘XWisp’. Start het gedownloade bestand en kies als bestemming de map C:\JALProgram\XWisp. De JALEditor en de Wisp648 moeten nu worden ingesteld om te kunnen samenwerken. Ga hiervoor in de JALEditor in de menubalk naar:

● 37


Microcontrollers Programmeren

Tools – Environment Options • Tab ‘Programmer’ Verander de opdrachten zoals in de afbeelding aangegeven. Pas indien nodig het nummer van de Com-poort aan. o 1e vak: C:\JALProgram\XWisp\xwisp.exe m.b.v. het map-icon o 2e vak: port com3 wait err go %F

Afbeelding 7 Programmer bij het gebruik van XWisp

Nu weet JAL waar de software van de Wisp648 staat en ook onder welke condities de programmeer-instructies naar de microcontroller moeten worden gestuurd. De aansluitingen van de Wisp648 naar de microcontroller 18f4455 Aansluitingen Wisp648 voor de microcontroller 18f4455 Pin Kenmerk Wit 38 PGM Groen 39 PGC Blauw 40 PGD Geel 1 MCLR Zwart - GND 0 Volt Vss Rood + Spanning 5 Volt VDD

of VCC

Mogelijkheid 4: van eenvoudig tot uitgebreid

Op de website van http://www.justanotherlanguage.org/ is ook een zelfbouw Programmer te vinden. Op Internet kunnen ervaren hobbyisten andere kant en klare Programmers en schema’s voor zelfbouw Programmers vinden. Kijk goed of er een link wordt gemaakt naar bijbehorende software en of het een ICSP Programmer (In Circuit Serial Programmer) is.

● 38



books books

books

Microcontrollers Programmeren In dit boek gebruiken we JAL (Just Another Language) om de PIC-microcontroller te programmeren in 60 oefeningen. JAL is makkelijk in gebruik en is een goede basis om programmeren in andere talen snel te leren. Na het lezen en toepassen van de voorbeelden in dit boek kan iedereen die zich hierin serieus heeft verdiept met behulp van JAL zelf de microcontroller aansturen. Je leert onder meer het programmeren van timers, analoog/digitaal omzetters, comparators, pulsbreedte regeling voor motoren en geluid, LED- en LCD-scherm aansturing, USB-connectie en communicatiemogelijkheden met computers of andere microcontrollers. Ook weet je aan het eind van het boek wat je moet doen om nu nog onbekende mogelijkheden te gaan toepassen. Met deze kennis kan iedereen van beginner tot meer gevorderde zijn creativiteit vorm geven in projecten met microcontrollers. Wil je verder met leren programmeren dan legt dit boek ook een zeer goede basis. Wie goed met JAL overweg kan en zich de gestructureerde wijze van denken heeft aangeleerd, zal de stap naar andere programmeertalen zoals Python, C++ enz. kunnen maken. Ook het programmeren van minicomputers zoals de Raspberry Pi en Arduino zijn mogelijkheden.

Peter Zwart is een gepensioneerd leraar van een school voor kinderen met leer- en opvoedingsmoeilijkheden. Na de opheffing van dit onderwijs volgde hij een managementopleiding en vervolgde zijn loopbaan als interim-directeur. Al heel jong was hij geïnteresseerd in elektronica en bouwde versterkers. Bij het aanleren van de programmeertaal JAL was zijn conclusie dat weinig documentatie compleet is. Met zijn didactische kennis probeert hij met dit boek hier verandering in te brengen.

Elektor International Media BV www.elektor.com

Microcontrollers Programmeren Leer PIC-microcontrollers programmeren met JAL in 60 lessen

• Peter Zwart

Om te starten is geen kennis van elektronica nodig. Wie niets weet van elektronica, krijgt overal in het boek de noodzakelijke kennis aangereikt. Alle belangrijke en benodigde informatie staat in de tekst

Microcontrollers Programmeren

Leer PIC-microcontrollers programmeren met JAL in 60 lessen

Peter Zwart

Zwart.indd All Pages

23/03/2021 09:59:47


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.