Вывод REF на Nano
- Войдите на сайт для отправки комментариев
Доброго времени суток!
Подскажите, кто знает, правильно ли я решил возникший вопросик?
Делал пример для начинающих с термодатчиком LN35. Для более точного расчета температуры использовал analogReference(INTERNAL).
Потом добавил фоторезистор и начались непонятки. Фоторезистор реагирует только при большой засветке и как-то неправильно. Показания LN35 прыгают в большом диапазоне.
Пытался применить analogReference(DEFAULT) для фоторезистора, но, наверное эту функцию 2 раза использовать нельзя. В разделе программирования никто не ответил, и я подумал, что надо решить вопрос на уровне железа.
И воткнул плюс фоторезистора в выход REF на NANO. и Все зарабобтало. Показания стабилизировались, и похожи на правильные. Во всяком случае температуру показывает верно. С освещенностью - не уверен, но изменяется логично.
Один вопрос, правильно ли такое решение, не сожгу ли платку, как долго проработает, есть ли другое правильное решение?
Вот код и пара фоток
#include <Wire.h> #include <SPI.h> //Библиотека (Serial Peripheral Interface), или последовательный периферийный интерфейс #include <Adafruit_GFX.h> //Библиотека экрана #include <Adafruit_SSD1306.h> //Библиотека экрана //Определение Экрана #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); #define NUMFLAKES 10 #define XPOS 0 #define YPOS 1 #define DELTAY 2 #if (SSD1306_LCDHEIGHT != 64) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); #endif int tempPin = A1; // Датчик Температуры LN 35 int photoPin = A2; // фоторезистор int Light; float tempC; //для датчика температуры LN35 int reading; //для датчика температуры LN35 void setup() { Serial.begin(9600); pinMode(photoPin, INPUT); pinMode (tempPin, INPUT); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3С (for the 128x64) display.display(); delay(200); display.clearDisplay(); analogReference(INTERNAL); //для расчета Т } void loop() { display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.clearDisplay(); Light = analogRead(photoPin); // Чтение фоторезистора reading = analogRead(tempPin); // чтение показаний датчика LN35 // tempC = (reading/1024.0)*5000/10; // для расчета с опорным напряжением по дефолту (5в) tempC = reading/9.31; // для расчета с опорным напряжением INTERNAL (1.1в) display.print("ReadT:"); display.print(reading); display.setCursor(0,22); display.print("Temp:"); display.print(tempC); display.setCursor(0,47); display.print("Light:"); display.print(Light); display.display(); delay(200); display.clearDisplay(); }