I'm sorry my English is not good.
my previous post was disappeared, so I repost it.
#include "U8glib.h"
#include <avr/dtostrf.h>
//#include <Capacitor.h>
#include <CapacitorLite.h>
#define R1 679
#define Vin 5
char temperature [8];
char humidity [5];
float capacitor;
float mvolt;
float resis;
float temp;
float filtervalue;
float sensorvalue;
//Digital pin 7, analog pin 2
CapacitorLite cap(7, A2);
U8GLIB_ST7920_128X64 u8g(SCK,MOSI,10, U8G_PIN_NONE);
void setup() {
Serial.begin(9600);
// flip screen, if required
// u8g.setRot180();
// set SPI backup if required
//u8g.setHardwareBackup(u8g_backup_avr_spi);
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
pinMode(8, OUTPUT);
}
void loop() {
readTemperature();
readHumidity();
//LCD (draw)
u8g.setFont(u8g_font_unifont);
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
delay(1000);
}
void draw(){
u8g.drawFrame(0,0,128,31);
u8g.drawFrame(0,33,128,31);
u8g.drawStr(19, 13, "Temperature");
u8g.drawStr(40, 28, temperature);
u8g.drawStr(75, 28, "\xb0");
u8g.drawStr(80, 28, "C");//°
u8g.drawStr(30, 46, "Humidity");
u8g.drawStr(40, 61, humidity);
u8g.drawStr(80, 61, "%");
}
void readTemperature()
{
analogReadResolution(12);
//sensorvalue = analogRead(A0);
filtervalue = 0;
for(int i=0;i<10;i++) {
analogReadResolution(12);
filtervalue += analogRead(A0);
delayMicroseconds(100);
}
filtervalue /= 10;
//second type filtervalue finish
//0~5V convert-> mV convert!
mvolt = (filtervalue*Vin*1000)/4095.0;
//volt to resistance
resis = R1 * mvolt / (Vin*1000 - mvolt);
temp = (resis - 923.87)/3.6514;
dtostrf(temp, 4, 1, temperature);
}
void readHumidity()
{
cap.SetResolution(12);
capacitor = cap.Measure();
capacitor /= 100;
dtostrf(capacitor, 3, 1, humidity);
}
I want to see temperature and humidity on LCD, but when I operate my code, I can get wrong capacity value.
On previous post, someone said that Capacitor library measures total capacity...
So, how can I get right humidity on my code?