Вывод REF на Nano

Нет ответов
popUP
Offline
Зарегистрирован: 09.10.2014

Доброго времени суток!

Подскажите, кто знает, правильно ли я решил возникший вопросик?

Делал пример для начинающих с термодатчиком 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();
}