从 Arduino Infraredreceiver 读取四个不同的值

Read four different values from an Arduino Infraredreceiver

我想从 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 不停。我也尝试清除缓冲区。但它没有任何用处。

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

int IRNumbers(int i) {
    char number;

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

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

        ...