aboutsummaryrefslogtreecommitdiff
path: root/assignments
diff options
context:
space:
mode:
Diffstat (limited to 'assignments')
-rw-r--r--assignments/Makefile5
-rw-r--r--assignments/Makefile.assignment8
-rw-r--r--assignments/blink-a-led/Makefile4
-rw-r--r--assignments/blink-a-led/blink-a-led.md39
-rw-r--r--assignments/blink-a-led/blink-a-led.pdfbin0 -> 703496 bytes
-rw-r--r--assignments/blink-a-led/schematic/assignment-1.fzzbin0 -> 21480 bytes
-rw-r--r--assignments/blink-a-led/schematic/assignment-1_bb.pdfbin0 -> 354599 bytes
-rw-r--r--assignments/blink-a-led/schematic/assignment-1_schem.pdfbin0 -> 263607 bytes
-rw-r--r--assignments/blink-a-led/solution/assignment-1/assignment-1.ino20
-rw-r--r--assignments/client1/client1.ino71
10 files changed, 147 insertions, 0 deletions
diff --git a/assignments/Makefile b/assignments/Makefile
new file mode 100644
index 0000000..c7ae828
--- /dev/null
+++ b/assignments/Makefile
@@ -0,0 +1,5 @@
+AS=01-blink-a-led
+
+BASEDIR=$(CURDIR)
+
+include $(patsubst %,%/Makefile,$(AS))
diff --git a/assignments/Makefile.assignment b/assignments/Makefile.assignment
new file mode 100644
index 0000000..d05662f
--- /dev/null
+++ b/assignments/Makefile.assignment
@@ -0,0 +1,8 @@
+all: $(DIR)/$(A).pdf
+
+$(DIR)/$(A).pdf: $(DIR)/$(A).md
+ @echo pandoc $(A).md
+ @cd $(DIR); pandoc $(patsubst $(DIR)/%,%,$<) -o $(patsubst $(DIR)/%,%,$@)
+
+clean:
+ @rm -f $(DIR)/$(A).pdf
diff --git a/assignments/blink-a-led/Makefile b/assignments/blink-a-led/Makefile
new file mode 100644
index 0000000..b015ec1
--- /dev/null
+++ b/assignments/blink-a-led/Makefile
@@ -0,0 +1,4 @@
+DIR=01-blink-a-led
+A=blink-a-led
+
+include $(BASEDIR)/Makefile.assignment
diff --git a/assignments/blink-a-led/blink-a-led.md b/assignments/blink-a-led/blink-a-led.md
new file mode 100644
index 0000000..f4b3fa1
--- /dev/null
+++ b/assignments/blink-a-led/blink-a-led.md
@@ -0,0 +1,39 @@
+# Assignment: Blink a led
+
+
+## Goal
+
+Check that your local environment is working properly.
+
+## Step 1
+
+Create this schematic:
+
+![](schematic/assignment-1_schem.pdf)
+
+![](schematic/assignment-1_bb.pdf)
+
+The colors on the wires used does not matter. The resistors
+orientation is not important, but the LED's orientation is important.
+
+## Step 2
+
+Implement `setup()` and `loop()`. In `setup()` configure the LED pin and blink the LED in `loop()`.
+
+Use these functions:
+
+~~~ .c++
+
+Serial.begin(115200);
+Serial.println(string);
+
+pinMode(pin, mode);
+digitalWrite(pin, state); // HIGH or LOW
+delay();
+
+~~~
+
+## Tips
+
+* It is useful to print a startup message just to see when the
+ application has started.
diff --git a/assignments/blink-a-led/blink-a-led.pdf b/assignments/blink-a-led/blink-a-led.pdf
new file mode 100644
index 0000000..de719fd
--- /dev/null
+++ b/assignments/blink-a-led/blink-a-led.pdf
Binary files differ
diff --git a/assignments/blink-a-led/schematic/assignment-1.fzz b/assignments/blink-a-led/schematic/assignment-1.fzz
new file mode 100644
index 0000000..da3ad5b
--- /dev/null
+++ b/assignments/blink-a-led/schematic/assignment-1.fzz
Binary files differ
diff --git a/assignments/blink-a-led/schematic/assignment-1_bb.pdf b/assignments/blink-a-led/schematic/assignment-1_bb.pdf
new file mode 100644
index 0000000..0995ece
--- /dev/null
+++ b/assignments/blink-a-led/schematic/assignment-1_bb.pdf
Binary files differ
diff --git a/assignments/blink-a-led/schematic/assignment-1_schem.pdf b/assignments/blink-a-led/schematic/assignment-1_schem.pdf
new file mode 100644
index 0000000..a5241b2
--- /dev/null
+++ b/assignments/blink-a-led/schematic/assignment-1_schem.pdf
Binary files differ
diff --git a/assignments/blink-a-led/solution/assignment-1/assignment-1.ino b/assignments/blink-a-led/solution/assignment-1/assignment-1.ino
new file mode 100644
index 0000000..5b72892
--- /dev/null
+++ b/assignments/blink-a-led/solution/assignment-1/assignment-1.ino
@@ -0,0 +1,20 @@
+const int LED_PIN = D0;
+
+void setup() {
+ Serial.begin(115200);
+ Serial.println();
+ Serial.println();
+ Serial.println("Hello world!");
+ pinMode(LED_PIN, OUTPUT);
+}
+
+void loop() {
+ digitalWrite(LED_PIN, HIGH);
+ Serial.println("HIGH");
+ delay(1000);
+
+ digitalWrite(LED_PIN, LOW);
+ Serial.println("LOW");
+ delay(1000);
+}
+
diff --git a/assignments/client1/client1.ino b/assignments/client1/client1.ino
new file mode 100644
index 0000000..39eabfe
--- /dev/null
+++ b/assignments/client1/client1.ino
@@ -0,0 +1,71 @@
+#include <ESP8266WiFi.h>
+#include <WiFiUdp.h>
+
+#include "config.h"
+
+WiFiUDP Udp;
+unsigned int localUdpPort = 5006;
+IPAddress host_ip(192, 168, 10, 151);
+unsigned int host_port = 5005;
+
+const int out_buf_len_start = 100;
+const int out_buf_len_increment = 100;
+const int out_buf_len_max = 2200;
+
+char buf[out_buf_len_max];
+int out_buf_len;
+
+static const char alphabet[] = "abcdefghijklmnopqrstuvxyz";
+
+unsigned long time_start, time_end;
+
+void setup() {
+ Serial.begin(115200);
+
+ Serial.printf("Connecting to %s ", wifi_ssid);
+ WiFi.begin(wifi_ssid, wifi_password);
+ while (WiFi.status() != WL_CONNECTED) {
+ delay(500);
+ Serial.print(".");
+ }
+ Serial.println(" connected");
+
+ Udp.begin(localUdpPort);
+ time_start = millis();
+ out_buf_len = out_buf_len_start;
+}
+
+void loop() {
+
+ if (millis() > (time_start + 1000)) {
+ for (int i = 0; i < out_buf_len; i++) {
+ buf[i] = alphabet[i % sizeof(alphabet) - 1];
+ }
+ out_buf_len += out_buf_len_increment;
+ if (out_buf_len > out_buf_len_max) {
+ out_buf_len = out_buf_len_start;
+ }
+ Serial.printf("Sending %d bytes to %s:%d\n", out_buf_len, host_ip.toString().c_str(), host_port);
+ Udp.beginPacket(host_ip, host_port);
+ Udp.write(buf, out_buf_len);
+ time_start = millis();
+ auto ok = Udp.endPacket();
+
+ if (!ok) {
+ Serial.printf("Could not send packet with size %d\n", out_buf_len);
+ }
+ }
+
+ int len = Udp.parsePacket();
+ if (len) {
+ time_end = millis();
+ Serial.printf("RX %s:%d: size=%d\n", Udp.remoteIP().toString().c_str(), Udp.remotePort(), len);
+ int len = Udp.read(buf, sizeof(buf));
+ Serial.printf("len=%d\n");
+ if (len > 0) {
+ buf[len] = 0;
+ }
+ Serial.printf("RTT: %d ms. Payload:%s\n", int(time_end - time_start), buf);
+ }
+}
+