hello: relays via serial
authorTero Marttila <terom@paivola.fi>
Wed, 24 Sep 2014 23:49:49 +0300
changeset 2 2687fbd14fd9
parent 1 dc293f9aa873
child 3 87dd3b72b024
hello: relays via serial
src/hello.c
--- a/src/hello.c	Wed Sep 24 22:54:26 2014 +0300
+++ b/src/hello.c	Wed Sep 24 23:49:49 2014 +0300
@@ -5,13 +5,25 @@
 #define DEBUG_PIN 5
 #define DEBUG_PORT PORTB
 
+#define RELAY_DDR DDRC
+#define RELAY_PORT PORTC
+#define RELAY_PIN PINC
+#define RELAY_PINS 4
+
+#define RELAY_DOWN1 0
+#define RELAY_DOWN2 1
+#define RELAY_LEFT  2
+#define RELAY_RIGHT 3
+
 #include "debug.h"
+#include "relay.h"
 #include "serial.h"
 #include "timer.h"
 
 int main (void)
 {
     debug_init();
+    relay_init(RELAY_PINS);
     serial_init(SERIAL_BAUD_9600, SERIAL_PARITY_N, SERIAL_STOPBITS_1);
     timer_init();
 
@@ -22,7 +34,6 @@
     debug_set();
     sei();
 
-
     // start
     while (true) {
         if (timer_sleep(timeout)) {
@@ -33,6 +44,28 @@
             c = '?';
         }
 
+        switch (c) {
+            case '.':       break;
+
+            case 'L':       relay_open(RELAY_LEFT); break;
+            case 'R':       relay_open(RELAY_RIGHT); break;
+            case 'B':
+                            relay_open(RELAY_DOWN1);
+                            relay_open(RELAY_DOWN2);
+                            break;
+
+            case 'l':       relay_toggle(RELAY_LEFT); break;
+            case 'r':       relay_toggle(RELAY_RIGHT); break;
+            case 'b':
+                            relay_close(RELAY_DOWN1);
+                            relay_close(RELAY_DOWN2);
+                            break;
+
+            default:
+                c = '!';
+                break;
+        }
+
         debug_toggle();
 
         // out