22/02/16 Arduino Introduktion till Arduino Historia Organisation - Ekosystem ANDERS J JOHANSSON Hårdavara Mjukvara Kringkomponenter Tips Demos! Microcontroller - Embedded systems Inbyggda system Processing Arduino Hardware Software + IDE (Integrated Development Environment) Open source Mjukvara Hårdvara Java-environment Kretsscheman GPL CAD-filer (Eagle-cad) C/C++ bibliotek Creative Commons Licens LGPL Share alike Attribution 1
22/02/16 Det enkla blev komplicerat Arduino.org Arduino.cc Arduino hårdvara Arduino finns i flera varianter, inklusive kloner Arduino UNO I/O Reset Prog. USB USB USB Xtal LED13 LED ON TX/RX LEDs Ceramic resonator Serial Microcontroller Vin I/O USB ATMEGA 328P 2
22/02/16 Arduino pins vs. Atmega 328 Inside the microcontroller Inside the CPU Arduino: språket Structure setup() loop() Digital I/O pinmode() digitalwrite() digitalread() Analog I/O analogreference() analogread() analogwrite() Control Structures if if...else for switch case while do... while break continue return goto Variabler Data Types void (0) boolean (1B) char (1B) unsigned char (1B) byte (1B) int (2B) unsigned int (2B) word (2B) long (4B) unsigned long (4B) short (2B) float (4B) double (4B) string - char array String object array Vad som inte finns: Mycket minne Multi-threading 3
22/02/16 Kolla upp om ni använder en annan version! I/O portar 6 Analoga ingångar 14 digitala I/O 6 st med PWM utgång (3,5,6,9,10,11) Buss-stöd Till exempel för I2C/TWI Board I2C / TWI pins Uno, Ethernet A4 (SDA), A5 (SCL) I2C/TWI (A4, A5) Mega2560 20 (SDA), 21 (SCL) SPI (10,11,12,13) Leonardo 2 (SDA), 3 (SCL) TTL serial (USB och 0,1) Due 20 (SDA), 21 (SCL), SDA1, SCL1 Externa interrupt (2,3) LED (13) PWM Motorer Pulse Width Modulation Använd PWM Kräver filtrering för att bli en likspänning Lägg till diod som skydd för inducerad ström Lågpassfilter (R-C) Ögat Tröghet i en motor Använd en transistor för att styra strömmen (Imax = 20mA) Demo Servo electrical interface 10-bit successive approximation ADC 1-2 ms pulse width Features 50 Hz pulse frequency 10-bit Resolution 1.5 ms is middle 0.5 LSB Integral Nonlinearity ± 2 LSB Absolute Accuracy 13-260µs Conversion Time Up to 76.9kSPS (Up to 15kSPS at Maximum Resolution) Adafruit.com 4
22/02/16 Ekvivalent analog ingång External Vref analogreference() DEFAULT INTERNAL EXTERNAL Optimized for source impedance <=10 kohm No internal filtering (Nyquist) ADC=(Vin/Vref)*1024 Fsample <= 10 khz Shields OBS! 1.0 < AREF < VCC Två olika varianter (->2012, 2012->) shields är dotterkort till Arduino. Använder kontakterna längs kanten Finns i hundratals olika varianter Motorstyrning Finns i flera olika varianter Avancerade tekniker Minneshantering Likströmsmotorer Interrupts Servon Spara energi Stegmotorer Välj efter Antal motorer Storlek på motorer Typ av motorer Sömn-läge Sensorer Extern spänning till motorerna? 5
22/02/16 Von Neumann vs. Harward arkitektur Minnen i Arduino Flash för program >10k skrivcykler (write/erase) SRAM för data Statisk data Heap Stack SRAM memory map Von Neumann Ett minne för både program och data. Harward Skilda minnen för program och data. EEPROM för annan datalagring >100k skrivcykler (write/erase) Minnesstorlekar Använding av Heap och Stack Följande använder mycket minne : SD-kort Flerfärgade lysdioder Displayer Globala variabler (static data, heap) Använd små typer Olika datatyper använder olika mängd minne. Använd så små typer som möjligt. Interrupts i Arduino Timer-genererade Timer 0, 1, 2 State-change på en interrupt-ingång Pin 2: Interrupt 0 Pin 3: Interrupt 1 Att någon av an grupp ingångar växlar värde 6
22/02/16 Interrupt Service Routine Interrupts: att tänka på http://www.engineersgarage.com/ Interrupt-rutinen stänger av alla andra interrupt Interrupt-rutinen kan inte använda interrupt! (I2C etc.) Interrupt kan hända när som helst! Disable interrupts när det är nödvändigt Se över datalagring, använd om nödvändigt volatile variables. Timer 0,1,2 används redan av andra rutiner: Timer 0: millis(), micros(), delay(), PWM (5,6) Timer 1: Servos, PWM (9,10) Timer 2: Tone, PWM (11,13) Andra bibliotek kan också använda timers Spara ström Fritzing Ändra klockfrekvensen Möjligt att stänga av olika delar av mikrocontrollern ADC SPI och I2C/TWI UART SERIAL (USB) Timer 0, 1, 2 Sleep Narcoleptic: Vaknar igen efter en bestämd tid AVR/Sleep.h : Vaknar på ett externt interrupt Arduino simulator: 123d.circuits.io Atmel studio 7 Supports code in C C++ Assembly www.atmel.com/avr 7
22/02/16 Webbadresser Den viktigaste arduino.cc Webb-kurser learn.adafruit.com learn.sparkfun.com Utvecklingsmiljöer processing.org fritzing.org 123d.circuits.io Resurser att leta delar Google.com adafruit.com sparkfun.com Svenska återförsäljare electrokit.se lawicel.se elfa.se farnell.se 8