Top Banner
ARDUINO NAPLNO Adam Hořčica Vojtěch Suk
47

Arduino naplno (Arduino Day 2015)

Jul 15, 2015

Download

Technology

Adam Hořčica
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Arduino naplno (Arduino Day 2015)

ARDUINO NAPLNOAdam Hořčica

Vojtěch Suk

Page 2: Arduino naplno (Arduino Day 2015)

Kdo jsme

Arduino * Wiring AVR * C

Adam Hořčica Vojtěch Suk

Page 3: Arduino naplno (Arduino Day 2015)

Co nás čeká?

HWSW

Page 4: Arduino naplno (Arduino Day 2015)

SW NAPLNO

Page 5: Arduino naplno (Arduino Day 2015)

Arduino IDE

• Aktuálně 1.6.1 (březen 2015)

– Novinky v 1.6.0

• Rychlejší kompilace, autodetekce COM portu, čísla řádků, CLI, podpora pro více HW platforem, …

– Detekce „neautorizovaných desek“

• Ano je to „IDE“, ale…

– Editor

Page 6: Arduino naplno (Arduino Day 2015)

Externí editor

Page 7: Arduino naplno (Arduino Day 2015)

Organizace Sketch

• Organizace na disku

• [dir] sketch

–sketch.ino

–settings.ino

–utils.ini

Stejné jméno

Page 8: Arduino naplno (Arduino Day 2015)
Page 9: Arduino naplno (Arduino Day 2015)
Page 10: Arduino naplno (Arduino Day 2015)
Page 11: Arduino naplno (Arduino Day 2015)

#line 1 "sketch.ino„#include "Arduino.h" void setup();void loop();void led_setup();void led_on();void led_off();#line 1 void setup() {

led_setup();}void loop() {

led_on();delay(1000);led_off();delay(1000);

}#line 1 "settings.ino" const int LED = 13;#line 1 "utils.ino" void led_setup() {

pinMode(LED, OUTPUT);}void led_on() {

digitalWrite(LED, HIGH);}void led_off() {

digitalWrite(LED, LOW);}

Page 12: Arduino naplno (Arduino Day 2015)

Organizace Sketch – co dál

• Preprocessing není spolehlivý

– Pouze deklarace funkce

• Skatch nemusí obsahovat jen *.ino

– Používejte klasické *.cpp/*.h soubory

Page 13: Arduino naplno (Arduino Day 2015)

Arduino IDE CLI

arduino [FILE.ino…]

arduino [--verify|--upload] [--board package:arch:board[:parameters]]

[--port portname] [--pref name=value] [-v|--verbose] [FILE.ino]

Např.:arduino --upload /path/to/sketch/sketch.ino

Alternativně:

make

https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc

Page 14: Arduino naplno (Arduino Day 2015)

Jiné IDE

• Eclipse

– Pro arduino (http://www.baeyens.it/eclipse/index.html)

• AVR Studio

– Atmel procesory

– Postavené nad VS

• Visual Pro Micro

– Pro VS a AVR Studio

Page 15: Arduino naplno (Arduino Day 2015)

CodeBender

https://codebender.cc/

Page 16: Arduino naplno (Arduino Day 2015)

PROGRAMOVÁNÍ

Wiring

Page 17: Arduino naplno (Arduino Day 2015)

Mnoho textu „škodí“

• Při spuštění se data programu (proměnné) kopírují do RAM

• Včetně “všeho textu”

Page 18: Arduino naplno (Arduino Day 2015)

Mnoho textu „škodí“

• Rešení: funkce F(…)

Serial.println(F(“Lorem ipsum”));

Page 19: Arduino naplno (Arduino Day 2015)

Delay

void loop() {

digitalWrite(13, HIGH);delay(1000);digitalWrite(13, LOW);delay(1000);

}

Page 20: Arduino naplno (Arduino Day 2015)

int ledState = LOW;

unsigned long last = 0;

void loop()

{

unsigned long now = millis();

if(now - last >= 1000) {

last = now;

if (ledState == LOW) ledState = HIGH;

else ledState = LOW;

digitalWrite(13, ledState);

}

… něco užitečného …

}

Page 21: Arduino naplno (Arduino Day 2015)

Kooperativní multitasking

LED

• Je čas rozsvítit?

• Ano/Ne

Tlač.

• Zmáčknuto tlačítko?

• Ano/Ne

Serial

• Data z PC?

• Ano/ne

Page 22: Arduino naplno (Arduino Day 2015)

Stavový automat

• Rozdělit chování aplikace/části aplikace do stavů

• Knihovna FiniteStateMachine (Wiring)

Page 23: Arduino naplno (Arduino Day 2015)

„Chytrý“ blikač

Off

Blinking

Lerning

Lerning Done

Page 24: Arduino naplno (Arduino Day 2015)

DEMO TIME

Page 25: Arduino naplno (Arduino Day 2015)

„Debuger“

• Výpis na Serial.println(myVariable);

#ifdef DEBUG#define TRACE(x) Serial.println(x); #else#define TRACE(x) #endif

Page 26: Arduino naplno (Arduino Day 2015)

Visual Pro Micro

• Rozšíření pro Visual Studio

– Funguje i v Community edition

– Placené

– Na forum se řeší port do Eclipse

• Umí „debugger“ bez externího HW

– Překlad + instrumentace

Page 27: Arduino naplno (Arduino Day 2015)
Page 28: Arduino naplno (Arduino Day 2015)
Page 29: Arduino naplno (Arduino Day 2015)

Skutečný debugger

• debugWire, JTAG

• ATmega328P Xplained Mini

• AVR Studio, GDB

Page 30: Arduino naplno (Arduino Day 2015)

Jak zrychlit?

• Arduino.h je univerzální…

• …ale pomalé

• Např. digitalWrite…

Page 31: Arduino naplno (Arduino Day 2015)

1) digitalWrite

#define output 2

void setup () {pinMode(output, OUTPUT);

}

void loop() {digitalWrite(output, HIGH);digitalWrite(output, LOW);

}

Page 32: Arduino naplno (Arduino Day 2015)

2) PORTD

Page 33: Arduino naplno (Arduino Day 2015)

2) PORTD

#define output 2

void setup () {pinMode(output, OUTPUT);

}

void loop() {while (1) {PORTD = (1<<PD2);PORTD = 0;

} }

Page 34: Arduino naplno (Arduino Day 2015)

HW NAPLNO

Page 35: Arduino naplno (Arduino Day 2015)
Page 36: Arduino naplno (Arduino Day 2015)

Vlastní shiled

• Rozšíření klasických Arduin (Uno, Mega, …)

• Výroba DPS

– CAD SW (Fritzing, Eagle, …)

– Knihovna pro shiledhttps://github.com/adafruit/Adafruit-Eagle-Library

Page 37: Arduino naplno (Arduino Day 2015)
Page 38: Arduino naplno (Arduino Day 2015)
Page 39: Arduino naplno (Arduino Day 2015)
Page 40: Arduino naplno (Arduino Day 2015)
Page 41: Arduino naplno (Arduino Day 2015)

Vlastní Arduino klon

• Minimální Arduino

– ATmega

– Napájení

– Reset

– Připojení k PC

– ISP

Page 42: Arduino naplno (Arduino Day 2015)
Page 43: Arduino naplno (Arduino Day 2015)
Page 44: Arduino naplno (Arduino Day 2015)
Page 45: Arduino naplno (Arduino Day 2015)

Co dál

„Pokud potřebujete asembler, použili jste málo výkonný procesor“ …

Page 46: Arduino naplno (Arduino Day 2015)

Kam dál?

Page 47: Arduino naplno (Arduino Day 2015)

while (audience.questionAvailable()) {

answer();

}

Serial.println(F(“ Děkujeme za pozornost”));