3輪サッカーロボットのプログラミングを想像してください。あなたはそれを回すためにどのタイプのコントローラーを使用しますか?P?PID?
このコントローラーの目標は、ロボットを定義された角度(0度)で立て、手または他のロボットで回転させると元に戻すことです。
私はロボットではなくサーボにステッパーモーターを使用しているため、これをソフトウェアに実装する必要があります!
サンプルPタイプコントローラーを既に作成しましたが、動きはかなり良好です。しかし、可能であれば改善したいと思います。コードは次のとおりです。
void spinSpeed(int devidedValue, int addedValue, int correction) {
    if(degree<correction && degree>-correction) {
        motorSpeed = 0;
    } else {
        if(degree > 0) {
            motorSpeed = ((degree)/(devidedValue) + (addedValue));
        } else {
            motorSpeed = ((degree)/(devidedValue) - (addedValue));  
        }
    }
}
correctionは、ロボットに動きがない範囲です。 
degreeコンパスから返される-127〜128の数値です。
motorSpeedPWMに適用される0〜255の数値です。
degree?の新しい値を生成するたびに、このルーチンが実行されます。