Ich versuche, eine Klasse mit Arduino zum Laufen zu bringen, aber es scheint nicht richtig auszulösen. Der Code wird perfekt kompiliert und soll das Bein eines Hexapods steuern . Auch der Beispiel-Sweep funktioniert mit diesem Servo, also hier kein Problem. Das Servo bewegt sich jedoch nicht wirklich. Ich denke, es hat etwas mit der Reihenfolge der Deklaration der Variablen zu tun:
#include <Servo.h>
// Abstract each leg, so only those functions can be accessed
class Leg {
// Actions that can be triggered from outside
public:
Leg(int hipPin, int kneePin);
void up();
// These should be only available for the leg
private:
Servo hip;
Servo knee;
};
Leg::Leg(int hipPin, int kneePin) {
hip.attach(hipPin);
knee.attach(kneePin);
}
// Testing the leg: move it up
void Leg::up() {
for(int pos = 0; pos < 180; pos += 1) {
hip.write(pos);
delay(15);
}
}
// Initialize the leg
Leg topLeft(9, 10);
void setup() {
}
// Test the function up()
void loop() {
topLeft.up();
}
Ich teste nur den Pin 9 (lasse die 10 leer). Es scheint Schmerzen zu haben , was bedeutet, dass Sie sehen können, wie das Servo zittert, sich aber bei 0 Grad nicht wirklich bewegt.