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

Arduino naplno (Arduino Day 2015)

Embed Size (px)

Citation preview

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”));