Új hozzászólás Aktív témák

  • JulianSinulf

    őstag

    Sziasztok!

    Bajban vagyok egy kicsit a függvényekkel. Nem működnek.
    Korábban már használtam őket, akkor nem volt gond.
    Ahogy a neten olvastam, először a függvényeket kell megírni, majd utána jön a setup és loop rész.
    Meg lehet a loop után is írni, de akkor a setup előtt függvény prototípust kell létrehozni.
    Én megpróbáltam mind a két módszert, de egyik sem működött.
    A setup-on belül lefut az egyik függvény, aminek le is kell futnia, de a loop-ban nem működnek.

    A kód egy része, mikor a függvény a setup előtt van:
    void rovid_vissza()
    {
    void commTest();
    stepper_driver.moveAtVelocity(-VELOCITY);
    uint32_t interstep_duration = stepper_driver.getInterstepDuration();
    Serial.println(interstep_duration);
    delay(500);
    stepper_driver.moveAtVelocity(0);
    }

    void commTest()
    {
    if (not stepper_driver.isSetupAndCommunicating())
    {
    Serial.println("Stepper driver not setup and communicating!");
    return;
    }
    Serial.println("Stepper driver OK");

    bool hardware_disabled = stepper_driver.hardwareDisabled();
    TMC2209::Status status = stepper_driver.getStatus();

    if (hardware_disabled)
    {
    Serial.println("Stepper driver is hardware disabled!");
    }
    else
    Serial.println("Stepper driver is hardware enabled!");

    }

    void setup()
    {
    Serial.begin(SERIAL_BAUD_RATE);

    stepper_driver.setup(serial_stream);

    TMC2209::Settings settings = stepper_driver.getSettings();
    stepper_driver.setRunCurrent(RUN_CURRENT_PERCENT);
    stepper_driver.enableCoolStep();
    stepper_driver.enable();

    buff[0] = 0;

    commTest();
    }

    void loop()
    {


    if(Serial.available())
    {
    char c = Serial.read();

    if(c == '\n')
    {
    buff[p] = 0;

    String str = String(buff);
    if(str == "10") void hosszu();
    if(str == "-10") void hosszu_vissza();
    if(str == "1") void kozepes();
    if(str == "-1") void kozepes_vissza();
    if(str == ".1") void rovid();
    if(str == "-.1") void rovid_vissza();

    p=0;
    buff[0] = 0;
    }
    else
    {
    buff[p] = c;
    if(p<Length-1) p++;
    }
    }


    }

    A commTest a setup-ban lefut.
    Ha a rövid_vissza részét beírom az "if" függvényhez egy az egyben, akkor működik, leszámítva, hogy a commTest már nem fut le.
    A kód lényegében úgy működik, ha minden a megfelelő "if" függvénynél van, csak elegánsabb lenne, ha a loop-ban nem lenne annyi minden.

    Valaki tudna ötletet adni, hogy mit rontok el?

Új hozzászólás Aktív témák

Hirdetés