diff options
-rw-r--r-- | arduino_sketch/rfc4824/rfc4824.ino | 188 |
1 files changed, 186 insertions, 2 deletions
diff --git a/arduino_sketch/rfc4824/rfc4824.ino b/arduino_sketch/rfc4824/rfc4824.ino index f2ce79c..a0a2fd3 100644 --- a/arduino_sketch/rfc4824/rfc4824.ino +++ b/arduino_sketch/rfc4824/rfc4824.ino @@ -1,8 +1,14 @@ #include <Stepper.h> -Stepper left_arm(64,2,3,4,5); -Stepper right_arm(64,7,8,9,10); +#define ADJ_STP 256 +#define QRT_STP 256 +#define CHAR_DELAY 1000 + +Stepper left_arm(64,4,5,6,7); +Stepper right_arm(64,8,9,10,11); + +int c; void setup() { Serial.begin(9600); @@ -11,4 +17,182 @@ void setup() { } void loop() { + read_serial_commands(); +} + +void adjust(char motor,int steps) { + Serial.print("Adjusting "); + switch (motor) { + case 'l': + Serial.print("left"); + left_arm.step(steps); + break; + case 'r': + Serial.print("right"); + right_arm.step(steps); + break; + } + Serial.print(" motor of "); + Serial.print(steps,DEC); + Serial.println(" steps"); +} + +void read_serial_commands() { + c = Serial.read(); + switch (c) { + case 'o': + adjust('l',ADJ_STP); + break; + case 'p': + adjust('l',-ADJ_STP); + break; + case 'n': + adjust('r',ADJ_STP); + break; + case 'm': + adjust('r',-ADJ_STP); + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + set_hex(c-'0'); + break; + case 'a': + case 'A': + set_hex(0xA); + break; + case 'b': + case 'B': + set_hex(0xB); + break; + case 'c': + case 'C': + set_hex(0xC); + break; + case 'd': + case 'D': + set_hex(0xD); + break; + case 'e': + case 'E': + set_hex(0xE); + break; + case 'f': + case 'F': + set_hex(0xF); + break; + } +} + +void set_hex(char digit) { + Serial.print("Going to position "); + Serial.println(digit,HEX); + switch (digit) { + case 0x0: + right_arm.step(QRT_STP); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP); + break; + case 0x1: + right_arm.step(QRT_STP*2); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP*2); + break; + case 0x2: + right_arm.step(QRT_STP*3); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP*3); + break; + case 0x3: + right_arm.step(QRT_STP*4); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP*4); + break; + case 0x4: + left_arm.step(-QRT_STP*3); + delay(CHAR_DELAY); + left_arm.step(QRT_STP*3); + break; + case 0x5: + left_arm.step(-QRT_STP*2); + delay(CHAR_DELAY); + left_arm.step(QRT_STP*2); + break; + case 0x6: + left_arm.step(-QRT_STP); + delay(CHAR_DELAY); + left_arm.step(QRT_STP); + break; + case 0x7: + right_arm.step(QRT_STP*2); + left_arm.step(QRT_STP); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP*2); + left_arm.step(-QRT_STP); + break; + case 0x8: + right_arm.step(QRT_STP*3); + left_arm.step(QRT_STP); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP*3); + left_arm.step(-QRT_STP); + break; + case 0x9: + right_arm.step(QRT_STP*4); + left_arm.step(-QRT_STP*2); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP*4); + left_arm.step(QRT_STP*2); + break; + case 0xA: + right_arm.step(QRT_STP); + left_arm.step(-QRT_STP*4); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP); + left_arm.step(QRT_STP*4); + break; + case 0xB: + right_arm.step(QRT_STP); + left_arm.step(-QRT_STP*3); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP); + left_arm.step(QRT_STP*3); + break; + case 0xC: + right_arm.step(QRT_STP); + left_arm.step(-QRT_STP*2); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP); + left_arm.step(QRT_STP*2); + break; + case 0xD: + right_arm.step(QRT_STP); + left_arm.step(-QRT_STP); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP); + left_arm.step(QRT_STP); + break; + case 0xE: + right_arm.step(QRT_STP*2); + left_arm.step(-QRT_STP*5); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP*2); + left_arm.step(QRT_STP*5); + break; + case 0xF: + right_arm.step(QRT_STP*2); + left_arm.step(-QRT_STP*4); + delay(CHAR_DELAY); + right_arm.step(-QRT_STP*2); + left_arm.step(QRT_STP*4); + break; + } + Serial.println("Returned to home position"); } |