Mein Schrittmotor wird mit einem L293d-Treiber gesteuert, der an einen Ardiuno angeschlossen ist. Das Tutorial, von dem ich meine Informationen erhalten habe, ist hier, https://learn.adafruit.com/wifi-control ... ino-sketch, aber ich habe den Code so geändert, dass er für den Schrittmotor anstelle eines Gleichstrommotors passt. Momentan teste ich nur mit serieller Eingabe - noch kein WLAN.Steuerung eines Schrittmotors mit einem Ardiuno und Node.js
Ich habe alles funktioniert. Wenn ich die Vorwärts-Taste drücke, bewegt sich der Motor vorwärts. Es dreht sich jedoch nur um eine Umdrehung. Ich bin mir nicht sicher, wie ich den Code ändern soll, so dass ich, wenn ich auf die Vorwärts-Taste klicke, kontinuierlich vorwärts rotiere, bis ich die Stopp-Taste drücke. Weiß jemand, wie man das macht?
#include <SPI.h>
#include <aREST.h>
#include <Stepper.h>
#include <Wire.h>
aREST rest = aREST();
int inA1 = 12; // input 1 of the stepper
int inA2 = 11; // input 2 of the stepper
int inB1 = 10; // input 3 of the stepper
int inB2 = 9; // input 4 of the stepper
#define STEPS 512
Stepper motor(STEPS, inA1, inA2, inB1, inB2);
void setup() {
pinMode(inA1, OUTPUT);
pinMode(inA2, OUTPUT);
pinMode(inB1, OUTPUT);
pinMode(inB2, OUTPUT);
Serial.begin(115200);
Serial.println(F("Hello, CC3000!\n"));
rest.set_id("1");
rest.set_name("robot");
//Expose functions
rest.function("forward",forward);
rest.function("backward",backward);
rest.function("stop",stop);
}
void loop()
{
rest.handle(Serial);
}
// Forward
int forward(String command) {
motor.setSpeed(10);
motor.step(100);
return 1;
}
//Backforward
int backward(String command) {
motor.setSpeed(-10);
motor.step(100);
return 1;
}
Wenn ich auf max Wert von int ändert. es ergab immer noch kein kontinuierliches Rotationsergebnis. –
Hmm, vielleicht, in der Bibliothek verwendet nicht int. Versuchen Sie Wert wie 50000. Problemstelle ist Motor, führen Sie keinen anderen Befehl aus, während beschäftigt. –
Ich denke nicht, dass dies das Problem lösen wird. Einen großen Wert zu haben, funktioniert eine Weile, hört aber immer noch auf. Ich muss den Motor laufen lassen, ohne für unbestimmte Zeit stehen zu bleiben. Gibt es eine Möglichkeit, die Funktion im Skript aufzurufen, damit sie weiterläuft? –