class Stepper
{
private:
int enable;
int direction;
int speed;
static int turretCounter;
public:
Stepper(int en, int dir)
{
enable = en;
direction = dir;
pinMode(enable,OUTPUT);
pinMode(direction,OUTPUT);
pinMode(4,OUTPUT);
}
void Stop()
{
digitalWrite(enable,1);
Timer1.detachInterrupt();
Timer1.stop();
}
static void IncrementCounter()
{
turretCounter++;
}
//your step pin must be 4 due to limitations on static vars and methods
static void Step()
{
digitalWrite(4,0);
delayMicroseconds(1);
digitalWrite(4,1);
IncrementCounter();
}
void SetSpeed(int Speed)
{
speed = Speed;
}
void Run(int seconds)
{
digitalWrite(enable,0);
Timer1.attachInterrupt(Step);
Timer1.initialize(speed);
}
int GetCounter()
{
return turretCounter;
}
void SetDirection(int dir)
{
digitalWrite(direction,dir);
}
int GetSpeed()
{
return speed;
}
};
inkrementiert werden. Ich möchte Sie auf die statische Methode Step() und die statische Methode IncrementCounter() aufmerksam machen. Ich habe versucht, die Variable innerhalb der Step() - Funktion inkrementieren, aber ich bekomme immer nur "Fehlerkompilierung für Board Arudino Nano". Ich habe versucht, IncrementCounter() direkt innerhalb der Step() Methode aufzurufen, und ich bekomme den Fehler "kann Klassenmethode ohne Objekt nicht aufrufen". Ich bekomme diesen Fehler von Step() -Methode.Statische Variable kann nicht innerhalb der statischen Klassenfunktion
* kann keine Klassenmethode ohne Objekt aufrufen * sollte darauf hinweisen, wo im Code dieser Fehler herkommt. Was ist dieser Code? – NathanOliver
Nun, dieser Fehler kommt von der Step() Methode. @NathanOliver –