1 of 112

Circuit Playground

Express

2 of 112

Wer?

Florian ‘overflo’ Bittner��Softwareentwickler seit ca 1993�Microcontroller seit ca 2005

Papa von 3

�Gründunsmitglied des Hackspaces metalab in Wien

3 of 112

Ziele des Workshops

  • Die Angst vor dem Unbekannten überwinden
  • Grundlagen der Programmierung begreifen
  • Übersicht über Hardware und Software
  • Begriffserklärungen “Fachsprech -> Deutsch”
  • Anstiftung zur Selbsthilfe = Wonach googlen?!
  • Ur viel Spass am Gerät haben

4 of 112

Was wir in heute NICHT schaffen werden..

  • umfangreiche Programmierfähigkeiten vermitteln
  • detaillierte Einblicke in die Welt der Elektronik liefern
  • ein Informatik/Elektrotechnik/Mechatronik-Studium ersetzen

Der circuit playground ist simpel, aber es gibt rundherum SOOOOOO viel zu entdecken..

5 of 112

Circuit Playground Express?

  • ist eine Physical Computing Platform
  • ist Open Source
  • besticht durch seine einfachen Konzepte
  • Kann im Browser mit Blockly programmiert werden

6 of 112

Was tut es?

Microcontroller werden eingesetzt um Dinge in der greifbaren Welt mit einem Computer zu steuern oder aber Sensoren als Eingabegeräte zu nutzen (I/O)

7 of 112

zB

8 of 112

9 of 112

10 of 112

BOARDS

11 of 112

Circuit Playground Express - Damit basteln wir heute

12 of 112

Das Hirn, ein ATMEL ATSAMD21 - ARM Microcontroller

13 of 112

2 Buttons - Kann man drücken

14 of 112

Slider - Kann man nach links oder rechts schieben

15 of 112

Buzzer - So eine Art Lautsprecher der Bleep Bloop Geräusche machen kann.

16 of 112

Temperatursensor - Ich glaub der ist hin :/

17 of 112

Accelerometer - Cooler Sensor die Orientierung wiedergibt

18 of 112

Infrarot Emitter - sendet Infrarot Licht / Signale

19 of 112

Infrarot Receiver - empfängt Infrarot Signale / Kann auch als Distanzsensor verwendet werden

20 of 112

Mikrofon

21 of 112

Touch input

22 of 112

10 RGB Leds

23 of 112

Batterie / Akku Anschluss

24 of 112

Päuschen

25 of 112

Boards (eine sehr kurze Übersicht)

Arduino UNO

26 of 112

Boards (eine sehr kurze Übersicht)

Der Erste..

27 of 112

Boards (eine sehr kurze Übersicht)

Leonardo

28 of 112

Boards (eine sehr kurze Übersicht)

Zero (ARM)

29 of 112

Boards (eine sehr kurze Übersicht)

MEGA

30 of 112

Boards (eine sehr kurze Übersicht)

Android ADK

31 of 112

Boards (eine sehr kurze Übersicht)

Intel?!

32 of 112

Boards (eine sehr kurze Übersicht)

More Intel?!

33 of 112

Boards (eine sehr kurze Übersicht)

ROBOTS!

34 of 112

Boards (eine sehr kurze Übersicht)

Game console

35 of 112

Boards (eine sehr kurze Übersicht)

IOT

OpenWRT

36 of 112

Boards (eine sehr kurze Übersicht)

Gemma + Lilypad�Wearables

37 of 112

38 of 112

Boards (eine sehr kurze Übersicht)

39 of 112

..und das war nur ein Teil der OFFIZIELLEN Arduino Boards..

40 of 112

Teensy

ARM Cortex M0 - 32 Bit�Viel Speicher�Super Community

Umfangreiche Schnittstellen

41 of 112

NodeMCU

ESP8266�ur billig (2,-)

IOT

42 of 112

ESP32 - IOT Killerdings

ESP32�VIEL Ram / ROM�Mehr GPIOs�Schnittstellen

IOT �MicroPython!

43 of 112

44 of 112

Klone

Da alles Open Source ist, gibt es

SEHR BILLIGE Nachbauten von fast allen

ARDUINO ® © ™ Boards

Siehe http://aliexpress.com

45 of 112

PP

FRAGEN?

46 of 112

47 of 112

PP

PAUSE

48 of 112

Teil 2

Programmieren

49 of 112

Webeditor

https://makecode.adafruit.com/

50 of 112

Webeditor

51 of 112

Unser erstes Projekt!

Die einzelnen Funktionen�heissen eventuell anders wenn ihr einen deutschen Browser verwendet.

52 of 112

Light

53 of 112

in den “forever” loop schieben

54 of 112

Loop -> Pause

55 of 112

pause (1 Sekunde) in den loop einfügen

56 of 112

nochmal mit schwarz statt rot �CTRL-C / CTRL-V

57 of 112

PLAY!

58 of 112

Download

59 of 112

Speichern auf <CPLAYBOOT>

60 of 112

Bleibt das jetzt so?

Ja.�Das Programm ist jetzt fix am Flashspeicher�und auch ein ab/anstecken führt nicht zum Verlust der Daten.

61 of 112

Aufgabe!

Die LEDS sollen 2 Sekunden eine Regenbogen-Animation anzeigen.

Dann 1 Sekunde aus.

62 of 112

Lösung.

63 of 112

Conditions

Wenn Knopf A gedrückt wird schalte die Leds für eine Sekunde auf rot.

64 of 112

INPUT

65 of 112

Aufgabe!

Nicht den Knopf A drücken sondern ein lautes Geräusch soll die Led einschalten.

66 of 112

Lösung.

67 of 112

Loops (die grünen Blöcke)

Loops sind Blöcke die rund um Anweisungen �stehen.�zB “forever” aber es gibt auch Andere.

68 of 112

Aussenschleifen

69 of 112

Aufgabe

Wenn wir einschalten wollen wir dass die Leds grün sind für 1 Sekunde.��Danach für immer rot blinken.

Verwendet “on start” und “forever”

70 of 112

Lösung

71 of 112

Schleifen innen

72 of 112

Aufgabe

Wenn wir einschalten wollen wir dass die Leds 4 mal grün blinken.��Danach für immer rot blinken.

Verwendet “on start” und “forever”, “repeat”

73 of 112

Lösung

74 of 112

Aufgabe

Solange Button A gedrückt ist blinke die Leds rot.

Verwendet “forever” und “while”

75 of 112

Lösung

76 of 112

Was passiert hier?

77 of 112

Lösung

Konkurrierende Eventlistener sind zu vermeiden.

Unvorhersehbares Verhalten.�Besser: Alles in EINEM forever loop machen und in Eventlistenern Variablen setzen.

78 of 112

IF / THEN

Findet ihr unter LOGIC

79 of 112

Variablen

Enthalten einen Wert und können an unterschiedlichen Stellen verändert werden.

80 of 112

Variablen

81 of 112

Arrays / Listen

Elemente die mehrere Werte enthalten können.

82 of 112

Aufgabe

Wir wollen dass die Led X millisekunden rot ist, dann 100 ms aus

für X nehmen wir 200,500,100,700,1000

Verwendet listen

83 of 112

Lösung

84 of 112

Console LOG

Kann Text oder Zahlen ausgeben, gut zum debuggen.

85 of 112

Aufgabe

Nehmt das letzte Programm und gebt euch den aktuellen Wert auf der console aus.

86 of 112

Lösung

87 of 112

Console

88 of 112

Console

Zusammenfassung gleicher logzeilen

89 of 112

Funktionen

Blöcke von Code den man an mehreren Stellen wiederverwendet

90 of 112

Funktionen

91 of 112

Aufgabe

Erstellt 2 Funktionen und ruft Sie auf.�Eine Funktion blinkt 1x grün (blinkGreen), die Andere 1x rot (blinkRed).

92 of 112

Lösung

93 of 112

Aufgabe

Erstellt eine Funktion “blink”

Diese akzeptiert 1 Parameter (Zahl)

if parameter = 0, blinke rot

if parameter = 1, blinke grün

if parameter = 2, blinke blau

94 of 112

Lösung

DRY�Don’t Repeat Yourself

95 of 112

YAY \o/

Wir sind mit den grundlegenden Konzepten fertig!�

Pause wem Pause gebührt.

96 of 112

Sounds

Es gibt einen Buzzer, der kann Töne machen und Melodien spielen.�

97 of 112

Sounds

“play sound until done” will man meistens�

98 of 112

Sounds

99 of 112

Sounds

100 of 112

Sounds

Warum geht das nicht?

101 of 112

Sounds

So gehts.

102 of 112

Touchinputs

Auf fast allen Pins!

Kalibrieren ist wichtig,�besonders wenn man�da noch Draht daran

montiert.�

103 of 112

Accelerometer

Es gibt eine Accelerometer, welches Lage/Beschleunigung misst.

104 of 112

Accelerometer - Aufgabe

Wenn wir das Board nach links neigen “power up” spielen.�Wenn wir es nach rechts neigen “power down” spielen.

105 of 112

Accelerometer

so

oder

so

106 of 112

Lichtsensor

Es gibt einen Lichtsensor, er misst Helligkeit.

107 of 112

“Netzwerk”

Das ist eine IR Led und ein Empfänger.�Damit kann man MINI Datenpakete austauschen.�

��

108 of 112

“Netzwerk”

Aufgabe 1: Baut ein Programm das “0” via IR schickt wenn man Knopf B drückt.

Aufgabe 2: Baut ein Programm dass den BA-DING sound spielt wenn es über IR etwas empfängt.

Das Programm besteht aus 2 Eventloops.

109 of 112

“Netzwerk”

Wir nehmen hier Button B weil man bei Button A die IR Led leicht mit dem Finger abdeckt beim drücken.�

��

110 of 112

“Netzwerk”

Baut ein Programm das eine Zahl schickt zwischen 0 und 3 wenn man Knopf B drückt.

Bei jedem drücken wird die nächst höhere Zahl geschickt.�Maximal 0-3, Niemals 4 oder höher.

Baut einen Empfänger der je nach dem was daher kommt eine andere Farbe anzeigt.�

0=rot, 1=grün, 2=blau, 3=gelb

111 of 112

Temperatur

Es gibt auch einen Temperatursensor.

Ich glaube er funktioniert nicht richtig :(

112 of 112

Aus.