Stránka 3 z 4

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

Napsal: 21 dub 2023, 21:04
od fogl 79
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    ");
 
}
";

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

Napsal: 21 dub 2023, 21:20
od kiRRow
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);
//----------------------
}

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

Napsal: 21 dub 2023, 21:56
od fogl 79
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+'

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

Napsal: 21 dub 2023, 21:58
od fogl 79
pokusím se udělat kompilaci s pěti kopiemi výstupu na displej

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

Napsal: 21 dub 2023, 22:18
od kiRRow
Neumím přijít na chybu a mělo by to fungovat :( .. neuteklo ti tam někde něco stejně jako to + ?

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

Napsal: 21 dub 2023, 22:47
od fogl 79
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    ");
 
}";

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

Napsal: 22 dub 2023, 10:04
od kiRRow
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);
//----------------------
}

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

Napsal: 22 dub 2023, 10:26
od kiRRow
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.

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

Napsal: 26 dub 2023, 19:14
od fogl 79
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

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

Napsal: 26 dub 2023, 20:09
od fogl 79
ještě asi budu muset domyslet nějakým způsobem kalibraci čidel