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.
-
epzlin
- Příspěvky: 37
- Registrován: 17 črc 2019, 19:22
- Reputation: 0
Příspěvek
od epzlin » 16 led 2022, 09:05
Jak dosadím proměnnou "pozice" namísto čísla "1" v loopu? Obráceným lomítkem jsem to zkoušel, ale nepřišel jsem na to.
Kód: Vybrat vše
#include "MegunoLink.h"
TimePlot MyPlot; //no channel selected
byte pozice = 2;
void setup() {
Serial.begin(57600);
MyPlot.SetXLabel("Time");
MyPlot.SetYLabel("Value");
MyPlot.SetSeriesProperties("C1", Plot::Black, Plot::Solid, 2, Plot::NoMarker);
}
void loop() {
MyPlot.SendData("C1", 1555); //tady potrebuju dosadit prommenou "pozice" místo čísla 1. Znak "C" musí zůstat
}
-
kiRRow
- Příspěvky: 1164
- Registrován: 07 kvě 2019, 07:03
- Reputation: 0
- Bydliště: Opava
Příspěvek
od kiRRow » 16 led 2022, 09:59
Kód: Vybrat vše
MyPlot.SetSeriesProperties("C" + pozice, Plot::Black, Plot::Solid, 2, Plot::NoMarker);
-
epzlin
- Příspěvky: 37
- Registrován: 17 črc 2019, 19:22
- Reputation: 0
Příspěvek
od epzlin » 16 led 2022, 10:28
nefunguje. Na výstupu serialu mi to dává:
{TIMEPLOT|DATA|nan|T|4105.95}
{TIMEPLOT|DATA|an|T|4107.09}
{TIMEPLOT|DATA|n|T|4043.70}
{TIMEPLOT|DATA||T|4072.18}
Ty čísla 4105,95 atd jsou dosazená z pole dat. To je OK. Mělo by to vypadat takto:
{TIMEPLOT|DATA|C1|T|4105.95}
{TIMEPLOT|DATA|C2|T|4107.09}
{TIMEPLOT|DATA|C3|T|4043.70}
{TIMEPLOT|DATA|C4|T|4072.18}
-
jankop
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
-
Kontaktovat uživatele:
Příspěvek
od jankop » 16 led 2022, 11:23
Kód: Vybrat vše
MyPlot.SendData("C"+String(pozice), 1555);
-
peterple
- Příspěvky: 156
- Registrován: 22 zář 2021, 20:20
- Reputation: 0
Příspěvek
od peterple » 16 led 2022, 12:17
A čo napríklad použiť premennú miesto konštanty? Pozor bude to fungovať iba na jednu cifru. Teda v rozsahu 0-9
Kód: Vybrat vše
#include "MegunoLink.h"
TimePlot MyPlot; //no channel selected
byte pozice = 2;
char seriesName[] = "C1";
void setup() {
Serial.begin(57600);
MyPlot.SetXLabel("Time");
MyPlot.SetYLabel("Value");
MyPlot.SetSeriesProperties(seriesName, Plot::Black, Plot::Solid, 2, Plot::NoMarker);
}
void loop() {
seriesName[1]=pozice|'0';
MyPlot.SendData(seriesName, 1555); //tady potrebuju dosadit prommenou "pozice" místo čísla 1. Znak "C" musí zůstat
}
-
epzlin
- Příspěvky: 37
- Registrován: 17 črc 2019, 19:22
- Reputation: 0
Příspěvek
od epzlin » 17 led 2022, 06:20
jankop píše: ↑16 led 2022, 11:23
Kód: Vybrat vše
MyPlot.SendData("C"+String(pozice), 1555);
no matching function for call to 'XYPlot::SendData(StringSumHelper&, long unsigned int&, float&)'
-
epzlin
- Příspěvky: 37
- Registrován: 17 črc 2019, 19:22
- Reputation: 0
Příspěvek
od epzlin » 17 led 2022, 06:59
Ano, funguje to. Je způsob, jak to rozchodit i pro větší čísla než 9? Stačí v rozsahu byte.
-
epzlin
- Příspěvky: 37
- Registrován: 17 črc 2019, 19:22
- Reputation: 0
Příspěvek
od epzlin » 17 led 2022, 08:27
Tak zatím jsem to vyřešil takto, ikdyž to asi není moc elegantní. Naštěstí mi stačí 16 pozic.
Kód: Vybrat vše
char names[16][4] = {//16radku o 3znacich
"C01",
"C02",
"C03",
"C04",
"C05",
"C06",
"C07",
"C08",
"C09",
"C10",
"C11",
"C12",
"C13",
"C14",
"C15",
"C16",
};
MyPlot.SendData(names[pozice], 1555);
-
ondraN
- Příspěvky: 932
- Registrován: 08 srp 2019, 20:01
- Reputation: 0
Příspěvek
od ondraN » 17 led 2022, 09:41
Kód: Vybrat vše
char seriesName[5]={C000};
byte num=0;
for (byte i=0, byte n=100; i<3; i++, n=n/10 ){
seriesName[i+1]='0'+(num /n);
num=num %n;
}
pro číslo 136 bude řetězec "C136", pro 1 bude "C001" pro 56 bude "C056"
Šlo by to i bez těch nul před číslem, ale nevím, jestli je tam potřebuješ. Pokud je to jedno, je tenhle postup nejjednodušší.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 14 hostů