1 Jeremiah Teipen: Electronic Sandwich BSPR11 Lektion 6 / Analog Arduino Mogens Jacobsen / moja@itu.dk
Siden sidst 2 Har I fået nogle LEDs til at blinke? Har I brugt kontakter? Hvad har I eksperimenteret med siden?
Dagen i dag 3 Weird & Wild: Grupperne 7 & 8 + mogens Hvorfor afleverer I ikke W&W til Louise? Lektion 6 (AUD 3) Lidt omsummering fra sidst Breadboards Analog output Analog input Interim kursusevaluering Arduino (DesignLab)
Weird & Wild på bloggen 4 Grupperne 7 & 8 i dag Og fra Mogens Grupperne 9 & 10 til 24/3 Husk bloggen (send til Louise)
Breadboard 5
Trykknap: Logisk HIGH & LOW 6 HIGH Den letteste vej for strømmen er mellem +5V og Arduino in. (Den anden vej skal der passeres en stor modstand) LOW Her er den letteste vej for strømmen via modstanden.
Reed Relæ (en speciel kontakt) Digital input 7 En magnet kontakt
Digital output Optokobler f.eks 4N35 8 Optisk forbindelse mellem 2 kredsløb. Kan erstatte en knap på en anden dims (f.eks. legetøj). Uden at Arduino en og dimsen kobles elektrisk sammen (elektrisk isolerede). Ben 6 Den skal vende rigtigt! Ben 1 og 2 er en LED (styres fra Arduino) Ben 4 og 5 er lysfølsom kontakt (til dims)
Analog 9 Mange tilstande ikke kun HIGH/LOW (5v/0v) Antal af tilstande er opløsning (resolution) Udbredte opløsninger: 8-bit = 256 værdier (2 8 = 2x2x2x2x2x2x2x2) 16-bit = 65536 værdier (2 16 ) 32-bit = 4,294,967,296 værdier (2 32 )
Analog vs Digital 10 Værdi a c b d Tid
10-talssystem 11 2011 + 286 + 3 ----------
10-talssystem (decimal) 12 Hvordan virker 10-talsssystemet? 1 = 1 = 1x10 0 10 = 1x10 = 1x10 1 +0x10 0 11 = 1x10 + 1 = 1x10 1 +1x10 0 89 = 8x10 + 9x1 = 8x10 1 + 9x10 0 90 = 9x10 + 0x1 = 9x10 1 + 0x10 0 308 = 3x100 + 0x10 + 8x1 = 3x10 2 + 0x10 1 + 8x10 0 2011 = 2x1000 + 0x100 + 1x10 + 1x1
Det binære talsystem 13 0 = 0 1 = 1 = 1x2 0 10 = 2 = 1x2 1 +0x2 0 11 = 2+1 = 3 = 1x2 1 +1x2 0 1001 = 8+1 = 1x2 3 +0x2 2 +0x2 1 +1x2 0 1010 = 8+2 = 10 1011 = 8+2+1 = 11
1 byte = 8 bit 14 128 64 32 16 8 4 2 1 256 mulige kombinationer: Alle slukkede = 00000000 = 0 Alle tændte = 11111111 = 255 11111111 = 128+64+32+16+8+4+2+1 = 255
Analoge porte (pins) 15 Men hvor er analog ud? Analog ind
Analoge udgange 16 Analog ud bruger nogle af digital-ud benene. Mærket med PWM (3,5,6,9,10 og 11) Opløsning 8 bit (0-255)
PWM: Pulse Width Modulation Analog output 17 Analog ud har opløsning på 8 bit = 256 værdier (0-255) Rate/tidslig opløsning er fast på ca. 500Hz
Analog output PWM og Dæmpet LED 18 analogwrite(pinnummer, [0-255]);
Analog output PWM og Dæmpet LED 19 void loop() { for(int val= 0 ; val<= 255; val=val+5) { analogwrite(9, val); delay(50); } delay(1000); } Husk modstand foran LED
Analog output PWM og lyd 20 Piezo
Analog output PWM og servomotor 21 Servo motor Kører til en bestemt vinkel/position
Analoge indgange 22 Værdi[0-1023] = analogread(pinnummer) Arduino har 6 ADC indgange (ADC = Analog to Digital Converter) Læser spænding mellem 0 og 5 volt Opløsning er 10-bit (1024 værdier: 0-1023)
Analog input Brug af potentiometer 23
Andre modstande (variable) Analog input 24 Pot/potentiometer (drejekap) Bend/Flex LDR (lys) Tryk
Analog input Voltage divider 25 GND = 0v
Ultralyd sonar (afstand) 26 Giver en (analog) spænding afhængig af afstand til noget foran
Analog input Piezo (knock sensor) 27 Modstanden er vigtig
Analog input Accelerometer 28 Måler acceleration i 2 eller 3 akser Tyngdekraften er en acceleration Giver en analog spænding afhængigt af accelerationen
Hvad laver den? 29 Arduino en kan kommunikere med moder-computeren via USB kablet. serial communication Det kan være smart at vide hvad hvilke værdier en sensor sender tilbage. Derfor indsætter man under udviklingen - ofte kode, der sender informationer tilbage. Arduinos IDE har en Serial Monitor funktion, der åbner et vindue til kommunikationen. void setup() { } Serial.begin(9600); void loop() { Serial.println(analogRead(A0)); } Serial.begin(hastighed) initierer kommunikations-porten. Serial.print(værdi) sender værdien tilbage til modercomputeren Serial.println(værdi) gør det samme men tilføjer et linjeskift
Serial Monitor 30 Serial Monitor optager com/usb-porten. I kan derfor ikke sende et nyt program over i Arduino, så længe Serial Monitor er åben.
Resten af dagen 31 1 Eksperimenter med PWM ud Fade LEDS Piezo lyd 2 Eksperimenter med sensorer Piezo knockers Flex sensors (kvitter hos hjælpelærer) Sonar (kvitter hos hjælpelærer) Accelerometre (kvitter hos hjælpelærer) Planlæg brug af Arduino i jeres design-opgave
Til næste gang 32 Design projekt: Planlæg brug af Arduino. Hvilke detalje vil I skitsere? Hvad skal I bruge af udstyr? (digital ind / digital ud / analog ind / analog ud). Læs (igen) Goldschmidt: The Backtalk of self-generated sketches