#include <stdio.h>
#include "pico/stdlib.h"
#define RGB_BASE_PIN 17
const uint32_t RGB_MASK = 1 << RGB_BASE_PIN | // Pin 17
1 << RGB_BASE_PIN + 1 | // Pin 18
1 << RGB_BASE_PIN + 2; // Pin 19
int main() {
stdio_init_all();
// Enable pins 17, 18 & 19 as input
gpio_init_mask(RGB_MASK);
uint32_t gpio;
while (true) {
// Extract desired bits from GPIO with RGB_MASK and shift right
// This gives us a 3 bit value in the form 0b<b><g><r>
gpio = (gpio_get_all() & RGB_MASK) >> RGB_BASE_PIN;
// Perform comparisons on the 3 bits to determine the state of the RGB LED
switch(gpio) {
case 0b110: // red
printf("off\n");
break;
case 0b100: // yellow
printf("optical\n");
break;
case 0b000: // white
printf("aux\n");
break;
case 0b101: // green
printf("line-in\n");
break;
case 0b011: // blue
printf("bluetooth\n");
break;
case 0b111: // off
printf("none\n");
break;
default:
printf("unknown\n");
}
sleep_ms(500);
}
return 0;
}