Om dat ik niet prettig vind om een adrescode vanaf de seriële monitor over te schrijven op een papieren drager heb ik een manier ontwikkeld waarbij achter mijn pc in mijn schets de adrescode kan plaatsen.
/*
// This sketch looks for 1-wire devices and
// prints their addresses (serial number) to
// the UART, in a format that is useful in Arduino sketches
// Tutorial:// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
// Aangepast door probeerder
// Werkwijze alle sensors aansluiten aan objekt
// de verbinding van arduino verbreken
// allereerst alle sensoors een naam geven en omschrijven
//DeviceAddress BOVEN = { };//warmste plaats collector
//DeviceAddress VORST = { };//koudste plaats collector
//DeviceAddress P_AAN = { };//koudste plaats TANK2
//DeviceAddress TANK1 = { };//warmste plaats TANK1
//DeviceAddress TANK2 = { };//warmste plaats TANK2
//DeviceAddress NAVER = { };//temperatuur naverwarmer
//DeviceAddress CE_VE = { };//temperatuur centrale verwarming
//
// De voedings draden op de arduino grond en 5V aansluiten
// DIP SCHAKELAAR 8 POLIG aan een kant alle 8 polen doorverbinden en voorzien van een 4.7 weerstand
// van uit 5V en doorverbinden met de data lijn naar OneWire ds(2)
// Nu aan de andere zijde van de schakelaar de data lijn van BOVEN op contact_1 aansluiten
// VORST op contact_2 aansluiten ,enz
//De verbinding van arduino aanzetten
//Onderstaant programma laden en opstarten
//
// NU contact_1 aanzetten en kan er vanuit seriele monitor de code gekopieerd worden en geplaatst
// worden bij het juiste DeviceAddress_bij_naam
// Hierna contact_1 uit contact_2 aan enz.
//
// *DeviceAddress BOVEN = { 0x28,0x68,0xDE,0x79,0x97,0x12,0x03,0x76 };//warmste plaats collector
// *DeviceAddress VORST = { 0x28,0xB3,0xFC,0x79,0x97,0x12,0x03,0x31 };//koudste plaats collector
// *DeviceAddress P_AAN = { 0x28,0xC2,0x4B,0xF4,0x17,0x20,0x06,0x25 };//koudste plaats TANK2
// *DeviceAddress TANK1 = { 0x28,0xCF,0x9B,0x79,0x97,0x11,0x03,0xC1 };//warmste plaats TANK1
// *DeviceAddress TANK2 = { 0x28,0xFA,0x03,0xD9,0x5F,0x20,0x01,0xC4 };//warmste plaats TANK2
// *DeviceAddress NAVER = { 0x28,0xEF,0xE4,0x7F,0x06,0x00,0x00,0x35 };//temperatuur naverwarmer
// *DeviceAddress CE_VE = { 0x28,0x64,0x51,0x79,0xA2,0x16,0x03,0x7F };//temperatuur centrale verwarming
// Alle contacten aanzette
// Het stuk met sterren kopieren naar de opvolgende schets
//verzameld 22-11-2021 door stuk voor stuk het DeviceAddress via de seriele monitor uit te lezen
// te kopieren en te plakken
//multi-line) voor gebruik van het uitlezen sensors geen multi line toepassen
// *********************wisselen van schets ****************************************
//multi-line) voor gebruik van het reeds uitlezen sensors begin multi line toepassen
#include <OneWire.h>
OneWire ds(2); // Connect your 1-wire device to pin 2
void setup(void) {
Serial.begin(9600);
discoverOneWireDevices();
}
void discoverOneWireDevices(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
int ii =1;
Serial.print("kijk naar Devices...\n\r");
while(ds.search(addr)) {
Serial.print("\n\r sens :");Serial.print(ii++);Serial.print(" address: { ");
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 (i==7) {
Serial.print(" }");
}
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print("CRC is not valid!\n");
return;
}
}
Serial.print("\n\r\n\ deze zijn gevonden\n\r\n\r");
Serial.print(" adress kopieren achter de gekozen naam" );
ds.reset_search();
return;
}
void loop(void) {
// nothing to see here
}
*/
//multi-line) voor gebruik van het uitlezen sensors geen multi line toepassen
// *********************wisselen van schets ****************************************
//multi-line) voor gebruik van het reeds uitlezen sensors begin multi line toepassen
//
//
// (multi-line) voor gebruik uitlezen sensors geen multi line toepassen
// This Arduino sketch reads DS18B20 "1-Wire" digital
// temperature sensors.
// Copyright (c) 2010 Mark McComb, hacktronics LLC
// License: http://www.opensource.org/licenses/mit-license.php (Go crazy)
// Tutorial:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html
//
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); // I2C address 0x27, 16 column and 2 rows
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Assign the unique addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
// adressn gekopieerd via mijn 18b20__lezen__schets_21b
DeviceAddress BOVEN = { 0x28,0x68,0xDE,0x79,0x97,0x12,0x03,0x76 };//warmste plaats collector
DeviceAddress VORST = { 0x28,0xB3,0xFC,0x79,0x97,0x12,0x03,0x31 };//koudste plaats collector
DeviceAddress P_AAN = { 0x28,0xC2,0x4B,0xF4,0x17,0x20,0x06,0x25 };//koudste plaats TANK2
DeviceAddress TANK1 = { 0x28,0xCF,0x9B,0x79,0x97,0x11,0x03,0xC1 };//warmste plaats TANK1
DeviceAddress TANK2 = { 0x28,0xFA,0x03,0xD9,0x5F,0x20,0x01,0xC4 };//warmste plaats TANK2
DeviceAddress NAVER = { 0x28,0xEF,0xE4,0x7F,0x06,0x00,0x00,0x35 };//temperatuur naverwarmer
DeviceAddress CE_VE = { 0x28,0x64,0x51,0x79,0xA2,0x16,0x03,0x7F };//temperatuur centrale verwarming
void setup(void)
{
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
lcd.init();
sensors.requestTemperatures();
}
void loop(void){
// Serial.print("Getting temperatures...\n\r");
// ( BOVEN, VORST, P_AAN, TANK1, TANK2, NAVER, CE_VE ????)buiten sensor nog niet aangesloten
// Serial.print("\n\r");
//
// float boven_F = sensors.getTempC(BOVEN);//kan weg na laatste controle
int boven = 0.49+(sensors.getTempC(BOVEN));
// float vorst_F = sensors.getTempC(VORST);//kan weg na laatste controle
int vorst = 0.49+(sensors.getTempC(VORST));
// float p_aan_F = sensors.getTempC(P_AAN);//kan weg na laatste controle
int p_aan = 0.49+(sensors.getTempC(P_AAN));
// float tank1_F = sensors.getTempC(TANK1);//kan weg na laatste controle
int tank1 = 0.49+(sensors.getTempC(TANK1));
// float tank2_F = sensors.getTempC(TANK2);//kan weg na laatste controle
int tank2 = 0.49+(sensors.getTempC(TANK2));
// float naver_F = sensors.getTempC(NAVER);//kan weg na laatste controle
int naver = 0.49+(sensors.getTempC(NAVER));
// float ce_ve_F = sensors.getTempC(CE_VE);//kan weg na laatste controle
int ce_ve = 0.49+(sensors.getTempC(CE_VE));
lcd.clear(); delay(3500);
lcd.setCursor(0 ,0);lcd.print("boven= ");lcd.print(boven);delay(100);
lcd.setCursor(10,0);lcd.print("vorst= ");lcd.print(vorst);delay(100);
lcd.setCursor(0, 1);lcd.print("tank1= ");lcd.print(tank1);delay(100);
lcd.setCursor(10,1);lcd.print("tank2= ");lcd.print(tank2);delay(100);
lcd.setCursor(0 ,2);lcd.print("p_aan= ");lcd.print(p_aan);delay(100);
lcd.setCursor(10,2);lcd.print("naver= ");lcd.print(naver);delay(100);
lcd.setCursor(0 ,3);lcd.print("ce_ve= ");lcd.print(ce_ve);delay(100);
lcd.setCursor(10,3);lcd.print("rest = ");lcd.print("???");
delay(3500);
// Serial.print(" boven_F ");Serial.print(boven_F );////kan weg na laatste controle
Serial.print(" boven ");Serial.println(boven);//kan weg na laatste controle
// Serial.print(" vorst_F ");Serial.print(vorst_F );//kan weg na laatste controle
Serial.print(" vorst ");Serial.println(vorst);//kan weg na laatste controle
// Serial.print(" p_aan_F ");Serial.print(p_aan_F);//kan weg na laatste controle
Serial.print(" p_aan ");Serial.println(p_aan);//kan weg na laatste controle
// Serial.print(" tank1_F ");Serial.print(tank1_F );//kan weg na laatste controle
Serial.print(" tank1 ");Serial.println(tank1);//kan weg na laatste controle
// Serial.print(" tank2_F ");Serial.print(tank2_F );//kan weg na laatste controle
Serial.print(" tank2 ");Serial.println(tank2);//kan weg na laatste controle
// Serial.print(" naver_F ");Serial.print(naver_F );//kan weg na laatste controle
Serial.print(" naver ");Serial.println(naver);//kan weg na laatste controle
// Serial.print(" ce_ve_F ");Serial.print(ce_ve_F );//kan weg na laatste controle
Serial.print(" ce_ve ");Serial.println(ce_ve);//kan weg na laatste controle
Serial.print("\n\r");
//
//Op het datablad is te zien dat de afwijking van de gemeten temperatuur 0.5 graden af kan wijken
//naar boven en na onder dus een spreiding van 1 graad en dus lijkt mij niet zinnig om gebruik te
//maken van de float.
// Maar door de float MET 0.49 TE VERHOGEN NA DE AANROEP sensors.getTempC in een int te plaatsen
//onstaat er afgeronde waarde
//Voor mijn gebruik in de rest van de schets is de AFGERONDE INT voldoende nauwkeurig.
//
//Tussn gebruik INT en FLOAT gebruikte de INT zo'n 500 BYTES minder dan de FLOAT
//
//aandachtpunten voor de rest van de schets:
// als vorst < 10 graden alleen meten de hoeveel water er stroomt en met welke temperatuur sensor
// tank1 meet,
//
// 12V naar voeding arduino en naar relais2 schakelt om via pin??
// als boven 10 graden warmer is dan p_aan en tank1 kouder dan 80 graden:
// pin12 hoog weerstand 470 OHM naar relais_1 (schakelt 230V) en relais_2 (schakelt 12V) pin??
// laag naar waterresorvaar
// relais2 in ruststand hoog 12V naar vlotter waterresorvaar naar kaan voor bijvullen
// pulsen opslaan via watermeter naar ??
delay(4000);
// Serial.print("\n\r");
}
//multi-line) voor gebruik van het uitlezen sensors eind multi line toepassen
// *********************wisselen van schets ****************************************
//multi-line) voor gebruik van het reeds uitlezen sensors geen multi line toepassen