Search code examples
arduinoinfrared

Read four different values from an Arduino Infraredreceiver


I want to get 4 different values from an Infraredreceiver. Each call to the function IRNumbers should wait for an signal. But when it gets the first value, it continues and do not stop at the while-loop. It only uses the first value three more times..
Here is my code:

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;
}

I do not know why the while-loop doesn't stop. I tried clearing the buffer too. But it did nothing useful.


Solution

  • I believe you need to call irrecv.resume() before you attempt to read the next value. For example:

    int IRNumbers(int i) {
        char number;
    
        while (!irrecv.decode( & results));
        irrecv.resume();
    
        switch (results.value) {
            case 16738455:
                number = '0';
                break;
    
            ...