Megépítettem már a robotom meghajtását, és azt szeretném, hogy minél átláthatóbb programot tudjak hozzá írni. Ehhez elkezdtem készíteni egy unitot, viszont van egy kis problémám: az egyik void nem akar meghívódni illetve nem tudom miért de nem történik semmi a következő program futtatásánál:
Kód: Egész kijelölése
#include <Robot.h>
Motor test;
void setup()
{
test.init(12,13);
test.forward(255);
}
void loop()
{
}
Kód: Egész kijelölése
#ifndef Robot_h
#define Robot_h
class Motor
{
public:
Motor();
void init(int forwardpin, int backwardpin);
void forward(int value);
void backward(int value);
void stop();
int id;
};
#endif
Kód: Egész kijelölése
#include <Arduino.h>
#include <Robot.h>
int forwardpins[16];
int backwardpins[16];
int speeds[16];
int tick=0;
bool needinit=true;
Motor::Motor()
{
this->id=0;
while(forwardpins[this->id]!=backwardpins[this->id])
{
this->id++;
}
}
void Motor::stop()
{
speeds[this->id]=0;
}
void Motor::forward(int value)
{
speeds[this->id]=value;
}
void Motor::backward(int value)
{
speeds[this->id]=-value;
}
inline void update()
{
int i=0;
while(forwardpins[i]!=backwardpins[i])
{
if(speeds[i]>0 /*&& speeds[i]>tick*/)
{
digitalWrite(backwardpins[i], LOW);
digitalWrite(forwardpins[i], HIGH);
}
else if(speeds[i]<0 /*&& speeds[i]<-tick*/)
{
digitalWrite(forwardpins[i], LOW);
digitalWrite(backwardpins[i], HIGH);
}
else
{
digitalWrite(forwardpins[i], LOW);
digitalWrite(backwardpins[i], LOW);
}
}
tick++;
if(tick==256)
{
tick=0;
}
update();
}
void Motor::init(int forwardpin, int backwardpin)
{
forwardpins[this->id]=forwardpin;
backwardpins[this->id]=backwardpin;
if(needinit)
{
update();
needinit=false;
}
}
Segítségeteket előre is köszönöm!