Помогите в написании библиотеки
- Войдите на сайт для отправки комментариев
Ср, 18/10/2017 - 18:04
Написал самую простенькую библиотеку(первую в моей жизни).Написал просто так, для ознакомления с программированием Ардуино, и встретился с проблемой.
Суть проблемы: в скетче через эту библиотеку вывожу значения в порт.Но значения, приходящие в порт равны нулю.Однако, если заменить строчку кода " (analogRead(pin)*5.0)/1023.0; "(в файле analog.cpp) на любое число(или переменную "pin"), то оно приходит в порт в "целости и сохранности".
Файл analog.cpp:
#include "analog.h" Analog::Analog(int pin){ pinMode(pin, INPUT); analogVolt =(analogRead(pin)*5.0)/1023.0; }
файл analog.h:
#ifndef Analog_h #define Analog_h #include "Arduino.h" class Analog { public: Analog(int pin); long analogVolt; private: }; #endif
скетч:
#include <analog.h> int pin = 3; Analog an(pin); void setup() { Serial.begin(9600); } void loop() { Serial.println(an.analogVolt); delay(500); Serial.println(analogRead(pin)); }
Помогите, пожалуйста, как мне исправить эту проблему.
Помогите, пожалуйста, как мне исправить эту проблему.
Не читать из порта в конструкторе класса, а перенести это в метод, который кликать из loop.
Вопрос #1: вы по недосмотру или намеренно в конструкторе класса считываете int через analogRead() int, который пытаетесь привести к float и засунуть в long?