Skip to content

Commit 88a73a6

Browse files
author
Alexander Akhmetov
committed
Added servo support
1 parent dddcfd0 commit 88a73a6

File tree

2 files changed

+70
-51
lines changed

2 files changed

+70
-51
lines changed

arduino/arduino.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,16 @@ def analogRead(self, pin):
4848
self.__sendData(pin)
4949
return self.__getData()
5050

51+
def servoAdd(self, pin):
52+
self.__sendData('5')
53+
self.__sendData(pin)
54+
return True
55+
56+
def servoWrite(self, pin):
57+
self.__sendData('6')
58+
self.__sendData(pin)
59+
return True
60+
5161
def turnOff(self):
5262
for each_pin in self.__OUTPUT_PINS:
5363
self.setLow(each_pin)

prototype.pde

Lines changed: 60 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,60 @@
1-
2-
#ifndef SERIAL_RATE
3-
#define SERIAL_RATE 115200
4-
#endif
5-
6-
#ifndef SERIAL_TIMEOUT
7-
#define SERIAL_TIMEOUT 5
8-
#endif
9-
10-
void setup() {
11-
Serial.begin(SERIAL_RATE);
12-
Serial.setTimeout(SERIAL_TIMEOUT);
13-
14-
int cmd = readData();
15-
for (int i = 0; i < cmd; i++) {
16-
pinMode(readData(), OUTPUT);
17-
}
18-
}
19-
20-
void loop() {
21-
switch (readData()) {
22-
case 0 :
23-
//set digital low
24-
digitalWrite(readData(), LOW); break;
25-
case 1 :
26-
//set digital high
27-
digitalWrite(readData(), HIGH); break;
28-
case 2 :
29-
//get digital value
30-
Serial.println(digitalRead(readData())); break;
31-
case 3 :
32-
// set analog value
33-
analogWrite(readData(), readData()); break;
34-
case 4 :
35-
//read analog value
36-
Serial.println(analogRead(readData())); break;
37-
case 99:
38-
//just dummy to cancel the current read, needed to prevent lock
39-
//when the PC side dropped the "w" that we sent
40-
break;
41-
}
42-
}
43-
44-
char readData() {
45-
Serial.println("w");
46-
while(1) {
47-
if(Serial.available() > 0) {
48-
return Serial.parseInt();
49-
}
50-
}
51-
}
1+
#include <Servo.h>
2+
3+
#ifndef SERIAL_RATE
4+
#define SERIAL_RATE 115200
5+
#endif
6+
7+
#ifndef SERIAL_TIMEOUT
8+
#define SERIAL_TIMEOUT 5
9+
#endif
10+
11+
Servo myservo;
12+
13+
void setup() {
14+
Serial.begin(SERIAL_RATE);
15+
Serial.setTimeout(SERIAL_TIMEOUT);
16+
17+
int cmd = readData();
18+
for (int i = 0; i < cmd; i++) {
19+
pinMode(readData(), OUTPUT);
20+
}
21+
}
22+
23+
void loop() {
24+
switch (readData()) {
25+
case 0 :
26+
//set digital low
27+
digitalWrite(readData(), LOW); break;
28+
case 1 :
29+
//set digital high
30+
digitalWrite(readData(), HIGH); break;
31+
case 2 :
32+
//get digital value
33+
Serial.println(digitalRead(readData())); break;
34+
case 3 :
35+
// set analog value
36+
analogWrite(readData(), readData()); break;
37+
case 4 :
38+
//read analog value
39+
Serial.println(analogRead(readData())); break;
40+
case 5 :
41+
//add servo
42+
myservo.attach(readData()); break;
43+
case 6 :
44+
//write servo position
45+
myservo.write(readData()); break;
46+
case 99:
47+
//just dummy to cancel the current read, needed to prevent lock
48+
//when the PC side dropped the "w" that we sent
49+
break;
50+
}
51+
}
52+
53+
char readData() {
54+
Serial.println("w");
55+
while(1) {
56+
if(Serial.available() > 0) {
57+
return Serial.parseInt();
58+
}
59+
}
60+
}

0 commit comments

Comments
 (0)