kopia lustrzana https://github.com/pimoroni/pimoroni-pico
Added analog class for plasma current reading
rodzic
84acf406a2
commit
fa17f2e77e
|
@ -1,3 +1,4 @@
|
||||||
|
add_subdirectory(analog)
|
||||||
add_subdirectory(esp32spi)
|
add_subdirectory(esp32spi)
|
||||||
add_subdirectory(ioexpander)
|
add_subdirectory(ioexpander)
|
||||||
add_subdirectory(ltp305)
|
add_subdirectory(ltp305)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
include(analog.cmake)
|
|
@ -0,0 +1,11 @@
|
||||||
|
set(DRIVER_NAME analog)
|
||||||
|
add_library(${DRIVER_NAME} INTERFACE)
|
||||||
|
|
||||||
|
target_sources(${DRIVER_NAME} INTERFACE
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/${DRIVER_NAME}.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(${DRIVER_NAME} INTERFACE ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
|
# Pull in pico libraries that we need
|
||||||
|
target_link_libraries(${DRIVER_NAME} INTERFACE pico_stdlib hardware_adc)
|
|
@ -0,0 +1,18 @@
|
||||||
|
#include "analog.hpp"
|
||||||
|
|
||||||
|
namespace pimoroni {
|
||||||
|
uint16_t Analog::read_raw() {
|
||||||
|
return adc_read();
|
||||||
|
}
|
||||||
|
|
||||||
|
float Analog::read_voltage() {
|
||||||
|
return ((float)adc_read() * 3.3f) / (1 << 12) / amplifier_gain;
|
||||||
|
}
|
||||||
|
|
||||||
|
float Analog::read_current() {
|
||||||
|
if(resistor > 0.0f)
|
||||||
|
return read_voltage() / resistor;
|
||||||
|
else
|
||||||
|
return read_voltage();
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,31 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "pico/stdlib.h"
|
||||||
|
#include "hardware/adc.h"
|
||||||
|
#include "common/pimoroni_common.hpp"
|
||||||
|
|
||||||
|
namespace pimoroni {
|
||||||
|
|
||||||
|
class Analog {
|
||||||
|
public:
|
||||||
|
Analog(uint pin, float amplifier_gain = 1.0f, float resistor = 0.0f) :
|
||||||
|
pin(pin), amplifier_gain(amplifier_gain), resistor(resistor) {
|
||||||
|
adc_init();
|
||||||
|
|
||||||
|
//Make sure GPIO is high-impedance, no pullups etc
|
||||||
|
adc_gpio_init(pin);
|
||||||
|
|
||||||
|
//Select ADC input 0 (GPIO26)
|
||||||
|
adc_select_input(pin - 26);
|
||||||
|
};
|
||||||
|
uint16_t read_raw();
|
||||||
|
float read_voltage();
|
||||||
|
float read_current();
|
||||||
|
private:
|
||||||
|
uint pin;
|
||||||
|
float amplifier_gain;
|
||||||
|
float resistor;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Ładowanie…
Reference in New Issue