diff options
author | Sumeet Koli | 2018-06-27 12:54:12 +0530 |
---|---|---|
committer | Sumeet Koli | 2018-06-27 12:54:12 +0530 |
commit | 773e2f1fcd71c2a6a857ca5ad6fea748b0962d98 (patch) | |
tree | 7a9f05d07acf2d7d683ca89e46ffffe12ee471f1 /Source/modelPlugFirmata.cpp | |
parent | fabb419af36a7085b899a4df920641ead1a7396b (diff) | |
download | OpenModelicaEmbedded-773e2f1fcd71c2a6a857ca5ad6fea748b0962d98.tar.gz OpenModelicaEmbedded-773e2f1fcd71c2a6a857ca5ad6fea748b0962d98.tar.bz2 OpenModelicaEmbedded-773e2f1fcd71c2a6a857ca5ad6fea748b0962d98.zip |
Bugs fixed
Diffstat (limited to 'Source/modelPlugFirmata.cpp')
-rw-r--r--[-rwxr-xr-x] | Source/modelPlugFirmata.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Source/modelPlugFirmata.cpp b/Source/modelPlugFirmata.cpp index cd4441e..8ad53cf 100755..100644 --- a/Source/modelPlugFirmata.cpp +++ b/Source/modelPlugFirmata.cpp @@ -21,6 +21,7 @@ #include <stdint.h> #include <algorithm> #include <vector> +#include <cmath> #include "serial.h" #include "modelPlugFirmata.h" @@ -81,7 +82,7 @@ public: void writeDigitalPin(uint32_t pin,uint32_t value); void writeAnalogPin(uint32_t pin, uint32_t value); void writeServoPin(uint32_t pin, uint32_t value, int min, int max); - double readAnalogPin(uint32_t pin, double min, double max, double init); + double readAnalogPin(uint32_t pin, double min, double max, double init, int adcResolution); uint32_t readDigitalPin(uint32_t pin, int init); void setServoConfig(uint32_t pin,uint32_t min,uint32_t max); @@ -244,12 +245,12 @@ void firmataBoard::writeServoPin(uint32_t pin, uint32_t value, int min, int max) } } -double firmataBoard::readAnalogPin(uint32_t pin,double min, double max, double init){ +double firmataBoard::readAnalogPin(uint32_t pin,double min, double max, double init, int adcResolution){ if(ready){ if(pin_info[pin].mode!=MODE_ANALOG) setPinMode(pin,MODE_ANALOG); if(pin_info[pin].ready) - return min+((pin_info[pin].value/1023.0)*(max-min)); + return min+((pin_info[pin].value/(pow(2, adcResolution)-1))*(max-min)); else return init; } @@ -652,9 +653,9 @@ EXPORT int getBoardId(void* object){ return -1; } -EXPORT double readAnalogPin(int pin, double min, double max, double init, int id){ +EXPORT double readAnalogPin(int pin, double min, double max, double init, int id, int adcResolution){ firmataBoard* board = firmataBoardHandler::instance()->getBoard(id); - double value = board->readAnalogPin(pin,min,max,init); + double value = board->readAnalogPin(pin,min,max,init, adcResolution); return value; } EXPORT int readDigitalPin(int pin, int init, int id){ |