Search code examples
craspberry-pi

Need recommendation on control structure for simple led program


Assignment requires 4 int input to select different mode of LED blinking

  1. On
  2. Off
  3. Blinking
  4. Reduced duty cycle

Would apperciate advice on a better implementation of control structure.

Current implmentation

int main() 
{
    wiringPiSetup();
    pinMode (23, OUTPUT) ;
    pinMode (26, OUTPUT) ;
    
    int select; 
    printf("\nKey in number: ");
    scanf("%d", &select);
    if (select == 1)
    {
        turnOn();
        main();
    } 
    else if (select == 0)
    {
        turnOff();
        main();
    }
    else if (select == 2)
    {
        blinking();
        main();
    }
    else if (select == 3)
    {
        pattern();
        main();
    }
    return 0;
}

Solution

  • Calling main everytime is unnecessary if you want to loop back you can just use a while(true) it will stay there forever(you can change this by putting a condition). And using a chain of if else looks bad. Switch case is much better (its faster).

    int main() {
        wiringPiSetup();
        pinMode (23, OUTPUT) ;
        pinMode (26, OUTPUT) ;
        
        while(true) {
            int select; 
            printf("\nKey in number: ");
            scanf("%d", &select);
    
            switch(select) {
                case 0:
                    turnOff();
                    break;
                case 1:
                    turnOn();
                    break;
                case 2:
                    blinking();
                    break;
                case 3:
                    pattern();
                    break;
            }
        }
        
        return 0;
    }