C 如果依赖于按钮且在while循环中,如何将int设置为1?

C 如果依赖于按钮且在while循环中,如何将int设置为1?,c,robot,C,Robot,我正在给一个机器人编程,不幸的是在它的自主模式下我遇到了一些问题。 当按下按钮时,我需要将整数设置为1,但为了让程序识别按钮,它必须处于while循环中。正如您所想象的,程序以无限循环结束,整数值以接近4000的某个位置结束 task autonomous() { while(true) { if(SensorValue[positionSelectButton] == 1) { positionSelect = p

我正在给一个机器人编程,不幸的是在它的自主模式下我遇到了一些问题。 当按下按钮时,我需要将整数设置为1,但为了让程序识别按钮,它必须处于while循环中。正如您所想象的,程序以无限循环结束,整数值以接近4000的某个位置结束

 task autonomous()
   {
    while(true)
        {
    if(SensorValue[positionSelectButton] == 1)
        {
            positionSelect = positionSelect + 1;
            wait1Msec(0350);
        }
        }
   }

我已经通过使用wait获得了值,但我不想这样做。还有其他方法吗?

试着记住按钮的当前位置,并且只在其状态从关闭变为打开时才采取行动


根据硬件的不同,您也可能会得到一个信号,就好像它在毫秒内来回翻转了好几次一样。如果这是一个问题,您可能还希望存储上次激活按钮的时间戳,然后在此后的一个短窗口中忽略重复事件。

尝试记住按钮的当前位置,并且仅在其状态从关闭变为打开时才采取行动


根据硬件的不同,您也可能会得到一个信号,就好像它在毫秒内来回翻转了好几次一样。如果这是一个问题,您可能还希望存储上次激活按钮的时间戳,然后在之后的一个短窗口中忽略重复事件。

您的问题有点模糊
我不确定你为什么需要这个变量来增加,以及它到底是如何工作的……但我会尝试一下。再解释一下机器人是如何工作的……我们将能够提供更多帮助

task autonomous()
{
    int buttonPressed=0;
    while(true)
    {
        if(SensorValue[positionSelectButton] == 1)
        {
            positionSelect = positionSelect +1;
            buttonPressed=1;
        }
        else{
            buttonPressed = 0;
        }


        //use your variables here 
        if( buttonPressed  == 1){
            //Move robot front a little
        }

    }
}
总体思路是:
首先检测所有按下的按钮,然后根据它们进行操作
所有这些都在你的while循环中…它将(并且应该)永远运行(至少只要你的机器人还活着:)

希望这有帮助

你的问题有点含糊
我不确定你为什么需要这个变量来增加,以及它到底是如何工作的……但我会尝试一下。再解释一下机器人是如何工作的……我们将能够提供更多帮助

task autonomous()
{
    int buttonPressed=0;
    while(true)
    {
        if(SensorValue[positionSelectButton] == 1)
        {
            positionSelect = positionSelect +1;
            buttonPressed=1;
        }
        else{
            buttonPressed = 0;
        }


        //use your variables here 
        if( buttonPressed  == 1){
            //Move robot front a little
        }

    }
}
总体思路是:
首先检测所有按下的按钮,然后根据它们进行操作
所有这些都在你的while循环中…它将(并且应该)永远运行(至少只要你的机器人还活着:)

希望这有帮助

您可以将按钮连接到中断,然后在中断处理程序中进行必要的更改

这可能不是最好的方法,但它将是最简单的方法


从:

(12) 可以用作中断的快速数字I/O端口


因此,最有可能的是,您正在使用的Vex的哪个微控制器将支持中断。

您可以将按钮连接到中断,然后在中断处理程序中进行必要的更改

这可能不是最好的方法,但它将是最简单的方法


从:

(12) 可以用作中断的快速数字I/O端口


因此,最有可能的是,您正在使用的Vex的哪个微控制器将支持中断。

假设
传感器值
来自与while循环异步的物理组件,并且是一个按钮(即,不是切换按钮)

通过某些内置函数或递增整数获取当前时间,并在达到最大值后进行换行

或者,如果您处于另一种情况:

task autonomous()
{
    while(true)
    {
        // check whether the flag allows incrementing
        if(should_detect && SensorValue[positionSelectButton] == 1)
        {
            positionSelect = positionSelect + 1;

            // no waiting here
            should_detect = false;
        }

        // carry on to other tasks
        if(enemy_is_near)
        {
            if(fight() == LOSING)
               should_detect = true;
        }
    }
}

假设
SensorValue
来自与while循环异步的物理组件,并且是一个按钮(即不是切换按钮)

通过某些内置函数或递增整数获取当前时间,并在达到最大值后进行换行

或者,如果您处于另一种情况:

task autonomous()
{
    while(true)
    {
        // check whether the flag allows incrementing
        if(should_detect && SensorValue[positionSelectButton] == 1)
        {
            positionSelect = positionSelect + 1;

            // no waiting here
            should_detect = false;
        }

        // carry on to other tasks
        if(enemy_is_near)
        {
            if(fight() == LOSING)
               should_detect = true;
        }
    }
}

如何
positionSelect=1?或者将其设置回0
SensorValue[positionSelectButton]=0
对不起,我需要它递增。你确定没有一种简单的方法可以做到这一点吗?不如
positionSelect=1?或者将其设置回0
SensorValue[positionSelectButton]=0
对不起,我需要它递增。你确定没有简单的方法吗?对不起,我需要它来增加。。。有办法吗?对不起,我需要它来增加。。。有没有办法做到这一点?我不确定我的微控制器是否能处理这一点。我该怎么做呢?@Mia你在用什么?微控制器和环境。@Mia更新了答案。如何实现它是您必须在文档中查找的内容。@Mia我使用Arduino,因此除此之外我无能为力:)我不确定我拥有的微控制器是否能够处理这个问题。我该怎么做呢?@Mia你在用什么?微控制器和环境。@Mia更新了答案。如何实现它是您必须在文档中查找的内容。@Mia我使用Arduino,因此除此之外我无能为力:)我只是指
time\t
变量。我只是指
time\t
变量。