import c2_ulx3s_test from examples
[Arduino] / c2_ulx3s_test / btn.cpp
diff --git a/c2_ulx3s_test/btn.cpp b/c2_ulx3s_test/btn.cpp
new file mode 100644 (file)
index 0000000..61ea201
--- /dev/null
@@ -0,0 +1,44 @@
+#include <Arduino.h>
+
+void btn_init()
+{
+  int i;
+  // buttons
+  for(i = 0; i < 6; i++)
+    pinMode(i, INPUT);
+  // switches
+  for(i = 16; i < 20; i++)
+    pinMode(i, INPUT);
+  // leds
+  for(i = 8; i < 16; i++)
+    pinMode(i, OUTPUT);
+}
+
+void btn_read(char *line)
+{
+  static uint8_t shiftdata = 0;
+  uint8_t led = B10001 << (shiftdata++ & 3);
+  sprintf(line, "BTN:%c%c%c%c%c%c%c SW:%c%c%c%c LED:%c%c%c%c%c%c%c%c\n",
+    digitalRead(0) ? '_' : '0',
+    digitalRead(1) ? '1' : '_',
+    digitalRead(2) ? '2' : '_',
+    digitalRead(3) ? '3' : '_',
+    digitalRead(4) ? '4' : '_',
+    digitalRead(5) ? '5' : '_',
+    digitalRead(6) ? '6' : '_',
+    digitalRead(16) ? '1' : '_',
+    digitalRead(17) ? '2' : '_',
+    digitalRead(18) ? '3' : '_',
+    digitalRead(19) ? '4' : '_',
+    led & B10000000 ? '7' : '_',
+    led & B01000000 ? '6' : '_',
+    led & B00100000 ? '5' : '_',
+    led & B00010000 ? '4' : '_',
+    led & B00001000 ? '3' : '_',
+    led & B00000100 ? '2' : '_',
+    led & B00000010 ? '1' : '_',
+    led & B00000001 ? '0' : '_'
+  );
+  for(int i = 0; i < 8; i++)
+    digitalWrite(8+i, led & (1<<i) ? 1 : 0);
+}