#include #include "pico/stdlib.h" #include "inventor.hpp" #include "analog.hpp" /* Shows how to initialise and read the 3 ADC headers of Inventor 2040 W. Press "User" to exit the program. */ using namespace inventor; // The brightness of the LEDs constexpr float BRIGHTNESS = 0.4f; // How many times to update LEDs per second const uint UPDATES = 10; const char* ADC_NAMES[] = {"A0", "A1", "A2"}; // Create a new Inventor2040W Inventor2040W board; // Create an analog object for each ADC Analog analogs[] = {Analog(A0), Analog(A1), Analog(A2)}; int main() { stdio_init_all(); // Attempt to initialise the board if(board.init()) { // Pull each analog pin low. This avoids random numbers // when nothing is connected to any of the pins. gpio_set_pulls(A0, false, true); gpio_set_pulls(A1, false, true); gpio_set_pulls(A2, false, true); // Read the GPIOs until the user button is pressed while(!board.switch_pressed()) { // Read each ADC in turn and print its voltage for(uint i = 0; i < NUM_ADCS; i++) { float voltage = analogs[i].read_voltage(); printf("%s = %f, ", ADC_NAMES[i], voltage); // Set the neighbouring LED to a colour based on the // voltage, with Green for high and Blue for low float hue = (2.0f - (voltage / 3.3f)) * 0.333f; board.leds.set_hsv(i + LED_A0, hue, 1.0, BRIGHTNESS); } // Print a new line printf("\n"); sleep_ms(1000 / UPDATES); } // Turn off the LED bars board.leds.clear(); // Sleep a short time so the clear takes effect sleep_ms(100); } }