从Arduino红外接收器读取四个不同的值

时间:2015-12-11 19:27:50

标签: arduino infrared

我想从Infraredreceiver获得4个不同的值。每次调用函数IRNumbers都应该等待一个信号。但是当它获得第一个值时,它会继续并且不会停留在while-loop。它只使用第一个值三次..
这是我的代码:

int IRNumbers(int i) {
    char number;

    while (!irrecv.decode( & results));

    switch (results.value) {
        case 16738455:
            number = '0';
            break;

        case 16724175:
            number = '1';
            break;

        case 16718055:
            number = '2';
            break;

            ...

        default:
            IRNumbers(i);
            break;
    }
    return number;
}

我不知道为什么while-loop没有停止。我也尝试清除缓冲区。但它没有任何用处。

1 个答案:

答案 0 :(得分:0)

我相信你需要在尝试读取下一个值之前调用irrecv.resume()。例如:

int IRNumbers(int i) {
    char number;

    while (!irrecv.decode( & results));
    irrecv.resume();

    switch (results.value) {
        case 16738455:
            number = '0';
            break;

        ...