Hallo liebe Forengengemeinde,
ich hab folgendes Problem bei der Ansteuerung des RN-Stepp 297 Schrittmotortreibers. Vllt hat ja jemand direkt nen Tipp was ich an der Software ändern muss.
Der RN-Stepp 297 ist ein fertiges Treibermodul für Schrittmotoren bis 2 A. Zu Ansteuerung nutze ich einen Arduino Duemilanove mit Atmega 328.
Es werden insgesamt zwei Motoren unabhängig voneinander über zwei verschiedene Motortreiber angetrieben.
In dem Programm beschränke ich mich auf einen Motor der in Abhängigkeit von einem Beschleunigungssensor gesteuert werden soll.
Der Motortreiber verfügt über einen Takteingang. Bei jeder Groundflanke bewegt sich der Motor einen Schritt.
Code:const int M_1takt = 13; // Motortakt Pin int XPin=0; //Analogsensor Eingang int M_1stat= LOW; // Motorstatus long vormilli = 0; // Zeit vor Aktualisierung // Intervallänge in ms void setup() { pinMode(M_1takt, OUTPUT); } void loop() { int interval = analogRead(XPin); unsigned long aktuellmilli= millis(); if(aktuellmilli - vormilli> interval) { vormilli= aktuellmilli; if (M_1stat== LOW) M_1stat= HIGH; else M_1stat= LOW; digitalWrite(M_1takt, M_1stat); } }
Wenn ich für das Intervall feste Werte vorgebe also nicht mit analogRead einlese funktioniert es. Nur bei Daten von dem Beschleunigungssensor nicht. Wieso? Nen Timingproblem?
Geändert von PicNick (08.11.2011 um 09:16 Uhr)
Ich würde auf Verdacht erstmal "interval" auch als unsigned long definieren.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen