Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 11-03-2017
Witam.
Potrzebuję pomocy
Potrzebuję dodać do obecnego kodu drugi przekaźnik który załączał by się od 50*C
Próbuję na wszelkie sposoby i cały czas jest załączony.
Do tego dodać 2 czujnik temperatury DS18B20 i trzeci Max 6675 aby wyświetlały się w dolnej linijce wyświetlacza
Kod: #include <DallasTemperature.h>
#include <Wire.h> // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>
int p1 = 8;
int p2 = 6;
int p1state = 0;
int p2state = 0;
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int nastaw = 40; // ustaw temperature
int przekaznik = 12; // pin przekaznik
void setup(void)
{
pinMode(przekaznik,OUTPUT);
lcd.begin(16, 2);
lcd.print("Regulator Temp:");
sensors.begin();
Serial.begin(9600);
}
void wys(void){
sensors.requestTemperatures();
lcd.setCursor(0,0);
lcd.print("T=");
lcd.print(sensors.getTempCByIndex(0));
lcd.print(" ");
lcd.print("N=");
lcd.print(nastaw);
;
if (sensors.getTempCByIndex(0) < (nastaw)) {
digitalWrite(przekaznik,HIGH);
} else {
digitalWrite(przekaznik,LOW);
}
}
void loop(void)
{
p1state = digitalRead(p1);
p2state = digitalRead(p2);
if(p1state == HIGH){nastaw=nastaw+1;}
if(p2state == HIGH){nastaw=nastaw-1;}
wys();
}
Proszę o pomoc bo już mnie głowa rozbolała od szukania
Pozdrawiam Minek
RE: Kilka czujników temp. + termostat 2-przekaznikowy - namok - 11-03-2017
Naucz się podstaw programowania korzystając z dowolnego kursu arduino a zrobisz to z zamkniętymi oczami.
Przykład oprogramowania kilku czujników temperatury znajdziesz w przykładach dołączonych do biblioteki, a jeśli angielski jest problemem to znajdziesz takie przykłady po polsku.
RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017
Gdybym nie męczył się z tym kilka dni to bym nie pisał na forum!
Takie podstawy to jeszcze rozumie (pod warunkiem że są pojedyncze)
gdyby mi ten drugi przekaźnik zadziałał to może dalej bym poszedł.
znam już trochę i pewnie pisząc robię jakiś błąd i w tym problem.
Kod: #include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h> // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>
int p1 = 8;
int p2 = 6;
int p1state = 0;
int p2state = 0;
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int nastaw = 40; // ustaw temperature
int przekaznik = 12; // pin przekaznik
int przekaznik1 = 11; // pin przekaznik
void setup(void)
{
pinMode(przekaznik,OUTPUT);
pinMode(przekaznik1,OUTPUT);
lcd.begin(16, 2);
lcd.print("Regulator Temp:");
sensors.begin();
Serial.begin(9600);
}
void wys(void){
sensors.requestTemperatures();
lcd.setCursor(0,0);
lcd.print("T=");
lcd.print(sensors.getTempCByIndex(0));
lcd.print(" ");
lcd.print("N=");
lcd.print(nastaw);
;
if (sensors.getTempCByIndex(0) < (nastaw)) {
digitalWrite(przekaznik,HIGH);
} else {
digitalWrite(przekaznik,LOW);
if (sensors.getTempCByIndex(0) < (50)) {
digitalWrite(przekaznik1,HIGH);
} else {
digitalWrite(przekaznik1,LOW);
}
}
void loop(void)
{
p1state = digitalRead(p1);
p2state = digitalRead(p2);
if(p1state == HIGH){nastaw=nastaw+1;}
if(p2state == HIGH){nastaw=nastaw-1;}
wys();
}
RE: Kilka czujników temp. + termostat 2-przekaznikowy - ryro.glw - 12-03-2017
niepotrzebnie odczytujesz temperature z ds18 kilka razy pod rzad, odczytaj ja raz i przypisz do zmiennej a potem juz dzialaj na zmiennej
wyslane z Tapatalka
RE: Kilka czujników temp. + termostat 2-przekaznikowy - namok - 12-03-2017
Podstawowa rzecz w programowaniu to formatowanie kodu. Pilnując porządku wiele błędów widać od razu. Poniżej wstawiam Twój kod z zastosowaniem automatycznego formatowania:
Kod: #include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h> // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>
int p1 = 8;
int p2 = 6;
int p1state = 0;
int p2state = 0;
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int nastaw = 40; // ustaw temperature
int przekaznik = 12; // pin przekaznik
int przekaznik1 = 11; // pin przekaznik
void setup(void)
{
pinMode(przekaznik, OUTPUT);
pinMode(przekaznik1, OUTPUT);
lcd.begin(16, 2);
lcd.print("Regulator Temp:");
sensors.begin();
Serial.begin(9600);
}
void wys(void) {
sensors.requestTemperatures();
lcd.setCursor(0, 0);
lcd.print("T=");
lcd.print(sensors.getTempCByIndex(0));
lcd.print(" ");
lcd.print("N=");
lcd.print(nastaw);
;
if (sensors.getTempCByIndex(0) < (nastaw)) {
digitalWrite(przekaznik, HIGH);
} else {
digitalWrite(przekaznik, LOW);
if (sensors.getTempCByIndex(0) < (50)) {
digitalWrite(przekaznik1, HIGH);
} else {
digitalWrite(przekaznik1, LOW);
}
}
void loop(void)
{
p1state = digitalRead(p1);
p2state = digitalRead(p2);
if (p1state == HIGH) {
nastaw = nastaw + 1;
}
if (p2state == HIGH) {
nastaw = nastaw - 1;
}
wys();
}
Jeśli używasz bibliotek to podawaj ich źródła.
RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017
Witam zacząłem od nowa bo sam już się pogubiłem
Pierwsze uruchomienie z 3 czujnikami 2x DS18B20 i 1 Max6675
Na wyświetlaczu pokazuje mi 2 dobre temp. z czujników Ds i 0.00 z czujnika Max
Jak rozwiąże ten problem to dopisze się regulacje temp. z konkretnego czujnika.
Pozdrawiam
Kod PHP: #include <LiquidCrystal_I2C.h> #include <Wire.h> // #include <OneWire.h> #include <DallasTemperature.h> #include <DS18B20.h> #include "max6675.h" //Definicje, definicje: #define SO_PIN 2 // 6675 Serial Output #define CS_PIN 3 // 6675 Chip Select #define CK_PIN 4 // 6675 Clock Pin
#define TOO_HOT 75.0 // To try limit calculation #define TOO_COLD 62.5 MAX6675 thermocouple(CK_PIN, CS_PIN, SO_PIN); LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
OneWire oneWire(7); //Podłączenie do 7 DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki float DegreesC; DeviceAddress a = { 0x28, 0xFF, 0x6E, 0xE5, 0x33, 0x16, 0x4, 0x2E }; DeviceAddress b = { 0x28, 0xFF, 0x3, 0xE7, 0x33, 0x16, 0x4, 0xD4 };
void setup(void) { Serial.begin(9600); sensors.begin(); //Inicjalizacja czujnikow lcd.begin(16, 2); //Deklaracja typu lcd.setCursor(0,0); lcd.print("W="); lcd.print(sensors.getTempCByIndex(0)); lcd.setCursor(0,1); lcd.print("P="); lcd.print(sensors.getTempCByIndex(1)); lcd.setCursor(8,1); lcd.print("S="); lcd.print(DegreesC); } void loop(void) { sensors.requestTemperatures(); //Pobranie temperatury czujnika Serial.print("Woda: "); Serial.println(sensors.getTempCByIndex(0)); //Wyswietlenie informacji delay(500); Serial.print("Powietrze: "); Serial.println(sensors.getTempCByIndex(1)); //Wyswietlenie informacji delay(500); DegreesC = thermocouple.readCelsius(); Serial.print("C = "); Serial.println(DegreesC); delay(250); }
RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017
Na monitorze portu mam takie odczyty:
a: 20.81
b: 20.69
C: 25.25
-127.00
a: 20.81
b: 20.62
C: 25.25
-127.00
Na wyświetlaczu widnieje pod czujnikiem -127
Jakieś pomysły?
Kod PHP: #include <LiquidCrystal_I2C.h> #include <Wire.h> // #include <OneWire.h> #include <DallasTemperature.h> #include <DS18B20.h> #include "max6675.h" //Definicje, definicje: #define SO_PIN 2 // 6675 Serial Output #define CS_PIN 3 // 6675 Chip Select #define CK_PIN 4 // 6675 Clock Pin
#define TOO_HOT 75.0 // To try limit calculation #define TOO_COLD 62.5 MAX6675 thermocouple(CK_PIN, CS_PIN, SO_PIN); float DegreesC; LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
OneWire oneWire(7); //Podłączenie do 7 DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki
DeviceAddress a = { 0x28, 0xFF, 0x6E, 0xE5, 0x33, 0x16, 0x4, 0x2E }; DeviceAddress b = { 0x28, 0xFF, 0x3, 0xE7, 0x33, 0x16, 0x4, 0xD4 };
void setup(void) { Serial.begin(9600); sensors.begin(); //Inicjalizacja czujnikow lcd.begin(16, 2); //Deklaracja typu lcd.setCursor(0,0); lcd.print("W="); lcd.print(sensors.getTempCByIndex(0)); lcd.setCursor(0,1); lcd.print("P="); lcd.print(sensors.getTempCByIndex(1)); lcd.setCursor(8,1); lcd.print("S="); lcd.print(sensors.getTempCByIndex(3));
} void loop(void) { sensors.requestTemperatures(); //Pobranie temperatury czujnika Serial.print("a: "); Serial.println(sensors.getTempCByIndex(0)); //Wyswietlenie informacji delay(500); Serial.print("b: "); Serial.println(sensors.getTempCByIndex(1)); //Wyswietlenie informacji delay(500);
DegreesC = thermocouple.readCelsius();
Serial.print("C: "); Serial.println(DegreesC); Serial.println(sensors.getTempCByIndex(3)); delay(500); }
RE: Kilka czujników temp. + termostat 2-przekaznikowy - -adamek - 12-03-2017
Serial.println(sensors.getTempCByIndex(3)); Co to jest ?
RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017
(12-03-2017, 13:51)-adamek napisał(a): Serial.println(sensors.getTempCByIndex(3)); Co to jest ?
próbowałem odnieś się do czujnika 6675 aby był widoczny na wyświetlaczu
RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017
Przy tych ustawieniach dobrze pokazuje na monitorze portów ale na wyświetlaczu 0.00
Woda: 47.81
Powietrze: 21.81
C = 27.50
Woda: 47.81
Powietrze: 21.81
C = 28.00
Kod PHP: #include <LiquidCrystal_I2C.h> #include <Wire.h> // #include <OneWire.h> #include <DallasTemperature.h> #include <DS18B20.h> #include "max6675.h" //Definicje, definicje: #define SO_PIN 2 // 6675 Serial Output #define CS_PIN 3 // 6675 Chip Select #define CK_PIN 4 // 6675 Clock Pin
#define TOO_HOT 75.0 // To try limit calculation #define TOO_COLD 62.5 MAX6675 thermocouple(CK_PIN, CS_PIN, SO_PIN); LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
OneWire oneWire(7); //Podłączenie do 7 DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki float DegreesC; DeviceAddress a = { 0x28, 0xFF, 0x6E, 0xE5, 0x33, 0x16, 0x4, 0x2E }; DeviceAddress b = { 0x28, 0xFF, 0x3, 0xE7, 0x33, 0x16, 0x4, 0xD4 };
void setup(void) { Serial.begin(9600); sensors.begin(); //Inicjalizacja czujnikow lcd.begin(16, 2); //Deklaracja typu lcd.setCursor(0,0); lcd.print("W="); lcd.print(sensors.getTempCByIndex(0)); lcd.setCursor(0,1); lcd.print("P="); lcd.print(sensors.getTempCByIndex(1)); lcd.setCursor(8,1); lcd.print("C="); lcd.print(DegreesC); } void loop(void) { sensors.requestTemperatures(); //Pobranie temperatury czujnika Serial.print("Woda: "); Serial.println(sensors.getTempCByIndex(0)); //Wyswietlenie informacji delay(500); Serial.print("Powietrze: "); Serial.println(sensors.getTempCByIndex(1)); //Wyswietlenie informacji delay(500); Serial.print("C = "); Serial.println(DegreesC); DegreesC = thermocouple.readCelsius(); delay(250); }
|