1 #include "pico/stdlib.h"
2 #include "hardware/gpio.h"
3 #include "hardware/adc.h"
4 #include "hardware/pwm.h"
5 #include "hardware/clocks.h"
7 #define GPIO_FUNC_ADC 20
31 pinInfo =
new uint8_t[maxPins];
32 for (
int j=0; j<maxPins;j++){
33 pinInfo[j] = GPIO_FUNC_NULL;
38 bool setFunction(pin_size_t pinNumber, gpio_function func){
40 if (pinInfo[pinNumber]!=func){
41 gpio_set_function(pinNumber, func);
48 void setFunctionADC(pin_size_t pinNumber) {
53 if (pinInfo[pinNumber] != GPIO_FUNC_ADC){
54 adc_gpio_init(pinNumber);
55 pinInfo[pinNumber] = GPIO_FUNC_ADC;
59 int adc = pinNumber - 26;
60 if (current_adc != adc){
61 adc_select_input((id_t)adc);
76 int readPWM(
int pinNumber,
float scale=100.0){
77 uint slice_num = pwm_gpio_to_slice_num(pinNumber);
79 pwm_config cfg = pwm_get_default_config();
80 pwm_config_set_clkdiv_mode(&cfg, PWM_DIV_B_HIGH);
81 pwm_config_set_clkdiv(&cfg, 100);
82 pwm_init(slice_num, &cfg,
false);
83 gpio_set_function(pinNumber, GPIO_FUNC_PWM);
85 pwm_set_enabled(slice_num,
true);
87 pwm_set_enabled(slice_num,
false);
88 float counting_rate = clock_get_hz(clk_sys) / 100;
89 float max_possible_count = counting_rate * 0.01;
90 int result = pwm_get_counter(slice_num) / max_possible_count * scale;
The pico requires that the function of the pin is defined. In Arduino, there is no such concept: so w...
Definition: PicoGPIOFunction.h:28