Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 如何让步进电机罗盘通过360度_Arduino - Fatal编程技术网

Arduino 如何让步进电机罗盘通过360度

Arduino 如何让步进电机罗盘通过360度,arduino,Arduino,你好,我正在为飞行模拟器制作一个湿罗盘。我目前有一个步进电机与模拟器运行良好,但在360度到0度交叉点时,步进电机会进行360度全反转以进入位置 我的问题。。。任何人都可以帮助我创建代码,使从360到0的线性交叉在两个方向上工作 模拟器提供360度的浮点值,如172.13。我的步进机每转一圈有4076步。您将在下面的代码中看到数学。我正在使用AccelStepper库 void ProgOut(byte id, float val) { switch (1) { case 1:   if (v

你好,我正在为飞行模拟器制作一个湿罗盘。我目前有一个步进电机与模拟器运行良好,但在360度到0度交叉点时,步进电机会进行360度全反转以进入位置

我的问题。。。任何人都可以帮助我创建代码,使从360到0的线性交叉在两个方向上工作

模拟器提供360度的浮点值,如172.13。我的步进机每转一圈有4076步。您将在下面的代码中看到数学。我正在使用AccelStepper库

void ProgOut(byte id, float val) {
switch (1) {
case 1:  

if (val)
        { stepper1.moveTo(val * 11.3222222);         } 
         
        stepper1.run(); 

break; }}
我试过这样的方法:

void ProgOut(byte id, float val) {
switch (1) { 
case 1:  
if ( stepper1.distanceToGo () >= 4064){
          stepper1.moveTo(4076);
          stepper1.setCurrentPosition(0);
}
    else if (val)
        { 
                
                stepper1.moveTo(val * 11.3222222);         
        } 
         
        stepper1.run(); 

break; }}

提前感谢您的帮助

如果您已经了解了步进电机的分辨率,只需执行一项简单的转换任务:

const float resolution  = xx.xx; // put your step resolution here
int step_degree(float desired_degree){
    return (desired_degree/resolution);}
这可以通过调用

stepper.step(step_degree(40)); //rotate 40 degree.
因此,在你的情况下,如果你想让它从360度平滑过渡到0度,只需通过一个大于360度的角度