// === Kommutációs táblázat (6 lépéses) ===
const int pwmPins[3] = {3, 5, 9}; // High side PWM: A, B, C
const int lowPins[3] = {4, 6, 10}; // Low side ON/OFF: A, B, C
const int commTable[6][3] = {
{1, -1, 0},
{1, 0, -1},
{0, 1, -1},
{-1, 1, 0},
{-1, 0, 1},
{0, -1, 1}
};
int getElectricalAngle() {
long pos = encoderPos;
int mechDeg = (pos * 360L) / encoderCPR;
int elecDeg = (mechDeg * polePairs) % 360;
return elecDeg;
}
void setCommutation(int step, int duty) {
for (int i = 0; i < 3; i++) {
int state = commTable[step][i];
if (state == 1) {
analogWrite(pwmPins[i], duty);
digitalWrite(lowPins[i], LOW);
} else if (state == -1) {
digitalWrite(pwmPins[i], LOW);
digitalWrite(lowPins[i], HIGH);
} else {
digitalWrite(pwmPins[i], LOW);
digitalWrite(lowPins[i], LOW);
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
for (int i = 0; i < 3; i++) {
pinMode(pwmPins[i], OUTPUT);
pinMode(lowPins[i], OUTPUT);
}
setCommutation(5, 127);
}
void loop() {
// put your main code here, to run repeatedly:
}