Added run/stop and single sequence run
authorGraham <dev@netlinux.org.uk>
Mon, 4 Sep 2017 18:00:47 +0000 (19:00 +0100)
committerGraham <dev@netlinux.org.uk>
Mon, 4 Sep 2017 18:00:47 +0000 (19:00 +0100)
UnoBLDC.cpp

index 6e3dd0d..ea11a3d 100644 (file)
@@ -4,9 +4,14 @@
 
 static const int MARKCONTROL = A0;
 static const int SPACECONTROL = A1;
+static const unsigned long DELAY = 1000;
+
+
 static int MarkInput = 0;
 static int SpaceInput = 0;
 static unsigned char StepCount = 0;
+static bool Run = true;
+static bool Single = false;
 
 #if STEP == 6
 
@@ -61,12 +66,37 @@ static const unsigned char On[] = {
 };
 
 #endif
-void UARTReceive (char Character)
+
+static const unsigned char StepNumber = sizeof (Polarity);
+
+void KeyPress (const char Character)
 {
-    putchar (Character);
+    switch (Character)
+    {
+       case 'R':
+           Run = true;
+           break;
+       case 'r':
+           Run = false;
+           break;
+       
+       case ' ':
+           if (!Run)
+           {
+              StepCount = 0;
+              Single = true;
+              Run = true;
+           } 
+           break;
+    
+       default: break;
+    }
 }
 
-static const unsigned char StepNumber = sizeof (Polarity);
+void UARTReceive (char Character)
+{
+    KeyPress (Character);
+}
 
 void setup ()
 {
@@ -76,8 +106,6 @@ void setup ()
     PORTB = 0b00000000;        // set 8-13 low (no pullup)
 }
 
-static const unsigned long DELAY = 100;
-
 void Gap (const int CONTROL, int &Input)
 {
     Input = analogRead (CONTROL);
@@ -87,11 +115,20 @@ void Gap (const int CONTROL, int &Input)
 
 void loop ()
 {
+    if (Single && StepCount >= StepNumber)
+    {
+       Run = false;
+       Single = false;
+    }
+
     if (StepCount >= StepNumber)
         StepCount = 0;
-
-    DDRB = (On[StepCount] << 3);    // set the direction
-    PORTB = (~Polarity[StepCount] << 3);    // set the bits
+       
+    if (Run)
+    {
+       DDRB = (On[StepCount] << 3);    // set the direction
+       PORTB = (~Polarity[StepCount] << 3);    // set the bits
+    }
 
     Gap (MARKCONTROL, MarkInput);