// (ANNOBI) M14 Activity: Raspberry Pi Pico; 0-F 7-SEGMENT DISPLAY
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
#define FIRST_GPIO 2
#define BUTTON_GPIO (FIRST_GPIO+7)
// This array converts a number 0-9 to a bit pattern to send to the GPIO's
int bits[16] = {
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x67, // 9
0x77, // A
0x7C, // b
0x39, // C
0x5E, // d
0x79, // E
0x71 // F
};
void setup() {
Serial1.begin(115200);
Serial1.println("Hello, 7segment - press button to count down!");
for (int gpio = FIRST_GPIO; gpio < FIRST_GPIO + 7; gpio++) {
gpio_init(gpio);
gpio_set_dir(gpio, GPIO_OUT);
gpio_set_outover(gpio, GPIO_OVERRIDE_INVERT);
}
gpio_init(BUTTON_GPIO);
gpio_set_dir(BUTTON_GPIO, GPIO_IN);
gpio_pull_up(BUTTON_GPIO);
int val = 0;
while (true) {
if (!gpio_get(BUTTON_GPIO)) {
if (val == 15) {
val = 0;
} else {
val++;
}
} else if (val == 0) {
val = 15;
} else {
val--;
}
// We are starting with GPIO 2, our bitmap starts at bit 0 so shift to start at 2.
int32_t mask = bits[val] << FIRST_GPIO;
// Set all our GPIO's in one go!
// If something else is using GPIO, we might want to use gpio_put_masked()
gpio_set_mask(mask);
sleep_ms(250);
gpio_clr_mask(mask);
}
}
/// \end::hello_gpio[]
void loop() {}