Εμφάνιση ενός μόνο μηνύματος
  #51  
Παλιά 23-06-16, 02:43
Το avatar του χρήστη apostolis.pan
apostolis.pan Ο χρήστης apostolis.pan δεν είναι συνδεδεμένος
Member
 
Εγγραφή: 25-05-2015
Περιοχή: Κορυδαλλός
Μηνύματα: 268
Προεπιλογή

Με αφορμη την εργασια που παραδινω αυτην την βδομαδα, καθισα και ψιλομαζεψα κωδικα και σχεματικα .
ο κωδικας.

#include <LiquidCrystal.h>
#include <OneWire.h>

LiquidCrystal lcd(5, 4, 3, 2, 1, 0);


int DS18S20_Pin = 6;
OneWire ds(DS18S20_Pin);

int b_up=7;
int b_down=8;
int state=25;
int buttonStateUp = 0;
int buttonStateDown = 0;
int heat = 9;
int cool = 10;
int heatstart=0;
int coolstart=0;
int beeper=13;
long temptime=0;
long n=0;
void setup()
{
lcd.begin(16, 2);
lcd.print("*Temperature*");
lcd.setCursor(0,1);
lcd.print(" *Controller*");
delay(5000);


pinMode(b_up, INPUT);
pinMode(b_down, INPUT);
pinMode(heat, OUTPUT);
pinMode(cool, OUTPUT);
pinMode(beeper,OUTPUT);

}

void loop() {
temptime=millis();
buttonStateUp=digitalRead(b_up);
buttonStateDown=digitalRead(b_down);


if (buttonStateUp==HIGH & state<3
{

state= state+1;
buttonStateUp=LOW;
lcd.setCursor(13, 1);
lcd.print(state);
}


if (buttonStateDown==HIGH&state>16)
{

state= state-1;
buttonStateDown=LOW;
lcd.setCursor(13, 1);
lcd.print(state);
}


delay(150);

float temperature = getTemp();
if (temptime>=n+3000)
{
n=temptime;
if (temperature>800|temperature<-800)
{

lcd.print("NO SENSOR..no sensor..NO SENSOR..no sensor..NO SENSORNO SENSOR..no sensor..NO SENSOR..no sensor..NO SENSOR") ;
delay(500);

}

else
{

/*if (temperature>30&temperature<14)
{

digitalWrite(beeper,HIGH);
digitalWrite(beeper,LOW);
delay(500);

}*/

if (temperature<state)
{

digitalWrite(heat,HIGH);

}

else digitalWrite(heat,LOW);


if (temperature> state)
{

digitalWrite(cool,HIGH);

}

else digitalWrite(cool,LOW);

lcd.setCursor(0,0);
lcd.print("RealTime|");
lcd.print("Control");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(temperature);
lcd.print("C | To:");
lcd.print(state);
lcd.print("C ");
delay(200);
}
}

}

float getTemp(){


byte data[12];
byte addr[8];

if ( !ds.search(addr)) {

ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x2 {
Serial.print("Device is not recognized");
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1);

byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);


for (int i = 0; i < 9; i++) {
data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << | LSB);
float TemperatureSum = tempRead / 16;

return TemperatureSum;
}

ο κωδικας ενδεχεται να εχει και καποια junk μεσα , ειναι απο τις αρχες που ειχα πετυχει αυτο που ηθελα αλλα δεν τον ειχα καθαρισει.. βαρεθηκα να τα βγαλω και στην σχολη ετσι θα τον δοσω.. οταν κατσω να τον καθαρισω θα κανω edit.
__________________
Απάντηση με παράθεση
 
Page generated in 0,01985 seconds with 11 queries