Вывод 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();
}