Skip to content

Commit 2b4c61b

Browse files
update code that works
1 parent bacb403 commit 2b4c61b

3 files changed

Lines changed: 29 additions & 12 deletions

File tree

code/armdroid-class/armbase.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ const uint8_t PHASETAB[8] = {
1616
#define SHOULDER 5
1717
#define ELBOW 4
1818
#define WRIST_LEFT 2
19-
#define WRIST_RIGHT 0
19+
#define WRIST_RIGHT 3
2020
#define GRIPPER 1
2121
#define ACCESSORY 7
22-
#define JACKS 3
22+
#define JACKS 0
2323

2424
class AbstractArmdroid {
2525
private:
@@ -80,4 +80,4 @@ class AbstractArmdroid {
8080
}
8181
}
8282
virtual void writeToPort(uint8_t address, uint8_t data) {};
83-
};
83+
};
Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
1+
#define ARMDROID_DEBUG
12
#include "armdroid.hpp"
23

4+
uint8_t bitReverse(uint8_t data, const uint8_t numBits) {
5+
uint8_t out = 0;
6+
for (uint8_t i = 0; i < numBits; i++) {
7+
out = (out << 1) | (data & 1);
8+
data >>= 1;
9+
}
10+
return out;
11+
}
12+
313
uint8_t pack(uint8_t address, uint8_t data) {
4-
uint8_t revAddress = ((address & 4) >> 2) | (address & 2) | ((address & 1) << 2);
5-
return revAddress << 4 | data;
14+
uint8_t aa = address >> 1 | (address & 1) << 2;
15+
uint8_t dd = data >> 2 | (data & 3) << 2;
16+
return aa << 4 | dd;
617
}
718

819
PartialSerialArmdroid arm(8, 7, 3, pack);
920

1021
void setup() {
11-
Serial.begin(115200);
22+
Serial.begin(115200);
1223
pinMode(A0, INPUT);
1324
pinMode(A1, INPUT);
1425
pinMode(A2, INPUT);
@@ -20,15 +31,15 @@ void setup() {
2031

2132
#define mmm(N, P) \
2233
r = analogRead(A##N); \
23-
if (abs(r - 512) > 50) { \
24-
arm.motorMoveby(P, map(r, 1023, 0, -20, 20)); \
34+
if (abs(r - 512) > 20) { \
35+
arm.motorMoveby(P, map(r, 0, 1023, -20, 20)); \
2536
t += abs(r - 512); \
2637
}
2738

2839
void loop() {
2940
for (int i = 0; i < 20; i++) {
3041
arm.tick();
31-
delayMicroseconds(300);
42+
delayMicroseconds(700);
3243
}
3344
int r;
3445
unsigned long t = 0;
@@ -39,4 +50,4 @@ void loop() {
3950
mmm(4, GRIPPER);
4051
mmm(5, ELBOW);
4152
digitalWrite(13, t > 0);
42-
}
53+
}

code/armdroid-class/armdroid.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ class PartialSerialArmdroid : public AbstractArmdroid {
5454
void writeToPort(uint8_t address, uint8_t data) {
5555
uint8_t b = this->packBits(address, data);
5656
for (int i = 0; i < 7; i++) {
57+
#ifdef ARMDROID_DEBUG
58+
Serial.write('0' + (b & 1));
59+
#endif
5760
digitalWrite(this->dataPin, b & 1);
5861
delayMicroseconds(30);
5962
digitalWrite(this->clockPin, HIGH);
@@ -62,8 +65,11 @@ class PartialSerialArmdroid : public AbstractArmdroid {
6265
delayMicroseconds(30);
6366
b >>= 1;
6467
}
68+
#ifdef ARMDROID_DEBUG
69+
Serial.println();
70+
#endif
6571
digitalWrite(this->latchPin, HIGH);
66-
delayMicroseconds(30);
72+
delayMicroseconds(60);
6773
digitalWrite(this->latchPin, LOW);
6874
}
69-
};
75+
};

0 commit comments

Comments
 (0)