meerdere strings en variabelen printen
7 berichten
• Pagina 1 van 1
meerdere strings en variabelen printen
Ik wilde een routine maken om wat eenvoudiger variabelen en tekst achter elkaar te printen.
Nu doe je dat met bv.
Nu had ik zoiets in gedachte maar kom er niet uit hoe ik een variabel aantal strings met de subroutine mee kan geven.
Nu doe je dat met bv.
- Code: Alles selecteren
String inhoud = "12";
Serial.print("inhoud= ");Serial.print(inhoud);Serial.println("ltr");
Nu had ik zoiets in gedachte maar kom er niet uit hoe ik een variabel aantal strings met de subroutine mee kan geven.
- Code: Alles selecteren
String inhoud="12";
S_print("inhoud= ",inhoud," ltr")
mltr = "20";
S_print("inhoud= ",inhoud," ltr"," mltr",mltr)
void S_print( var1,var2,var3,var4 enz..... )
for (int i=0; i <= aantal variabelen; i++){
Serial.print(variabelen[i]);
}
Serial.println;
Advertisement
Re: meerdere strings en variabelen printen
In de taal 'c' moet altijd aangegeven worden van welk type een variabele of parameter is.
De functie sprintf() heeft een variabel aantal parameters, maar dat kan dan ook snel verkeerd gaan.
De Arduino Serial.println() functie kan verschillende dingen printen, maar die zijn stuk voor stuk in de code gedefinieerd.
Dan zijn er macro's. Dat is een #define die lijkt op een functie. Daarmee kun je flink aanrommelen.
In de taal 'c++' zijn er templates, dan gaat de compiler pas bij het compileren kijken hoe het opgevat gaat worden en dan pas de echte code gaat maken.
Je kunt eens kijken naar sprintf(), maar het deel wat een 'float' kan laten zien heeft Arduino er uit gehaald omdat het vroeger teveel ruimte in beslag nam op een oude ATmega8
Een functie zoals jij die wilt, dat is misschien mogelijk met een template die je op de ene of andere manier kunt voeden met een variabel aantal parameters, terwijl de parameters van alles kunnen zijn en rechtstreeks doorgegeven worden naar de Serial.print(). Dat zie ik nog niet voor me
P.S.: Graag altijd een werkende sketch laten zien, zodat wij er mee aan de slag kunnen gaan.
De functie sprintf() heeft een variabel aantal parameters, maar dat kan dan ook snel verkeerd gaan.
De Arduino Serial.println() functie kan verschillende dingen printen, maar die zijn stuk voor stuk in de code gedefinieerd.
Dan zijn er macro's. Dat is een #define die lijkt op een functie. Daarmee kun je flink aanrommelen.
In de taal 'c++' zijn er templates, dan gaat de compiler pas bij het compileren kijken hoe het opgevat gaat worden en dan pas de echte code gaat maken.
Je kunt eens kijken naar sprintf(), maar het deel wat een 'float' kan laten zien heeft Arduino er uit gehaald omdat het vroeger teveel ruimte in beslag nam op een oude ATmega8
Een functie zoals jij die wilt, dat is misschien mogelijk met een template die je op de ene of andere manier kunt voeden met een variabel aantal parameters, terwijl de parameters van alles kunnen zijn en rechtstreeks doorgegeven worden naar de Serial.print(). Dat zie ik nog niet voor me
P.S.: Graag altijd een werkende sketch laten zien, zodat wij er mee aan de slag kunnen gaan.
Re: meerdere strings en variabelen printen
Ik heb nog eens verder gezocht op internet, maar kan idd niets vinden wat in de buurt komt.
Heb inmiddels onderstaande sketch gemaakt zonder dynamisch array.
Zou mooier zijn als ik de subroutine zo < print_("klaas ",ss ,"kees ") > zou kunnen gebruiken maar dat lukt ook niet.
Heb inmiddels onderstaande sketch gemaakt zonder dynamisch array.
Zou mooier zijn als ik de subroutine zo < print_("klaas ",ss ,"kees ") > zou kunnen gebruiken maar dat lukt ook niet.
- Code: Alles selecteren
void setup() {
void setup() {
Serial.begin(9600);
String myStrings[8] = {"piet","jan"};
print_(myStrings);
int waarde = 12;
String ss = String(waarde) + " ";
myStrings[1] = "klaas ";
myStrings[2] = ss;
myStrings[3] = "kees ";
print_(myStrings);
// print_("klaas ",ss ,"kees ") zou mooier zijn
}
void loop() {
}
void print_(String array_[8]) {
for (int ii = 1; ii < 8; ii++) {
Serial.print(array_[ii]);
}
Serial.println();
for (int ii = 1; ii < 8; ii++) {
(array_[ii] = "");
}
}
Re: meerdere strings en variabelen printen
je kunt toch een code na de laatste in de rij zetten zoals /n
paul deelen
shooter@home.nl
shooter@home.nl
Re: meerdere strings en variabelen printen
Onderstaande methode lijkt me nog het beste, op deze manier kun je text en variabelen (String of integer) willekeurig achter elkaar schrijven.
Alleen was ik aan het kijken of je de routines in een bibliotheek kunt zetten. Op zich was dat wel gelukt maar dan komt er weer iets voor.
naam.S("blabla"); naam.IN(10);
Is eigenlijk ook weer niet zo handig.
ps ik begrijp de /n van Shooter nog niet zo goed, dat is toch gewoon een return.
Alleen was ik aan het kijken of je de routines in een bibliotheek kunt zetten. Op zich was dat wel gelukt maar dan komt er weer iets voor.
naam.S("blabla"); naam.IN(10);
Is eigenlijk ook weer niet zo handig.
ps ik begrijp de /n van Shooter nog niet zo goed, dat is toch gewoon een return.
- Code: Alles selecteren
char data[100];
void setup() {
Serial.begin(9600);
String ss = "test ";
int ii = 15;
float fl=12.33;
S("dit is een "); S(ss); IN(ii); S(" float=");FL(fl);ent();
S("dit is een "); S(ss); IN(ii); S(" float=");FL(fl);ent();
}
void loop() {
}
void S(String ss) {
Serial.print(ss);
}
void IN(int kk) {
String ss = String(kk);
Serial.print(ss);
}
void FL(float fl){
String ss = String(fl);
Serial.print(ss);
}
void ent(){
Serial.println();
}
Re: meerdere strings en variabelen printen
Allen
Eigenlijk is de Arduino compiler een C++ compiler.
En in C++ kun je wel wat leuke dingen doen:
Cast de eerste term naar een String en dan tel je gewoon weg de variablen op bij de String die je aan het maken bent.
Mvg,
Johi
Eigenlijk is de Arduino compiler een C++ compiler.
En in C++ kun je wel wat leuke dingen doen:
Cast de eerste term naar een String en dan tel je gewoon weg de variablen op bij de String die je aan het maken bent.
- Code: Alles selecteren
// voorbeeld: de kot van het elektrisch verbruik op basis van het vast recht en het verbruik:
const float huurMeter = 120;
float verbruik = 1;
const float prijsKwh = 0.25;
const float btw = 21;
float kost;
kost = (huurMeter + verbruik * prijsKwh) * (1 + btw / 100.0);
Serial.println((String)"Kost = (" + huurMeter + "+" + verbruik + "*" + prijsKwh + ") * (1+" + btw + "/100.0) = " + kost);
Mvg,
Johi
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten