View Single Post
Eski 26-04-2017, 19:57   #12
kahvelekesi
Yeni Üye
 
Giriş Tarihi: 06-03-2017
Şehir: KOCAELİ
Mesajlar: 19

KOD
Alıntı:


#include <OneWire.h>
#include <DallasTemperature.h>

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
//#include <LCD5110_Basic.h>
//LCD5110 myGLCD(7,6,5,3,4);
//extern uint8_t SmallFont[];
//extern uint8_t MediumNumbers[];
//extern uint8_t BigNumbers[];

int role=11;
int R1= 1000;
int Ra=25; //Resistance of powering Pins
int ECPin= A0;
int ECGround=A1;
int ECPower =A4;

float PPMconversion=0.5;
float TemperatureCoef = 0.019;
float K=2.40 ;

#define ONE_WIRE_BUS 10 // Data wire For Temp Probe is plugged into pin 10 on the Arduino
const int TempProbePossitive =8; //Temp Probe power connected to pin 9
const int TempProbeNegative=9; //Temp Probe Negative connected to pin 8

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);// Pass our oneWire reference to Dallas Temperature.


float Temperature=10;
float EC=0;
float EC25 =0;
int ppm =0;


float raw= 0;
float Vin= 5;
float Vdrop= 0;
float Rc= 0;
float buffer=0;

void setup()
{

//myGLCD.InitLCD();
//myGLCD.setContrast(60);


pinMode(role, OUTPUT);
pinMode(TempProbeNegative , OUTPUT ); //seting ground pin as output for tmp probe
digitalWrite(TempProbeNegative , LOW );//Seting it to ground so it can sink current
pinMode(TempProbePossitive , OUTPUT );//ditto but for positive
digitalWrite(TempProbePossitive , HIGH );
pinMode(ECPin,INPUT);
pinMode(ECPower,OUTPUT);//Setting pin for sourcing current
pinMode(ECGround,OUTPUT);//setting pin for sinking current
digitalWrite(ECGround,LOW);//We can leave the ground connected permanantly

delay(100);// gives sensor time to settle
sensors.begin();
delay(100);
R1=(R1+Ra);// Taking into acount Powering Pin Resitance

};

void loop()
{
GetEC();
GetRole();
PrintReadings(); // Cals Print routine [below main loop]
delay(60000);

}

void GetEC(){
sensors.requestTemperatures();// Send the command to get temperatures
Temperature=sensors.getTempCByIndex(0); //Stores Value in Variable
digitalWrite(ECPower,HIGH);
raw= analogRead(ECPin);
raw= analogRead(ECPin);// This is not a mistake, First reading will be low beause if charged a capacitor
digitalWrite(ECPower,LOW);

Vdrop= (Vin*raw)/1024.0;
Rc=(Vdrop*R1)/(Vin-Vdrop);
Rc=Rc-Ra; //acounting for Digital Pin Resitance
EC = 1000/(Rc*K);

EC25 = EC/ (1+ TemperatureCoef*(Temperature-25.0));
ppm=(EC25)*(PPMconversion*1000);


}

void GetRole(){
if( EC25 < 0.20 )
{

digitalWrite(role, HIGH);
delay(3000);
digitalWrite(role, LOW);


}
}

void PrintReadings(){
Serial.begin(9600);
display.begin();
display.setContrast(60);
display.clearDisplay(); // clears the screen and buffer
display.setTextSize(2);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println(EC25);
display.setCursor(55,0);
display.print("EC");
display.setCursor(0,15);
display.println(ppm);
display.setCursor(45,15);
display.print("PPM");
display.setCursor(0,30);
display.println(Temperature);
display.setCursor(65,30);
display.print("C");
display.display();
//myGLCD.clrScr();
// myGLCD.setFont(MediumNumbers);
// myGLCD.printNumI(EC25,0,0);
//myGLCD.setFont(SmallFont);
//myGLCD.print("Simens",45,10);

// myGLCD.setFont(MediumNumbers);
//myGLCD.printNumI(ppm,0,20);
// myGLCD.setFont(SmallFont);
//myGLCD.print("Ppm",45,25);


//myGLCD.setFont(MediumNumbers);
// myGLCD.printNumI(Temperature,0,35);
// myGLCD.setFont(SmallFont);
//myGLCD.print("C",45,40);


//Serial.print(Rc);
//Serial.print(" EC: ");
Serial.print(EC25);
//Serial.print(" Simens ");
Serial.print(ppm);
//Serial.print(" ppm ");
Serial.print(Temperature);
// Serial.println(" *C ");
//Serial.print("Vdrop: ");
//Serial.println(Vdrop);
//Serial.print("Rc: ");
//Serial.println(Rc);
//Serial.print(EC);
//Serial.println("Siemens");
}

;
Bu şekilde yapabilirim

kahvelekesi Çevrimdışı   Alıntı Yaparak Cevapla Başa Dön