C-ben van egy csomó void funkció amelyeknek azonos a neve és a végén egy számmal különböztetem meg őket. Hogyan tudnám őket a szám szeirnt hívni?
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
int pot=0;
int Azero;
int p0 = A0;
int p1 = A1;
void setup() {
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Serial.begin(9600);
}
//ilyen egy void
void display1()
{
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println("2.1UJSZ OSZT.");
display.println("postmaturus: 42+");
display.println("L:50-57cm,fkf:33-36cm");
display.println("3340g.koros:3-97+pcnt");
display.display();
}
void loop()
{
p0=analogRead(A1);
p0=p0/10;
if (p0<=1)
{
display1();
}
if (p0<=2)
{
display2();
}
//ez nagyon nem szép megoldás
// display + p0 +; vagy valami hasonló lenne a cél
delay(200);
}
Hozz létre egy szimpla display függvényt, aminek van egy egész értékű paramétere:
void display1(int param)
a függvény törzsén belül pedig a paramétertől függően egy feltétellel (if/else vagy switch/case) döntsd el, mit művelsz/írsz ki:
if (param <= 1) {
// Ide kerül, hogy mit csinálunk akkor, ha a paraméter 1 vagy annál kisebb
} else if (param <= 2) { {
// Ide kerül, hogy mit csinálunk akkor, ha a paraméter 2 vagy annál kisebb
}
majd a loop függvényen belül meghívod a display függvényt:
display(p0);
Mivel fordítás után már nem marad meg a név, így nem tudod név(+szám) alapján meghívni.
De pl berakhatod a függvényeket egy tömbbe:
int main()
{
static void (*displays[])() = {display1, display2};
int p0 = 0;
(*displays[p0])();
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!