Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.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
Ios 探测脉冲物镜_Ios_Input_Arduino - Fatal编程技术网

Ios 探测脉冲物镜

Ios 探测脉冲物镜,ios,input,arduino,Ios,Input,Arduino,目前,我正在创建一个iOS应用程序,它可以可视化arduino的端口状态。因此,iPad通过串行电缆从Arduino接收信息。 Arduino每100毫秒发送一个包含当前端口状态的包。这种状态可以在iPad上看到。 这些端口是输入端口。我已经认识到我正在读取的设备正在脉冲端口,因此Arduino读取高低电平交替。这会在可视化中创建闪烁。 我现在的问题是如何检测电平是否升高或输入是否闪烁。 端口高达x秒,低达y秒,然后重复。如果端口低达z秒,我需要在可视化中将端口设置为低。否则就高了 - (voi

目前,我正在创建一个iOS应用程序,它可以可视化arduino的端口状态。因此,iPad通过串行电缆从Arduino接收信息。 Arduino每100毫秒发送一个包含当前端口状态的包。这种状态可以在iPad上看到。 这些端口是输入端口。我已经认识到我正在读取的设备正在脉冲端口,因此Arduino读取高低电平交替。这会在可视化中创建闪烁。 我现在的问题是如何检测电平是否升高或输入是否闪烁。 端口高达x秒,低达y秒,然后重复。如果端口低达z秒,我需要在可视化中将端口设置为低。否则就高了

- (void) readBytesAvailable:(UInt32)numBytes {
int bytesRead = [manager read:rxBuffer Length:numBytes];

 if(rxBuffer[i]==48){
        [self setButtonRed];
    }else if(rxBuffer[i]==49){
        [self setButtonWhite]
        }
    }

如果我理解得很好的话,场景是这样的:您想要确定输出是改变其状态还是卡在地上。您没有指定句点/上下限时间或管脚数,因此我假设您有四个按钮连接到arduino管脚1、2、3、5,我将使用文字

您必须将CHECK_PERIOD设置为适当的采样周期,以便可以对每个状态的输入进行4/5次采样,并检查_迭代,以便也可以忽略某些点

例如,如果正常波高100ms,低100ms,我将CHECK_PERIOD设置为20,CHECK_迭代设置为3或4

long previousInputCheck;
#define NUM_INPUTS 4
const int inputPins[] = { 1, 2, 3, 5}
unsigned char inputCounter[NUM_INPUTS];
unsigned char inputStates[NUM_INPUTS];

... THEN, INTO THE MAIN ...
if ((millis() - previousInputCheck) >= CHECK_PERIOD)
{
    previousInputCheck += CHECK_PERIOD;
    unsigned char i;
    for (i = 0; i < NUM_INPUTS; i++)
    {
        if (digitalRead(inputPins[i]) == LOW)
        {
            if (inputCounter[i] <= CHECK_ITERATIONS)
                inputCounter[i]++;
            if (inputCounter[i] == CHECK_ITERATIONS)
            {
                inputStates[i] = LOW;
            }
        }
        else
        { // HIGH
            inputCounter[i] = 0;
            inputStates[i] = HIGH;
        }
    }
}

所以你有闪烁,因为你有浮动输入?嗯,我认为最好的解决办法是。。不要让它们漂浮。使用大型上拉或下拉,例如100千欧。然后直接在arduino代码中实现一种去抖动,这样读数会更稳定。闪烁是因为我正在读取的设备正在将输出端口更改为输入端口,以便在连接到同一端口的按钮状态下读取。有一个LED和一个按钮连接,这项技术被称为三线制。我用一个光耦十比一地读取线路的状态。光耦并联首先我希望有一个限制电阻与LED串联;无论如何,你把一个光耦放在接触点1的线路上,好的,我假设你把光耦的另一侧连接到arduino。好啊现在,耦合器通常只有一个晶体管作为输出级。你是怎么连接的?我是这样连接光电的: