Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Arduino naplno (Arduino Day 2015)

1,150 views

Published on

Přednáška z #ArduinoD15 na @plzenskybarcamp

Demo (slide 25): https://github.com/ah01/arduino-stuff/tree/master/smart-blink

Published in: Technology
  • Be the first to comment

Arduino naplno (Arduino Day 2015)

  1. 1. ARDUINO NAPLNO Adam Hořčica Vojtěch Suk
  2. 2. Kdo jsme Arduino * Wiring AVR * C Adam Hořčica Vojtěch Suk
  3. 3. Co nás čeká? HWSW
  4. 4. SW NAPLNO
  5. 5. 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
  6. 6. Externí editor
  7. 7. Organizace Sketch • Organizace na disku • [dir] sketch –sketch.ino –settings.ino –utils.ini Stejné jméno
  8. 8. #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); }
  9. 9. Organizace Sketch – co dál • Preprocessing není spolehlivý – Pouze deklarace funkce • Skatch nemusí obsahovat jen *.ino – Používejte klasické *.cpp/*.h soubory
  10. 10. 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
  11. 11. 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
  12. 12. CodeBender https://codebender.cc/
  13. 13. PROGRAMOVÁNÍ Wiring
  14. 14. Mnoho textu „škodí“ • Při spuštění se data programu (proměnné) kopírují do RAM • Včetně “všeho textu”
  15. 15. Mnoho textu „škodí“ • Rešení: funkce F(…) Serial.println(F(“Lorem ipsum”));
  16. 16. Delay void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }
  17. 17. 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 … }
  18. 18. Kooperativní multitasking LED • Je čas rozsvítit? • Ano/Ne Tlač. • Zmáčknuto tlačítko? • Ano/Ne Serial • Data z PC? • Ano/ne
  19. 19. Stavový automat • Rozdělit chování aplikace/části aplikace do stavů • Knihovna FiniteStateMachine (Wiring)
  20. 20. „Chytrý“ blikač Off Blinking Lerning Lerning Done
  21. 21. DEMO TIME
  22. 22. „Debuger“ • Výpis na Serial.println(myVariable); #ifdef DEBUG #define TRACE(x) Serial.println(x); #else #define TRACE(x) #endif
  23. 23. 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
  24. 24. Skutečný debugger • debugWire, JTAG • ATmega328P Xplained Mini • AVR Studio, GDB
  25. 25. Jak zrychlit? • Arduino.h je univerzální… • …ale pomalé • Např. digitalWrite…
  26. 26. 1) digitalWrite #define output 2 void setup () { pinMode(output, OUTPUT); } void loop() { digitalWrite(output, HIGH); digitalWrite(output, LOW); }
  27. 27. 2) PORTD
  28. 28. 2) PORTD #define output 2 void setup () { pinMode(output, OUTPUT); } void loop() { while (1) { PORTD = (1<<PD2); PORTD = 0; } }
  29. 29. HW NAPLNO
  30. 30. Vlastní shiled • Rozšíření klasických Arduin (Uno, Mega, …) • Výroba DPS – CAD SW (Fritzing, Eagle, …) – Knihovna pro shiled https://github.com/adafruit/Adafruit-Eagle-Library
  31. 31. Vlastní Arduino klon • Minimální Arduino – ATmega – Napájení – Reset – Připojení k PC – ISP
  32. 32. Co dál „Pokud potřebujete asembler, použili jste málo výkonný procesor“ …
  33. 33. Kam dál?
  34. 34. while (audience.questionAvailable()) { answer(); } Serial.println(F(“ Děkujeme za pozornost”));

×