Close

Knihovna a odevzdavani parametru typu pole

Úvodní stránka Fórum Software Vývojová prostředí Arduino IDE Knihovna a odevzdavani parametru typu pole

  • Toto téma obsahuje celkem 3 odpovědi. Do diskuze (2 diskutující) se naposledy zapojil uživatel poprad a poslední změna proběhla před 8 roky a 5 měsíci.
Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (celkem z 4)
  • Autor
    Příspěvky
  • #5118
    poprad
    Účastník

    Zdravím.
    Co dělám špatně, že mi hlásí knihovna chybu při deklaraci lokálních parametrů prvku pole.

    StepperSerial,cpp

    #include "Arduino.h"
    #include "SerialStepper.h"
    
    SerialStepper::SerialStepper(byte pin_STC, 
                                 byte pin_SHCP, 
                                 byte pin_DS, 
                                 byte pocet_M, 
                                 byte motory[], 
                                 byte smerM[])
    {
      byte _pin_STC = pin_STC;    // OK
      byte _pin_SHCP = pin_SHCP;  // OK
      byte _pin_DS = pin_DS;      // OK
      byte _pocet_M = pocet_M;    // OK
      byte _motory[] = motory[]; // tu to hlasi chybu
      byte _smerM[] = smerM[];   // tu to hlasi chybu
    }
    

    SerialStepper.h

    #ifndef SerialStepper_h
    #define SerialStepper_h
    
    #include "Arduino.h"
    
    class SerialStepper
    {
      public:
        SerialStepper (byte pin_STC,
                       byte pin_SHCP, 
                       byte pin_DS, 
                       byte pocet_M, 
                       byte motory[],
                       byte smerM[]);
    
      private:
    
    };
    

    Trápím se s tím dlouho a nevím jak to napsat správně.
    Děkuji

    #5125
    pesi
    Účastník

    Co ty čtverečky v názvech, Nějaký skrytý nedovolený znak?

    Asi to s tím nesouvisí, ale proč máš u include „arduino.h“ uvozovky? Není standardní knihovna a neměla by být ve špičatých závorkách: #include <Arduino.h>?

    #5129
    poprad
    Účastník

    Jaké čtverečky? Myslíš hranaté závorky, které označujú proměnné typu pole?
    Ty lomené závorky u Arduino.h opravím, ale určitě to nesouvisí s mojím problémem. Chybu to hlásí na označené řádky, když chci namapovat lokální proměnné pole na dovážené pole.

    
    byte _motory[] = motory[]
    byte _smerM[] = smerM[]
    
    #5170
    poprad
    Účastník

    Už jsem to vyřešil:

    SerialStepper.h

    
    #ifndef SerialStepper_h
    #define SerialStepper_h
    #include <Arduino.h>
    
    class SerialStepper
    {
      public:
        SerialStepper (byte pin_STCP,
                       byte pin_SHCP, 
                       byte pin_DS, 
                       byte pocetM, 
                       int  motory[]); 
        void Init(); 
    
      private: 
        byte _pin_STCP;
        byte _pin_SHCP; 
        byte _pin_DS;
        byte _pocetM;
        int * _motory = NULL;    // Inicializacia pointera
    };
    #endif
    

    SerialStepper.cpp

    
    #include <Arduino.h>
    #include "SerialStepper.h"
    
    SerialStepper::SerialStepper( byte pin_STCP, 
                                  byte pin_SHCP, 
                                  byte pin_DS, 
                                  byte pocetM, 
                                  int motory[])
    {
      this->_pin_STCP = pin_STCP;  // priradenie k lokalnym
      this->_pin_SHCP = pin_SHCP;  // premennym
      this->_pin_DS   = pin_DS;
      this->_pocetM   = pocetM;
      this->_motory = & motory[0]; // Priradenie adresy
    }
    

    A práce s lokálními proměnnými v SerialStepper.cpp už je klasika:

    
    .......
      digitalWrite (_pin_STCP,HIGH); 
    .......
      digitalWrite (_pin_SHCP,LOW );
    .......
    digitalWrite (_pin_DS,LOW );
    .......
    for (byte i = _pocetM; i>0 ;i--)
      {
        Motory = _motory[i-1];
    .......
    
Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (celkem z 4)
  • Pro reakci na toto téma se musíte přihlásit.