-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTelescope.cpp
85 lines (75 loc) · 1.4 KB
/
Telescope.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//ADDED FOR COMPATIBILITY WITH WIRING
extern "C" {
#include <stdlib.h>
}
#include "WProgram.h"
#include "Telescope.h"
bool connected = false;
Telescope::Telescope(void)
{
pinMode(NORTH, OUTPUT);
pinMode(EAST, OUTPUT);
pinMode(SOUTH, OUTPUT);
pinMode(WEST, OUTPUT);
}
void Telescope::interpretCommand(Messenger *message)
{
message->readChar();
char command = message->readChar();
switch(command){
case 'N':
moveAxis(NORTH);
break;
case 'E':
moveAxis(EAST);
break;
case 'S':
moveAxis(SOUTH);
break;
case 'W':
moveAxis(WEST);
break;
case 'H':
moveAxis(0);
break;
case 'C':
connect(message->readInt(), message->readInt());
break;
}
}
bool Telescope::connect(int major, int minor)
{
if(major == 127 && minor == 15) {
connected = true;
Serial.println("OK");
return true;
}
else {
connected = false;
Serial.println("NOPE");
return false;
}
}
void Telescope::moveAxis(int dir)
{
digitalWrite(NORTH, LOW);
digitalWrite(EAST, LOW);
digitalWrite(SOUTH, LOW);
digitalWrite(WEST, LOW);
switch(dir){
case NORTH:
digitalWrite(NORTH, HIGH);
break;
case EAST:
digitalWrite(EAST, HIGH);
break;
case SOUTH:
digitalWrite(SOUTH, HIGH);
break;
case WEST:
digitalWrite(WEST, HIGH);
break;
default:
break;
}
}