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
34 pinInfo =
new uint8_t[maxPins];
35 for (
int j=0; j<maxPins;j++){
36 pinInfo[j] = GPIO_FUNC_NULL;
41 bool setFunction(pin_size_t pinNumber, gpio_function func){
43 if (pinInfo[pinNumber]!=func){
44 gpio_set_function(pinNumber, func);
51 void setFunctionADC(pin_size_t pinNumber) {
56 if (pinInfo[pinNumber] != GPIO_FUNC_ADC){
57 adc_gpio_init(pinNumber);
58 pinInfo[pinNumber] = GPIO_FUNC_ADC;
62 int adc = pinNumber - 26;
63 if (current_adc != adc){
64 adc_select_input((id_t)adc);
79 int readPWM(
int pinNumber,
float scale=100.0){
80 uint slice_num = pwm_gpio_to_slice_num(pinNumber);
82 pwm_config cfg = pwm_get_default_config();
83 pwm_config_set_clkdiv_mode(&cfg, PWM_DIV_B_HIGH);
84 pwm_config_set_clkdiv(&cfg, 100);
85 pwm_init(slice_num, &cfg,
false);
86 gpio_set_function(pinNumber, GPIO_FUNC_PWM);
88 pwm_set_enabled(slice_num,
true);
90 pwm_set_enabled(slice_num,
false);
91 float counting_rate = clock_get_hz(clk_sys) / 100;
92 float max_possible_count = counting_rate * 0.01;
93 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:31