Arduino cursus

From SPAD-it Wiki
Jump to: navigation, search

Dit is een bewerking van het materiaal horende bij een Chineese Arduino-learning kit. Het materiaal is prima, maar de learning kwaliteiten zijn maar matig; projecten worden gepresenteerd als recepten zonder uitleg. Ook lijkt de volgorde van de projecten didactische weinig doordacht. Het is de bedoeling om de projecten een voor een door te lopen, waarbij je het meeste leert als je met elk project wat speelt. Bij elk project staan suggesties wat je extra zou kunnen proberen.

In principe wordt voor het Arduino platform gebruik gemaakt van de programmeertaal C++. Dit is de taal C, uitgebreid met object orientatie. Het is niet nodig om dit nu al te beheersen, maar voor extra informatie moet je dus zoeken op C en C++.

Arduino

Het Arduino project is begonnen in Italie waar een klein team een eenvoudig standaard bordje maakte voor een ATMEL microcontroller chip. Een microcontroller is eigenlijk een klein computertje met een klein beetje geheugen aan boord en vooral met technisch handige aansluitingen waarmee signalen kunnen worden ingelezen en apparaten bestuurd kunnen worden. Het mooie van Arduino is dat het zo ontworpen is dat niet alleen dit aansluiten erg gemakkelijk is gemaakt, maar ook het programmeren van het bordje. Het echte werk wordt vervolgens gedaan door de microcontroller chip, die dus ontworpen is door ATMEL. Arduino staat overigens niet op zichzelf; er zijn andere projecten, sommigen ouder, die vergelijkbare platformpjes hebben ontwikkeld, zoals [Wiring] en [Fritzing]. Tussen de oorspronkelijke vrienden die Arduino zijn begonnen boterd het overigens niet meer; het blijkt dat een van de teamleden er met het geld vandoor is gegaan.

Het hele Arduino project is open source wat erop neer komt dat niet alleen de hardware ontwerpen, maar ook de code van de Arduino ontwikkelomgeving software openbaar zijn en ook door anderen gebruikt mogen worden. Dat wordt dan ook veelvuldig gedaan.

Arduino team 2.jpg
Vanaf links: Gianluca Martino, David Mellis, David Cuartielles, Tom Igoe en Massimo Banzi

Projecten

Project 1: Kickstart

  • Installeren van de Arduino software
  • Aansluiten van de Arduino op de PC
  • Een (eenvoudig) programma maken, uploaden en op de Arduino laten werken
  • De Arduino werkt nu ook zelfstandig!

Project 2: Verkeerslicht

  • Iets meer programmeren
  • De delay() functie

Project 3: Communiceren met de PC

  • Introductie van het Serial object
  • Gebruik van de Serial monitor

Project 4: LED looplicht

  • Meer programmeren
  • Seriele communicatie helpt bij debugging

Project 5: LED reageert op knopje

  • Aansluiten knopje
  • Pin configureren voor digitale input
  • Stand van knopje uitlezen

Project 6: Active Buzzer (met knop)

  • Een buzzer in plaats van een LED!

Project 7: PWM

  • Hoe, wat en waarom van PWM
  • LED dimmer

Project 8: RGB LED

  • Meerdere kleuren maken
  • HSL licht model
  • Gebruik van een functie binnen de software

Project 9: Passive buzzer

  • Programmeren van loops
  • tone() functie
  • Commando's vanaf de PC sturen

Project 10: Het 1602 LCD Display

  • Tekst uitvoeren naar een LCD display

Project 11: Analog Value Reading

  • Gebruik van analoge ingangen
  • Automatische AD-Conversie
  • Gemeten signaal omzetten naar spanning
  • LET OP int en float

Project 12: Allerlei sensoren

  • Licht meten met een LDR
  • Vlammen detecteren met een IR flame sensor
  • Temperatuur meten met een NTC/Thermistor
  • Temperatuur meten met een LM35 temperature sensor
  • Gas sensor
  • Luchtdruk sensor
  • Water flow sensor
  • Temperatuur meten met een Pt100
  • Luchtvochtigheidssensor (en temperatuur sensor)

Project 13: 1-digit LED Segment Display

  • Aansturen van een LED display; tonen van een cijfer
  • Gebruik van patronen
  • Gebruik van array's

Project 14: 4-digit LED Segment Display

  • Eigenschappen van een Segmented LED display
  • Tonen van meerdere cijfers, onzichtbaar snel achter elkaar

Project 15: Temperatuur meten met de digitale DS18B20 sensor

  • Digitale meting met 1-wire communicatie
  • Meerdere sensoren koppelen

Project 16: Een digitale clock

  • De actuele datum / tijd instellen en uitlezen met een clock module
  • Communicatie met I2C met behulp van de Wire.h library
  • Met het display van project 11 maakt het een clock

Project 17: Infrarood afstandbediening

Project 18: Een joystick

  • Leuk invoer apparaat!

Project 19: Een servo

  • Bestuur hem met de joystick

Project 20: De stappenmotor

  • Hoe wat en waarom van een stappenmotor
  • Besturen met een sensor
  • Besturen met de joystick

Project 21: De PIR bewegingsmelder

  • Gebruik en opties van de PIR bewegingsmelde

Project 22: Een tilt sensor

  • Meting van het Ja/Nee type
  • Wachttijden, dempen met weerstand/condensator

Project 23: Een 3 assige versnellingsmeter (ADXL345)

  • Meerdimensionale digitale sensor

Project 24: Minder output pins nodig met een shift register

Project 25: Een 8x8 RGB LED Matrix aansturen

  • Probleem van te veel outputs oplossen met een driver

Project 26: Werken met NeoPixels (WS2812)

  • Introductie in NeoPixels

Project 27: GPS ontvanger

Project 28: Rotary Encoder

  • Rotary Encoder in plaats van Potmeter
  • Timer interrupt

Project 29: Dingen aansturen met meer power / DC Motor

Project 30: Gebruik micro SDcard / gegevens opslaan


  • LED Driver
  • Weergave op een TFT/LCD schermpje
  • Lichtnet bedienen met een relais
  • Lichtnet (230V AC) uitlezen (aan/uit)
  • Zonnepaneel (doormeten en gebruiken - ook als lichtsensor te gebruiken)
  • RFID module
  • Ultrasonic (distance) sensor HC-SR04
  • Demultiplexer 74154
  • OpAmp
  • Interrupt afhandeling (externe interrupts/timer interrupts)
  • Arduino's praten met elkaar
  • De Arduino via seriele poort laten praten met een (Delphi) programma op de PC/laptop
  • ZigBee en Philips Hue
  • Laag energieverbruik / lange batterijduur
  • Camera

More then Arduino

LED driver LM3914

NodeMCU / ESP8266

Instrumentele versterker: OpAmp