Keresés

Részletes keresés

Gogol69 Creative Commons License 2016.12.23 0 0 2628

Most itt tartok!

 

//I2C-vel illesztett 20x4 LCD-vel és ARDUINO NANO-val
//4DB DS18B20 HŐM. SZENZOR ÉRTÉKÉT ARDUNO NANO-VAL KIJELEZNI 40X4 LCD-VEL
/////////////////////////////////////////
//LCD-I2C IILESZTŐ PANEL - AVR BEKÖTÉSE:
//GND-FEKETE-0V Arduino Nano-hoz
//VCC-FEHER-5V Arduino Nano-hoz
//SDA-LILA- A4 INPUT Arduino Nano-hoz
//SCL-SZURKE- A5 INPUT Arduino Nano-hoz
///////////////////////////////////////
//A négy darab DS18B20 mindkét adatlába összekötve majd lehúzva 4,7kOhm-al a pozitiv taphoz
//adatlábak - D3 pin Arduino Nano-hoz
// sensor resolution 9(0,5 fok pontosság)
// sensor resolution 10(0,25 fok pontosság)
// sensor resolution 11(0,125 fok pontosság)
// sensor resolution 12(0,0625 fok pontosság)
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define ONE_WIRE_BUS 3 //AVR Nano 3. bemenetére kötve D3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress s1 = { 0x28, 0x8A, 0xF7, 0xE1, 0x06, 0x00, 0x00, 0xDB }; //1.szernzor címe másik progival kiolvasva //DS18B20 1-es
DeviceAddress s2 = { 0x28, 0xE1, 0x82, 0x2F, 0x07, 0x00, 0x00, 0xD8 }; //2.szernzor címe másik progival kiolvasva //DS18B20 2-es
DeviceAddress s3 = { 0x28, 0x9B, 0x38, 0x30, 0x07, 0x00, 0x00, 0xDF }; //3.szernzor címe másik progival kiolvasva //DS18B20 3-as
DeviceAddress s4 = { 0x28, 0xCF, 0xCE, 0x2F, 0x07, 0x00, 0x00, 0xB5 }; //4.szernzor címe másik progival kiolvasva //DS18B20 4-es

LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display


void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.begin(20, 4);
sensors.begin();
sensors.setResolution(s1, 9);
}

void loop()
{
// LCD első sor**********************
sensors.requestTemperatures();
delay(500); //fontos ha 11 vagy 12 a resolution
lcd.setCursor(0,0); //0. sor 0. karakter a kezdő cím
lcd.print("Puffer horetegek");
// LCD második sor_1_**********************
lcd.setCursor(0,1); //0. sor 0. karakter a kezdő cím
lcd.print("1");
lcd.print("/");
lcd.setCursor(3,1); //0. sor 3. karakter a kezdő cím
lcd.print(sensors.getTempCByIndex(0)); //Itt irja be a 1-es szenzor adatát
lcd.print("C");
lcd.print(char(223));
// LCD második sor_2_**********************
lcd.setCursor(10,1); //1. sor 10. karakter a kezdő cím
lcd.print("2");
lcd.print("/");
lcd.setCursor(13,1); //1. sor 13. karakter a kezdő cím
lcd.print(sensors.getTempCByIndex(1)); //Itt irja be a 2-es szenzor adatát
lcd.print("C");
lcd.print(char(223));
// LCD harmadik sor_1_**********************
lcd.setCursor(0,2); //2. sor 0. karakter a kezdő cím
lcd.print("3");
lcd.print("/");
lcd.setCursor(3,2); //2. sor 3. karakter a kezdő cím
lcd.print(sensors.getTempCByIndex(2)); //Itt irja be a 3-as szenzor adatát
lcd.print("C");
lcd.print(char(223));
// LCD harmadik sor_2_**********************
lcd.setCursor(10,2); //2. sor 10. karakter a kezdő cím
lcd.print("2");
lcd.print("/");
lcd.setCursor(13,2); //2. sor 13. karakter a kezdő cím
lcd.print(sensors.getTempCByIndex(3)); // Itt irja be a 1-es szenzor adatát
lcd.print("C");
lcd.print(char(223));
// LCD negyedik sor**********************
lcd.setCursor(0,3); //3. sor 10. karakter a kezdő cím
lcd.print("F");
lcd.print("u");
lcd.print("s");
lcd.print("t");
lcd.print("h");
lcd.print(char(239));//ö betű kiirasa
//Max6675 még nem megy! :-(

}

Előzmény: Törölt nick (2625)
spiler0078 Creative Commons License 2016.12.23 0 0 2627

Szia!

Hát valami nem kerek vele az tuti.... Lehet, hogy a nyákon van valami bibi a com portok kivezetésével... Passz, de a lényeg, hogy már müxik az új alappanelemmel.

 

üdv

Spiler

Előzmény: Sploc (2624)
Gogol69 Creative Commons License 2016.12.22 0 0 2626

Szia!

Köszönöm ezt félre teszem amit küldtél.

 Nagyon tetszik amit küldtél!

 Sajnos egyenlőre csak sejtéseim vannak róla hogy mi miért van rajta. :-)

Bár gondolom minden amit szeretnék készíteni már benne van. Sőt olyan is amire nem is gondoltam még.

Most perpillanat megelégednék azzal is ha a 40*4 Lcd & 4db DS18B20-m dolgozna.

Akkor a pufimat végre rendesen le tudnám szigetelni. 

Sajnos a mérő csonkokhoz nem nagyon férek hozzá utána.

Előzmény: Törölt nick (2625)
Törölt nick Creative Commons License 2016.12.22 0 0 2625

Tanulmányozásra:

 

/*Arduino Uno, ATmega328
YourDuino.com Example: Multiple DS18B20 Temperature Sensors
Displayed on 4x20 character LCD display

DS18B20 Pinout (Left to Right, pins down, flat side toward you)
- fekete = Ground
- sárga = Signal (Pin 2): (with 3.3K to 4.7K resistor to +5 or 3.3 )
- zöld = +5 or +3.3 V */

#include <SPI.h>
#include <SD.h>
#include <avr/wdt.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DS1624.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <MAX6675.h>
DS1624 temperature1(0x48);
DS1624 temperature2(0x4E);
DS1624 temperature3(0x4D);
DS1624 temperature4(0x4F);
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}
/*-----( Declare Constants and Pin Numbers )-----*/
// Data wire is plugged into port 2 on the Arduino (can be changed)
#define ONE_WIRE_BUS 2 // NOTE: No ";" on #define
#define SZV1START 3 // relay1
#define SZV2START 4 // relay2
#define PUFFER 5 // relay3
#define LAKAS1 6 // relay4
#define BYPASS 7 // relay5
#define LAKAS2 8 // relay6
/*-----( Declare objects )-----*/
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass address of our oneWire instance to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// Start the LCD display library
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display
int LED1 = 13; // Status LED Pin
int CS = 10; // CS pin on MAX6675
int SO = 11; // SO pin of MAX6675
int SCLK = 9; // SCLK pin of MAX6675
int units = 1; // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F)
float fusthofok = 0.0; // Temperature output variable
float lakaskW = 0.0;
float kazankW = 0.0;
// Initialize the MAX6675 Library for our chip
MAX6675 temp(CS,SO,SCLK,units);


// Setup Serial output and LED Pin
// MAX6675 Library already sets pin modes for MAX6675 chip!
/*-----( Declare Variables )-----*/
// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20#Read%20individual

// WP 1
DeviceAddress pufferfent = { 0x28, 0xAC, 0xFA, 0x26, 0x06, 0x00, 0x00, 0x8C }; // "T1"
DeviceAddress puffer1_3 = { 0x28, 0x61, 0xBB, 0x26, 0x06, 0x00, 0x00, 0x7D }; // "T2"
DeviceAddress puffer2_3 = { 0x28, 0x99, 0x10, 0x26, 0x06, 0x00, 0x00, 0xED }; // "T3"
DeviceAddress pufferlent = { 0x28, 0x15, 0x1F, 0x28, 0x06, 0x00, 0x00, 0x00 }; // "T4"
float temppufferfent = 0.0;
float temppuffer1_3 = 0.0;
float temppuffer2_3 = 0.0;
float temppufferlent = 0.0;

void setup() /****** SETUP: RUNS ONCE ******/
{

wdt_disable();
lcd.init(); // initialize the lcd
lcd.backlight();
Serial.begin(9600);
// set the initial time here:
//DS3231 seconds, minutes, hours, day, date, month, year
//setDS3231time(30,12,11,13,13,04,16);

//------- Initialize the Temperature measurement library--------------
sensors.begin();
// set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
sensors.setResolution(pufferfent, 10); //T1
sensors.setResolution(puffer1_3, 10); //T2
sensors.setResolution(puffer2_3, 10); //T3
sensors.setResolution(pufferlent, 10); //T4
temperature1.start();
temperature2.start();
temperature3.start();
temperature4.start();
pinMode(LED1, OUTPUT);
pinMode(SZV1START, OUTPUT);
pinMode(LAKAS1, OUTPUT);
pinMode(PUFFER, OUTPUT);
pinMode(SZV2START,OUTPUT);
pinMode(LAKAS2,OUTPUT);
pinMode(BYPASS,OUTPUT);
digitalWrite(SZV1START, HIGH); // szv1 áll
digitalWrite(LAKAS1, HIGH);
digitalWrite(PUFFER, HIGH); // pufferre állítja az irányváltó1-et
digitalWrite(SZV2START, HIGH); // szv2 áll
digitalWrite(LAKAS2, HIGH);
digitalWrite(BYPASS, HIGH); // bypassra állítja irányváltó2-őt

pinMode(A0, OUTPUT);
SD.begin(A0);
if (!SD.begin(A0)) {

Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");

if (SD.exists("datalog.csv")) {
Serial.println("datalog.csv exists.");
}
else {
Serial.println("datalog.csv doesn't exist.");
}
wdt_enable(WDTO_8S);
}//--(end setup )---
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
/*void displayTime()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);
// send it to the serial monitor
Serial.print(hour, DEC);
// convert the byte variable to a decimal number when displayed
Serial.print(":");
if (minute<10)
{
Serial.print("0");
}
Serial.print(minute, DEC);
Serial.print(":");
if (second<10)
{
Serial.print("0");
}
Serial.print(second, DEC);
Serial.print(" ");
Serial.print(dayOfMonth, DEC);
Serial.print("/");
Serial.print(month, DEC);
Serial.print("/");
Serial.print(year, DEC);
Serial.print(" Day of week: ");
switch(dayOfWeek){
case 1:
Serial.println("Sunday");
break;
case 2:
Serial.println("Monday");
break;
case 3:
Serial.println("Tuesday");
break;
case 4:
Serial.println("Wednesday");
break;
case 5:
Serial.println("Thursday");
break;
case 6:
Serial.println("Friday");
break;
case 7:
Serial.println("Saturday");
break;
}
}*/

void loop() /****** LOOP: RUNS CONSTANTLY ******/

{

SD.begin(A0);
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);
digitalWrite(LED1, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(LED1, LOW); // turn the LED off by making the voltage LOW
delay(100); // wait for a second

// Lakástermosztát fűtésre kapcsol= A3=5V
int sensorValue = analogRead(A3);
float LAKASFUTES = sensorValue * (5.0 / 1023.0);
delay(100);
sensors.requestTemperatures(); // Send the command to get temperatures
// Kiolvassuk Ds18B20 szenzorokat.
temppufferfent = sensors.getTempC(pufferfent);
temppuffer1_3 = sensors.getTempC(puffer1_3);
temppuffer2_3 = sensors.getTempC(puffer2_3);
temppufferlent = sensors.getTempC(pufferlent);
float T1 = sensors.getTempC(pufferfent);
float T2 = sensors.getTempC(puffer1_3);
float T3 = sensors.getTempC(puffer2_3);
float T4 = sensors.getTempC(pufferlent);
float kW1 = ((T1+T2+T2+T3+T3+T4)/6)-37 ;
float kW = kW1*1.2771 ;
float szazalek = kW/64*100;
delay(700);

// Read the temp from the MAX6675
fusthofok = temp.read_temp();

// Read the temp from the DS1624
float T5 = temperature1.getTemp();
float T6 = temperature2.getTemp();
float T7 = temperature3.getTemp();
float T8 = temperature4.getTemp();
float lakaskW1 = (T5-T6)*0.001161*12.5*60;
float kazankW1 = (T7-T8)*0.001161*22*60;

if (LAKASFUTES > 4)
{
lakaskW = lakaskW1;
}
else
{
lakaskW = 0;
}
if(T7 > 50)
{
kazankW = kazankW1;
}
else
{
kazankW = 0;
}
delay(500);

Serial.println(LAKASFUTES);
Serial.println(fusthofok);
Serial.println(T1);
Serial.println(T2);
Serial.println(T3);
Serial.println(T4);
Serial.println(T5);
Serial.println(T6);
Serial.println(T7);
Serial.println(T8);
Serial.println(kW);
Serial.println(szazalek);

String dataString = "";
dataString += String(dayOfMonth, DEC);
dataString += ";";
dataString += String(hour, DEC);
dataString += ";";
dataString += String(minute, DEC);
dataString += ";";
dataString += String(second, DEC);
dataString += ";";
dataString += String(LAKASFUTES);
dataString += ";";
dataString += String(fusthofok);
dataString += ";";
dataString += String(T1);
dataString += ";";
dataString += String(T2);
dataString += ";";
dataString += String(T3);
dataString += ";";
dataString += String(T4);
dataString += ";";
dataString += String(T5);
dataString += ";";
dataString += String(T6);
dataString += ";";
dataString += String(T7);
dataString += ";";
dataString += String(T8);
dataString += ";";
dataString += String(kazankW);
dataString += ";";
dataString += String(lakaskW);
dataString += ";";
dataString += String(kW);
dataString += ";";
dataString += String(szazalek);
dataString += ";";
dataString.replace('.',',');
File dataFile = SD.open("datalog.csv", FILE_WRITE);

// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
}
// if the file isn't open, pop up an error:
else
{
//Serial.println("error opening datalog.txt");
}
delay (500);

if(T7 > 58 && fusthofok > 130)
{

digitalWrite(LAKAS1,LOW );
digitalWrite(SZV1START,HIGH);
digitalWrite(PUFFER, HIGH);
}
else
{
if(T7 > 50)
{
digitalWrite(PUFFER, LOW);
digitalWrite(LAKAS1, HIGH);
digitalWrite(SZV1START, HIGH);
}
else
{
digitalWrite(PUFFER, LOW);
digitalWrite(LAKAS1, HIGH);
digitalWrite(SZV1START, LOW);
}
}

if ( LAKASFUTES > 4 && szazalek >1)
{
digitalWrite(BYPASS, HIGH);
digitalWrite(LAKAS2, LOW); // 6. RELÉ 8d
digitalWrite(SZV2START, HIGH); // 2. RELÉ 4d
}
else
{
digitalWrite(LAKAS2, HIGH);
digitalWrite(BYPASS, LOW); // 5. RELÉ 7d
digitalWrite(SZV2START, LOW); // 2. RELÉ 4d
}
// clear the screen
lcd.clear();
lcd.home();
lcd.backlight();
lcd.setCursor(5,0);
lcd.print("20");
lcd.setCursor(7,0);
lcd.print(year, DEC);
lcd.setCursor(9,0);
lcd.print(".");
lcd.setCursor(10,0);
lcd.print(month, DEC);
lcd.setCursor(12,0);
lcd.print(".");
lcd.setCursor(13,0);
lcd.print(dayOfMonth, DEC);
lcd.setCursor(15,0);
lcd.print(".");
lcd.setCursor(5,1);
lcd.print(hour, DEC);
lcd.setCursor(7,1);
lcd.print(":");
lcd.setCursor(8,1);
lcd.print(minute, DEC);
lcd.setCursor(10,1);
lcd.print(":");
lcd.setCursor(11,1);
lcd.print(second,DEC);
lcd.setCursor(1,3);
lcd.print(dayOfWeek);
lcd.setCursor(2,3);
lcd.print(".");
lcd.setCursor(5,3);
lcd.print("nap a heten");
delay(4000);
lcd.clear();
lcd.home(); lcd.backlight();
lcd.setCursor(8,0);
lcd.print("PUFFER");
lcd.setCursor(0,1);
lcd.print("T1=");
lcd.setCursor(4,1);
lcd.print(T1);
lcd.setCursor(11,1);
lcd.print("T2=");
lcd.setCursor(14,1);
lcd.print(T2);
lcd.setCursor(0,2);
lcd.print("T3=");
lcd.setCursor(4,2);
lcd.print(T3);
lcd.setCursor(11,2);
lcd.print("T4=");
lcd.setCursor(14,2);
lcd.print(T4);
lcd.setCursor(0,3);
lcd.print("kW=");
lcd.setCursor(4,3);
lcd.print(kW);
lcd.setCursor(11,3);
lcd.print("%=");
lcd.setCursor(14,3);
lcd.print(szazalek);
wdt_reset();
delay(4000);
// clear the screen
lcd.clear();
lcd.home();
lcd.backlight();
lcd.setCursor(4,0);
lcd.print("LAKAS:");
lcd.setCursor(11,0);
lcd.print(lakaskW);
lcd.setCursor(0,1);
lcd.print("T5=");
lcd.setCursor(4,1);
lcd.print(T5);
lcd.setCursor(11,1);
lcd.print("T6=");
lcd.setCursor(14,1);
lcd.print(T6);
lcd.setCursor(4,2);
lcd.print("KAZAN:");
lcd.setCursor(11,2);
lcd.print(kazankW);
lcd.setCursor(0,3);
lcd.print("T7=");
lcd.setCursor(4,3);
lcd.print(T7);
lcd.setCursor(11,3);
lcd.print("T8=");
lcd.setCursor(14,3);
lcd.print(T8);
delay(4000);
// clear the screen
lcd.clear();
lcd.home();
lcd.backlight();
lcd.setCursor(8,0);
lcd.print("FUSTHOFOK");
lcd.setCursor(0,1);
lcd.print("fusthofok=");
lcd.setCursor(11,1);
lcd.print(fusthofok);
wdt_reset();
} // End

Előzmény: Gogol69 (2621)
Sploc Creative Commons License 2016.12.22 0 0 2624

Szia! Örülök neki!

Akkor hibás volt a másik lapka? Létezik olyan, hogy csak egy adott funkciója "megy tönkre"? Mivel a másik soros porton amin az USB van oda-vissza kommunikál.

Előzmény: spiler0078 (2622)
Törölt nick Creative Commons License 2016.12.22 0 0 2623

Akkor én egy analóg hall-laé játszanék. Ás szoftverből oda komparálod ahová neked tetszik.

Előzmény: Prof (2588)
spiler0078 Creative Commons License 2016.12.22 0 0 2622

Szia Sploc!

 

Kicseréltem egy másik Mega2560-ra az alaplapom és most már kapok adatot, ha a nextion-t tapizom (nyomkodom a gombokat) :).

 

Szóval köszi a segítséget, és persze köszi mindenkinek, aki hozzászólt!! :)

 

Nyomom tovább a projektet aztán majd referálok, hogy hogy áll a "Smart vezérlőm"...

 

Cső

Spiler

Előzmény: Sploc (2573)
Gogol69 Creative Commons License 2016.12.22 0 0 2621

Nagyon örülnék ha valamelyik ebben a témában jártas fórumtárs segítene!

Igaz ez nektek bagatel, nekem most per pillanat nagy probléma.

Előzmény: Gogol69 (2620)
Gogol69 Creative Commons License 2016.12.22 0 0 2620

Hiba elhárítva!

A hiba az volt hogy a soros porti monitor még nyitva volt.

Most egy olyan problémám van, hogy az I2C-n LCD nem jelez ki megfelelően.

4 db DS18b20-t szeretnék használni.

A kódjukat már megtaláltam & a programba beírtam.

Ha soros porton figyelem mindegyik szépen dolgozik. 20.00--30.00C stb.

 

 Kijelzőre kiírva rossz & nagyon változó az értéke       2,12---3,80 között ugrál.

 lcd.print(sensors.getTempCByIndex(0));

Amit észre vettem még az az hogy ha a kijelzőre kiírok valamit így: lcd.print("Puffer");

 Akkor az első karaktert jeleníti meg csak.

 

Feltételezem, hogy a hogy a  DS18b20 érték kijelzésénél is ugyan az a hiba.

Mi lehet a gond? 

Előzmény: Gogol69 (2616)
Prof Creative Commons License 2016.12.21 0 0 2619

Szia,

Az okról nem tudok nyilatkozni, millió egy lehet. Ha a mérés valóban így inkonzisztens, ahogy írod, akkor a néhány héttel ezelőtt részleteiben tárgyalt átlagolós módszer hozhat megoldást, mivel bármely 5 mérés legalacsonyabb és legmagasabb értékét kiejted az átlagból, a maradék viszonylag nagy megbízhatósággal az elvárt eredményt fogja hozni. Persze tesztelni kell, és az sem árt, ha a probléma forrását szünteted meg.

Az arduino.cc fórumán olvasva javasolnak kondenzátorokat az érzékelő kimenete és a föld közé, a kábel mindkét végére (0,1 uF), ezzel a zaj jelentős részét ki tudod szűrni (de nem mindet). Hathatós megoldás lehet még a mérés gyakoriságának csökkentése (akár több másodperces, esetleg egy perces közökkel).
Nekem előfordult, hogy fordítva kötöttem be, akkor produkált furcsa méréseket (meg jelentős melegedést is).
Üdv,

Prof

Előzmény: Tomiali (2618)
Tomiali Creative Commons License 2016.12.21 0 0 2618

Mit csesztem el?????

 

Előzmény: Tomiali (2617)
Tomiali Creative Commons License 2016.12.21 0 0 2617

Senkinek  nincs ötlete?

 

Előzmény: Tomiali (2607)
Gogol69 Creative Commons License 2016.12.21 0 0 2616

Hogyan lehet arduino nano programot módosítani ha sorosportra küldene adatokat?

Gogol69 Creative Commons License 2016.12.21 0 0 2615

Probléma megoldva!

 

Innen http://forum.arduino.cc/index.php?topic=143382.0

 

Ezzel:


/* YourDuino Example: Find Address of a DS18B20 Temperature Sensor
Cut and paste the address to a text file for later use.
V1.1 01/17/2013
Questions: terry@yourduino.com 

Connections:
DS18B20 Pinout (Left to Right, pins down, flat side toward you)
- Left   = Ground
- Center = Signal (Pin 2):  (with 3.3K to 4.7K resistor to +5 or 3.3 )
- Right  = +5 or +3.3 V   
This sketch looks for 1-wire devices and  prints their addresses (serial number)
to the Serial Monitor in a format that is useful in Arduino sketches.
Based on example at: 
http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
*/

/*-----( Import needed libraries )-----*/
#include <OneWire.h>

/*-----( Declare Constants and Pin Numbers )-----*/
#define SENSOR_PIN 2  // Any pin 2 to 12 (not 13) and A0 to A5

/*-----( Declare objects )-----*/
OneWire  ourBus(SENSOR_PIN);  // Create a 1-wire object

void setup()  /****** SETUP: RUNS ONCE ******/
{
 Serial.begin(9600);

 discoverOneWireDevices();  // Everything happens here!
}//--(end setup )---

void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
 // Nothing happening here
}

/*-----( Declare User-written Functions )-----*/
void discoverOneWireDevices(void) {
 byte i;
 byte present = 0;
 byte data[12];
 byte addr[8];

 Serial.print("Looking for 1-Wire devices...nr");// "nr" is NewLine 
 while(ourBus.search(addr)) {
   Serial.print("nrnrFound '1-Wire' device with address:nr");
   for( i = 0; i < 8; i++) {
     Serial.print("0x");
     if (addr[i] < 16) {
       Serial.print('0');
     }
     Serial.print(addr[i], HEX);
     if (i < 7) {
       Serial.print(", ");
     }
   }
   if ( OneWire::crc8( addr, 7) != addr[7]) {
     Serial.print("CRC is not valid!nr");
     return;
   }
 }
 Serial.println();
 Serial.print("Done");
 ourBus.reset_search();
 return;
}

//*********( THE END )***********

Előzmény: Gogol69 (2614)
Gogol69 Creative Commons License 2016.12.21 0 0 2614

Sziasztok!

DS18B20-k címét szeretném megkeresni.

Ezt már megtaláltam! : https://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

Sajnos itt viszont az ,,one_wire_address_finder" könyvtárat valamiért nem tudom beilleszteni.

Mit kellene más hogyan tennem?

Törölt nick Creative Commons License 2016.12.20 0 0 2613

Létezik, hogy a CTE 3.2" LCD 2 heti, napi 12 órás üzem után elvesztette érintő képernyő funkcióját?

Prof Creative Commons License 2016.12.20 0 0 2612

Szia,

A boolean-re ott a pont. A többit köszönöm, most nem van agyam felfogni ezeket. :-(
A bajom az, hogy mennyire viszi el a hétköznapi földi halandó gondolkodását az, hogy össze-vissza kavarják a fejükben a dolgokat?

Előzmény: Vargham (2609)
Prof Creative Commons License 2016.12.20 0 0 2611

Ha az stabil 5V, igen.

Előzmény: Brandyman (2610)
Brandyman Creative Commons License 2016.12.20 0 0 2610

Sziasztok, 

 

Lehetséges elllátni táppal az Arduino-t a tüskesor +5V pinen keresztül? 

(pld shield-ről) 

 

Köszi! 

Vargham Creative Commons License 2016.12.20 0 0 2609

Mintha az Arduino korai verzióiban nem lett volna boolean... (A bool az természetesen más.)

A C nyelvben pedig 0 a hamis, és minden más igaz. :-)

 

Érdekes gondolatok a témában:

http://cybergibbons.com/arduino/arduino-misconceptions-7-boolean-variables-are-a-native-cavr-type/

http://forum.arduino.cc/index.php?topic=139382.0

Előzmény: Prof (2608)
Prof Creative Commons License 2016.12.20 0 0 2608

Jó reggelt!

Ilyenkor, hogy is mondjam, akadok ki kissé, hogy milyen végtelenül következetlen az Arduino keretrendszer. És ilyenkor nem tudom eldönteni, hogy ez most bug vagy feature!?

És persze, nem nehéz átlátni a különböző változótípusok közötti átjárhatóságot, csak egy nulla szintű kezdő számára nem biztos, hogy helyes iránymutatás az, hogy "olvass és értelmezz valamit bináris módon, amit egy 16 bites decimálisan értelmezett térben tárolsz".
A leírást köszönöm mindenesetre!

Előzmény: Vargham (2606)
Tomiali Creative Commons License 2016.12.19 0 0 2607

Sziasztok.

 

Mitől lehet az, hogy mérek egy lm35-el 3-4 mérés jó az 5-ik mérés feljebb van 3 fokkal majd a következő megint  jó?

Kb 2 méter vezeték végén van az lm35. Próbáltam több kondival is de semmi nem változik. Percenként mérek.

Vargham Creative Commons License 2016.12.17 0 0 2606

> Alapvetően a fő kérdés az, hogy a buttonState miért int és miért nem bool?

https://github.com/arduino/Arduino/blob/master/hardware/arduino/avr/cores/arduino/Arduino.h

135. sor:

int digitalRead(uint8_t);

Valamint ez a hivatalos ajánlás is:

https://www.arduino.cc/en/Reference/DigitalRead

Előzmény: Prof (2605)
Prof Creative Commons License 2016.12.17 0 0 2605

Hali!

 

Alapvetően a fő kérdés az, hogy a buttonState miért int és miért nem bool?

 

A debugnak ez a szintje a circuits.io-n nálam már kiakaszt mindent. A rendes szimulációnál is kihullik a hajam néha, de ha belehasítanék egy ilyenbe, akkor megállna, mint a bot.

 

Üdv!

Előzmény: Vargham (2603)
djz Creative Commons License 2016.12.17 0 0 2604

Hát pont ilyen ötletekre vadászok, mint ez a világítós.

Az a baj, hogy ezt egy közepesnél kevésbé szarabb rosszabb lépcsőházi automata tudja, ha van benne szervízüzemmód. És nem vagyok benne biztos, hogy drágább, mint az Arduinós megoldás bedobozolva, relével, stb.

A millis() overflow megoldást viszont tanulmányozom, köszi.

Vargham Creative Commons License 2016.12.17 0 0 2603

> U.i.: linket "új ablakban nyílik" kapcsolóval léééégysziiiii!

Úgy szoktam. Most valamiért kimaradt.

 

> Ezt miért?

> int buttonState = LOW;

Mit miért? Miért van ez a változó, miért inicializálom LOW-ra, vagy miért pozitív logikájú a gomb?

 

> Szimulátor helyett inkább eszközt.

Mindkettőnek megvan a maga előnye.

 

> A szimulátornak három hatalmas baja van:

> egyrészt roppant rendszerigényes (szerver és kliens oldalon is),

Ez tény.

 

> másrészt nem real time, hanem lassúcska,

Ez is.

 

> harmadrészt nincs debug lehetőség egyáltalán.

Az általam linkeltben van. :-) Serial print is megy, lehet tenni breakpoint-ot, léptetni soronként, és nézni a változók értékét.

 

circuits debugger

Előzmény: Prof (2599)
Nooorbi91 Creative Commons License 2016.12.17 0 0 2602

Igen, igazatok van. Valóban rosszul tettem fel a kérdést. 
Mentségemre szolgáljon hogy hulla fáradt voltam és még csak nem is értek hozzá :D
Köszönöm mindenkinek a segítségeket. Próbálom memorizálni őket és ha legközelebb bármi bajom van akkor használni.
Vargham, a te verziódat raktam össze(bár egyenlőre még csak próbapanelen). Tökéletesen működik, köszönöm!

A lámpa időzítős funkció közbeni lekapcsolására nincs szükség.  Ez egy kinti lámpa lesz, ha valaki kimegy akkor megnyomja a gombot, a lámpa meg majd lekapcsol. Így működik a régi is. De ha valamit kell csinálni kint ami időigényesebb akkor bajos mindig nyomkodni a gombot, ezzel ez ki lesz küszöbölve.

Még egyszer köszönöm a segítséget mindenkinek! 

 

Prof Creative Commons License 2016.12.17 0 0 2601
Előzmény: Vargham (2597)
Prof Creative Commons License 2016.12.17 0 0 2600

Szimulátor helyett inkább eszközt.

A szimulátornak három hatalmas baja van: egyrészt roppant rendszerigényes (szerver és kliens oldalon is), másrészt nem real time, hanem lassúcska, harmadrészt nincs debug lehetőség egyáltalán.

Előzmény: Vargham (2596)
Prof Creative Commons License 2016.12.17 0 0 2599

Elegáns, teljesen más koncepció.

 

Ezt miért?

int buttonState = LOW;

 

U.i.: linket "új ablakban nyílik" kapcsolóval léééégysziiiii!

Előzmény: Vargham (2597)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!