přehled vizualizace natopení akumulační nádoby

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
fogl 79
Příspěvky: 20
Registrován: 30 bře 2023, 22:36
Reputation: 0

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od fogl 79 » 21 dub 2023, 21:04

poskládal jsem program ale nedaří se mi kompilace ..

ale pořad to píše tuto chybu:
v tomto řádku : String zprava = "t" + cisloSenzoru" ".txt=\"Senzor " + cisloSenzoru + ": ";

pomoc2:86:45: error: stray '\' in program
C:\Users\já\Documents\arduino\pomoc2\pomoc2.ino: In function 'void sensorToDisplay(uint8_t*, int)':
pomoc2:86:37: error: expected ',' or ';' before string constant
exit status 1

Kód: Vybrat vše

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

// připojení potřebné knihovny
#include <SoftwareSerial.h>
// nastavení čísel propojovacích pinů
#define RX 11
#define TX 10
// vytvoření objektu swSerial z knihovny s nastavenými piny
SoftwareSerial swSerial(RX, TX);

// Data wire is plugged into port 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);

// Addresses of 3 DS18B20s
uint8_t sensor1[8] = { 0x28, 0x50, 0x19, 0x51, 0x4D, 0x20, 0x01, 0x56 };
uint8_t sensor2[8] = { 0x28, 0x4C, 0x40, 0xB8, 0x4D, 0x20, 0x01, 0xCC };
uint8_t sensor3[8] = { 0x28, 0x1E, 0x3B, 0x53, 0x4D, 0x20, 0x01, 0x4C };
uint8_t sensor4[8] = { 0x28, 0x81, 0x69, 0x69, 0x4D, 0x20, 0x01, 0x9C };
uint8_t sensor5[8] = { 0x28, 0x4F, 0xBE, 0x66, 0x4D, 0x20, 0x01, 0x85 };

void setup(void)
{
  // zahájení komunikace po softwarové sériové lince
  swSerial.begin(9600);
  Serial.begin(9600);
  sensors.begin();
}

void loop(void)
{
  sensors.requestTemperatures();
  
  Serial.print("Sensor 1: ");
  printTemperature(sensor1);
  
  Serial.print("Sensor 2: ");
  printTemperature(sensor2);
  
  Serial.print("Sensor 3: ");
  printTemperature(sensor3);

  Serial.print("Sensor 4: ");
  printTemperature(sensor4);

  Serial.print("Sensor 5: ");
  printTemperature(sensor5);
  
//  Serial.println();
//// nacteni teploty
//float tempC = sensors.getTempC(sensor1);
////-- vypis na displej ---
//  String zprava = "t0.txt=\"Sensor 1: ";
//  zprava += tempC;
//  zprava += " C.\"";
//
//  swSerial.print(zprava);
//  swSerial.write(0xff);
 // swSerial.write(0xff);
 // swSerial.write(0xff);
//----------------------
  //delay(1000);
}




void sensorToDisplay(DeviceAddress adresaSenzoru, int cisloSenzoru){

sensorToDisplay(sensor1, 1);
sensorToDisplay(sensor2, 2);
sensorToDisplay(sensor3, 3);
sensorToDisplay(sensor4, 4);
sensorToDisplay(sensor5, 5);

// nacteni teploty
  float tempC = sensors.getTempC(adresaSenzoru);
//-- vypis na displej ---
  String zprava = "t" + cisloSenzoru" ".txt=\"Senzor " + cisloSenzoru + ": ";
  zprava += tempC;
  zprava += " C.\"";

  swSerial.print(zprava);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);
//----------------------
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  Serial.print(tempC);
 
  Serial.print("°C    ");
 
}
";

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od kiRRow » 21 dub 2023, 21:20

tu chybu to hlásí, protože ti uteklo jedno + String zprava = "t" + cisloSenzoru" ".txt=\"Senzor " + cisloSenzoru + ": "; .... to za cisloSenzoru" ".txt ... nic méně poskládáno to dohromady taky není správně ... nemám jak to ověřit, ale tohle by mělo fungovat

Kód: Vybrat vše

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

// připojení potřebné knihovny
#include <SoftwareSerial.h>
// nastavení čísel propojovacích pinů
#define RX 11
#define TX 10
// vytvoření objektu swSerial z knihovny s nastavenými piny
SoftwareSerial swSerial(RX, TX);

// Data wire is plugged into port 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);

// Addresses of 3 DS18B20s
uint8_t sensor1[8] = { 0x28, 0x50, 0x19, 0x51, 0x4D, 0x20, 0x01, 0x56 };
uint8_t sensor2[8] = { 0x28, 0x4C, 0x40, 0xB8, 0x4D, 0x20, 0x01, 0xCC };
uint8_t sensor3[8] = { 0x28, 0x1E, 0x3B, 0x53, 0x4D, 0x20, 0x01, 0x4C };
uint8_t sensor4[8] = { 0x28, 0x81, 0x69, 0x69, 0x4D, 0x20, 0x01, 0x9C };
uint8_t sensor5[8] = { 0x28, 0x4F, 0xBE, 0x66, 0x4D, 0x20, 0x01, 0x85 };

void setup(void)
{
  // zahájení komunikace po softwarové sériové lince
  swSerial.begin(9600);
  Serial.begin(9600);
  sensors.begin();
}

void loop(void)
{
  sensors.requestTemperatures();
  
  Serial.print("Sensor 1: ");
  printTemperature(sensor1);
  
  Serial.print("Sensor 2: ");
  printTemperature(sensor2);
  
  Serial.print("Sensor 3: ");
  printTemperature(sensor3);

  Serial.print("Sensor 4: ");
  printTemperature(sensor4);

  Serial.print("Sensor 5: ");
  printTemperature(sensor5);
  
  Serial.println();

// tady byl ten kod a byl nahrazen funkcí
  sensorToDisplay(sensor1, 1);
  sensorToDisplay(sensor2, 2);
  sensorToDisplay(sensor3, 3);
  sensorToDisplay(sensor4, 4);
  sensorToDisplay(sensor5, 5);

  delay(1000);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  Serial.print(tempC);
 
  Serial.print("°C    ");
 
}

// tady je ta funkce co nahrazuje kod v loopu
void sensorToDisplay(DeviceAddress adresaSenzoru, int cisloSenzoru){
// nacteni teploty
  float tempC = sensors.getTempC(adresaSenzoru);
//-- vypis na displej ---
  String zprava = "t" + cisloSenzoru + ".txt=\"Sensor " + cisloSenzoru + ": ";
  zprava += tempC;
  zprava += " C.\"";

  swSerial.print(zprava);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);
//----------------------
}

fogl 79
Příspěvky: 20
Registrován: 30 bře 2023, 22:36
Reputation: 0

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od fogl 79 » 21 dub 2023, 21:56

ani po opravě to nejde kompilovat stale chyba

Arduino: 1.8.19 (Windows 10), Vývojová deska: "Arduino Uno"

C:\Users\já\Documents\arduino\sketch_apr21d\sketch_apr21d.ino: In function 'void sensorToDisplay(uint8_t*, int)':
sketch_apr21d:81:38: error: invalid operands of types 'const char*' and 'const char [14]' to binary 'operator+'
exit status 1
invalid operands of types 'const char*' and 'const char [14]' to binary 'operator+'

fogl 79
Příspěvky: 20
Registrován: 30 bře 2023, 22:36
Reputation: 0

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od fogl 79 » 21 dub 2023, 21:58

pokusím se udělat kompilaci s pěti kopiemi výstupu na displej

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od kiRRow » 21 dub 2023, 22:18

Neumím přijít na chybu a mělo by to fungovat :( .. neuteklo ti tam někde něco stejně jako to + ?

fogl 79
Příspěvky: 20
Registrován: 30 bře 2023, 22:36
Reputation: 0

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od fogl 79 » 21 dub 2023, 22:47

nn to byl jediný řádek který jsem psal a nekopíroval jako celek


ale podařilo se mi rozjet ten program s Peti kopiemi a úpravou proměnných
ted už jen dotáhnout vypočet procent nabití akumulace ((s1+s2+s3+s4+s5) /5)*0,85

Kód: Vybrat vše

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

// připojení potřebné knihovny
#include <SoftwareSerial.h>
// nastavení čísel propojovacích pinů
#define RX 11
#define TX 10
// vytvoření objektu swSerial z knihovny s nastavenými piny
SoftwareSerial swSerial(RX, TX);

// Data wire is plugged into port 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);

// Addresses of 3 DS18B20s
uint8_t sensor1[8] = { 0x28, 0x50, 0x19, 0x51, 0x4D, 0x20, 0x01, 0x56 };
uint8_t sensor2[8] = { 0x28, 0x4C, 0x40, 0xB8, 0x4D, 0x20, 0x01, 0xCC };
uint8_t sensor3[8] = { 0x28, 0x1E, 0x3B, 0x53, 0x4D, 0x20, 0x01, 0x4C };
uint8_t sensor4[8] = { 0x28, 0x81, 0x69, 0x69, 0x4D, 0x20, 0x01, 0x9C };
uint8_t sensor5[8] = { 0x28, 0x4F, 0xBE, 0x66, 0x4D, 0x20, 0x01, 0x85 };

void setup(void)
{
  // zahájení komunikace po softwarové sériové lince
  swSerial.begin(9600);
  Serial.begin(9600);
  sensors.begin();
}

void loop(void)
{
  sensors.requestTemperatures();
 
  
  Serial.println();
// nacteni teploty
float tempC1 = sensors.getTempC(sensor1);
//-- vypis na displej ---
  String zprava = "t0.txt=\"";
  zprava += tempC1;
  zprava += " C.\"";
 
  swSerial.print(zprava);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);

float tempC2 = sensors.getTempC(sensor2);
    String zprava2 = "t1.txt=\"";
  zprava2 += tempC2;
  zprava2 += " C.\"";
 
  swSerial.print(zprava2);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);

  float tempC3 = sensors.getTempC(sensor3);
    String zprava3 = "t2.txt=\"";
  zprava3 += tempC3;
  zprava3 += " C.\"";
 
  swSerial.print(zprava3);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);

  float tempC4 = sensors.getTempC(sensor4);
    String zprava4 = "t3.txt=\"";
  zprava4 += tempC4;
  zprava4 += " C.\"";
 
  swSerial.print(zprava4);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);

   float tempC5 = sensors.getTempC(sensor5);
    String zprava5 = "t4.txt=\"";
  zprava5 += tempC5;
  zprava5 += " C.\"";
 
  swSerial.print(zprava5);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);
// vypočet procent
 
//----------------------
  delay(50);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  Serial.print(tempC);
 
  Serial.print("°C    ");
 
}";

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od kiRRow » 22 dub 2023, 10:04

udělal jsem chybu při skládaní zprávy v té funkci. To je tak když děláš víc jazyků najednou ...

Kód: Vybrat vše

// tady je ta funkce co nahrazuje kod v loopu
void sensorToDisplay(DeviceAddress adresaSenzoru, int cisloSenzoru){
// nacteni teploty
  float tempC = sensors.getTempC(adresaSenzoru);
//-- vypis na displej ---
  String zprava = "t";
  zprava += cisloSenzoru;
  zprava += ".txt=\"Sensor ";
  zprava += cisloSenzoru;
  zprava += ": ";
  zprava += tempC;
  zprava += " C.\"";

  swSerial.print(zprava);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);
//----------------------
}

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od kiRRow » 22 dub 2023, 10:26

A ano, jak jsem psal, okopírovat to 5x je také funkční řešení. Cokoliv co vypadá hloupě a funguje není hloupé. U toho kopírovaného řešení máš tu výhodu, že všechny teploty máš v tempC1, tempC2 ....stačí jen posčítat, vydělit, vynásobit a poslat na displej.

fogl 79
Příspěvky: 20
Registrován: 30 bře 2023, 22:36
Reputation: 0

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od fogl 79 » 26 dub 2023, 19:14

Moc děkuji za pomoc
výpočty se též podařily
můj projekt je funkční a použitelný
Jste tu super lidičky
jestli je zájem doložím konečna fota

fogl 79
Příspěvky: 20
Registrován: 30 bře 2023, 22:36
Reputation: 0

Re: přehled vizualizace natopení akumulační nádoby

Příspěvek od fogl 79 » 26 dub 2023, 20:09

ještě asi budu muset domyslet nějakým způsobem kalibraci čidel

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů