Härvelit ja muut rakennelmat.

Keskustelun 'Vähemmän kelkkailuun liittyvä jutustelua' on aloittanut käyttäjä ZetaÄrrä, 15/3/13.

  1. sampå

    sampå Ockelbo 300 -73 + Arctic Cat Super Jag -90

    Vs: Härvelit ja muut rakennelmat.

    Osallistun myös kolmipyöräisellä, tosin moottorittomalla kulkineella. Mahoton hauska driftailla jäällä. 8)

    [​IMG]

    [​IMG]

    Lisempää kuvia rojektin eri vaiheista: klik
     
  2. racve -05

    racve -05 HC evo

    Vs: Härvelit ja muut rakennelmat.

    Tuo subaru oli ihan hillitön. Vinssi kruunas koko paketin..
     
  3. Janne-setä

    Janne-setä Renegade Turbo r Smart Shox -23

    Vs: Härvelit ja muut rakennelmat.

    Olikos sampå kruisailemassa täällä keminsuuntien lähettyvillä lauantaina, ko tuon näkönen laite pyörähti risteyksen ohitte?
     
  4. sampå

    sampå Ockelbo 300 -73 + Arctic Cat Super Jag -90

    Vs: Härvelit ja muut rakennelmat.

    Saatoin mie vain senki tehä.
     
  5. SKMXZ

    SKMXZ No sled now...

    Vs: Härvelit ja muut rakennelmat.

    Kuvaa ei ole mut Kankaanpääs on yks golf kenttä ison tien varres niin siellä on ruohonleikkurina joku carina tms. Eteen olivat laittaneet jonkun leikkuupöydän. Ei sit hajuakaan ku on tehny mut sellasen siellä nähny. ;D
     
  6. Jack796

    Jack796 Kelkaton

    Vs: Härvelit ja muut rakennelmat.

    Ettei kuitenkin olisi pallonkeruu laite carinassa kiinni:
    https://www.google.fi/search?q=golfkentt%C3%A4+pallonkeruu&safe=off&biw=1920&bih=935&source=lnms&tbm=isch&sa=X&ei=zWSLVLjVA4HNPfPqgbAH&ved=0CAcQ_AUoAg#safe=off&tbm=isch&q=golf+range+ball+picker
    2 kesää olin golf kentällä töissä, tuli pallon keruu tutuksi rangelta (harj. alue). Toyotan pick-up:ssa oli 5-osainen keruulaite ja ikkunoissa teräsverkot, perkuleen golffarit tähtäs aina ikkunoihin ;D
     
  7. kloppi

    kloppi 3900syncro/zr500apv/550rmk

  8. TS82

    TS82 Hullulla hullun mieli..

    Vs: Härvelit ja muut rakennelmat.

    Heikkoa tuo ketju.. 3 osaan oli pärähtäny.
    [​IMG]
    [​IMG]

    Oli samassa rytäkässä hajonnu toiselta puolen vuorostaan vetarin pää. Nyt on paikallaan kokonaan uus ja toivottavasti se kestää kans.

    Tuon rempan jälkeen sain taas vetoojaan kiini ku lunta alakaa olla iha haitalle asti. Suojohjasessa metässä kauttaaltaan pohja aurasi ja alimmillaan 40cm maavaraa.. Ei pitkälti jaksanu mennä eteen päin ku piti ottaa välistä pakilla taaksepäin.
    Tuon upotuksen jäläkeen vasta laitoin telat ja enää ei ainakaan niin syvällä ui.
    Ja jokunen loppukuva telojenki kans..
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
     
  9. TS82

    TS82 Hullulla hullun mieli..

    Vs: Härvelit ja muut rakennelmat.

    Heikkoa tuo ketju.. 3 osaan oli pärähtäny.
    [​IMG]
    [​IMG]

    Oli samassa rytäkässä hajonnu toiselta puolen vuorostaan vetarin pää. Nyt on paikallaan kokonaan uus ja toivottavasti se kestää kans.

    Tuon rempan jälkeen sain taas vetoojaan kiini ku lunta alakaa olla iha haitalle asti. Suojohjasessa metässä kauttaaltaan pohja aurasi ja alimmillaan 40cm maavaraa.. Ei pitkälti jaksanu mennä eteen päin ku piti ottaa välistä pakilla taaksepäin.
    Tuon upotuksen jäläkeen vasta laitoin telat ja enää ei ainakaan niin syvällä ui.
    Ja jokunen loppukuva telojenki kans..
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
     
  10. Vesa50

    Vesa50 Ockelbo 300-S, Lynx 250

    Vs: Härvelit ja muut rakennelmat.

    Tässä on rakennelma, jonka olen tehnyt vanhan pesukoneen moottorilla, hajonneen B&D akkuporakoneen liipasimella, josta nopeuden säätö, toisen, vanhemman pyykkikoneen ohjelmavalitsin katkaisijana sekä liukukiskot nailonia teräksen päällä. YMS YMS. Yksi sylinteri, joka kiinnitetään tuolla isolla kiilahihnapyörällä. Rummun päädyt irrotettavia. Mikä laite on kyseessä?
    [​IMG]

    [​IMG]
     
  11. Jani Sipola

    Jani Sipola Presidentti Ylläpitäjä

  12. kloppi

    kloppi 3900syncro/zr500apv/550rmk

    Vs: Härvelit ja muut rakennelmat.

    juu ite on tullut värkkäiltyä......tuossa viimesin tekele ;D

    https://youtu.be/qB3XJiFhAm4

    https://youtu.be/fg7eTk-iQyo
     
  13. Vesa50

    Vesa50 Ockelbo 300-S, Lynx 250

    Vs: Härvelit ja muut rakennelmat.

    Komeita on Youtuubin vempaimet. Tässä eräs 12V vinssistä rakentamani järjestelmä aurinkopaneelin kääntämiseen auringon mukaan. Hammasratas filmipintavanerista. Oli muuten tarkka laskettava. Järjestelmä on immuuni pilvile ja sateille eli kääntää paneeleja 24 h aurinkoa seuraten, satoi tai paistoi. Oikealla ylhäällä oleva vempain on vanha Mazdan antennin nostin. Sillä irrotetaan veto pois mikäli tuulen voima ylittää 18 m/s. Paneeli kääntyy tällöin sivutuuleen. Alla elektroniikka, joka on näköiseni. Ei yhtään juotosta. Vanhaa( 30 luvulta VW rele)ja uutta Arduino; ohjelmoitava mikropiiri.
    [​IMG]

    [​IMG]
     
  14. T-Cat

    T-Cat Well-Known Member

    Vs: Härvelit ja muut rakennelmat.

    Vesahan taitaa olla oikea "pelle peloton", hienoja vehkeitä. Ei se juottaminen eikä juominen ole vaikeaa pidemmän päälle, kyllä niihin harjaantuu ;D Tuo sinun aiempi härveli, enpä kyllä keksi muuta kuin että olisiko se hylsynkiillotusrumpu? Ja vääräleuoille, ei kaljatölkki yms vaan aseen patruunan hylsy kyseessä. :)
     
  15. Vesa50

    Vesa50 Ockelbo 300-S, Lynx 250

    Vs: Härvelit ja muut rakennelmat.

    Tykkään nikkaroida kaikennäköistä mitä mieleen tulee. Useinmiten kuitenkin tarpeeseen tehtyjä vempaimia. Kun enempää arvauksia ei ole ilmennyt, kerron, että tuo rumpu on ns. kuularumpu, jolla jauhetaan erilaisista karkeammista aineista alle mikronin kokoisia jauheita. Perustuu kuulien tippumiseen alas keskimäärin yläkuolokohdassa.(eri halkaisijat eri kohdassa) Tuolle rummulle laskettu kiertonopeus 5 -15 mm:n kuulille on keskimääräinen 69 R/min.
    Edit: Kyllä minä juotankin, mutta tämä oli kokeilu. Poistin kuoret näistä "sokeripaloista" eli sähköliittiimistä. Niissä sisällä messinkiset pienet ruuviiliittimet, joita tässä aurinkopanelin elektroniikassa käytin.
     
  16. Vesa50

    Vesa50 Ockelbo 300-S, Lynx 250

    Vs: Härvelit ja muut rakennelmat.

    Tässä vielä yksi rakennelma. Kun naisväki valitti, että kukat kallistuu ikkunaa(aurinkoa) päin ja pitkävartiset kasvit jopa kaataa kukkaruukun, niin rakensin pyörivän kukkaruukun kullekin. Kokeilin sekä pienellä 5-12 V DC moottorilla että askelmoottorilla. Kinkkisin juttu oli askelmoottorin 8 FET:n Field effect transistor) ohjauselektroniikka. Meni kuukausi pohtia ja laskea joka ilta, sillä tätä kaaviota ei löydy internetistä. Kuvissa valmis tuote säädöillä (2 trimmeripotikkaa ja 1 LDR); sähköpiirustus ja komponentit kasattuna koekytkentälevylle.
    [​IMG]

    [​IMG]

    [​IMG]
     
  17. Bestservice

    Bestservice X-trim

    Vs: Härvelit ja muut rakennelmat.

    Et viittis tuota koodia julkasta kiinostas myös itele tehä. ;D
     
  18. Vesa50

    Vesa50 Ockelbo 300-S, Lynx 250

    Vs: Härvelit ja muut rakennelmat.

    Tarkoitatko tuota Arduinon ohjelmoitua pätkää vai itse elektroniikkapiirrosta? Vai molempia. Tallessa on molemmat.
    Edit: tässä piirustus. Kuvasta poiketen olen lisännyt(suojaamaan Arduinoa virta piikeiltä) maan ViN ja GND välille ihan Arduinon nastojen lähelle 10uF/50V konkan ja toisen,1uF/50V nastan D13 läheltä ->Gnd ja kolmas 4500pF/1kV kääntömoottorin M1 plusjohtimen(ennen suurtehodiodia 25AR20) ja maan välille.
    Lisäksi irrotusmoottorin(tuulesta johtuva) kytkennän otin D12 sijasta nastasta D13. En muista syytä miksi; luultavasti D12 ja D13 ovat eri arvoisia käytössä tai sitten mukavuussyistä.
    Edit 2: Kokeilin saisiko tuon koodin lähetettyä. Esikatselussa se ei ilmesty filenä kuten pitäisi.
    [​IMG]
    aurinkopaneelin_ohjaus.ino
    Edit 3: Onnistuihan se Text Edit toiminnolla vaikka itse file ei siirrykään. Ilmeisesti ohjelmat ei "keskustele" keskenään. Tuon voit kopioida suoraan tai kirjoittaa.

    Code:
     /* Timer lenghts in sec and minutes (modify timer lenghts here) */
    /* Timers in minutes */
    #define HORIZONTAL_ROTATION_MOTOR_LOW_DURATION_IN_MINUTES       1.1L
    #define RELEASE_MOTOR_LOW_WIND_MONITORING_DURATION_IN_MINUTES   0.5L
    /* Timers in seconds */
    #define HORIZONTAL_ROTATION_MOTOR_HIGH_DURATION_IN_SECONDS      3.05
    #define RELEASE_MOTOR_HIGH_WIND_HIGH_DURATION_IN_SECONDS        0.1
    #define RELEASE_MOTOR_LOW_WIND_HIGH_DURATION_IN_SECONDS         0.1
    #define WIND_MEASUREMENT_TIMER_INTERVAL_IN_SECONDS              10
    
    /* Used ports */
    #define HORIZONTAL_ROTATION_MOTOR_DIGITAL_OUTPUT_PORT 3
    #define VERTICAL_ROTATION_MOTOR_DIGITAL_OUTPUT_PORT   5
    #define RELEASE_MOTOR_DIGITAL_OUTPUT_PORT             12
    #define ANALOG_INPUT_PORT                             3
    #define WIND_MEASUREMENT_DIGITAL_INPUT_PORT           13
    
    /* Other constants */
    #define RELEASE_MOTOR_VOLTAGE_ON_LIMIT                3.00
    #define SECONDS_TO_MS                                 1000L
    #define MINUTES_TO_SECONDS                            60L
    
    /* Timer lenghts in ms (for program internal usage). DO NOT MODIFY UNLESS CLEARLY NEEDED (in most cases modifying values above is enough) */
    #define HORIZONTAL_ROTATION_MOTOR_LOW_DURATION        SECONDS_TO_MS * MINUTES_TO_SECONDS * HORIZONTAL_ROTATION_MOTOR_LOW_DURATION_IN_MINUTES
    #define HORIZONTAL_ROTATION_MOTOR_HIGH_DURATION       SECONDS_TO_MS * HORIZONTAL_ROTATION_MOTOR_HIGH_DURATION_IN_SECONDS
    #define RELEASE_MOTOR_HIGH_WIND_HIGH_DURATION         SECONDS_TO_MS * RELEASE_MOTOR_HIGH_WIND_HIGH_DURATION_IN_SECONDS
    #define RELEASE_MOTOR_LOW_WIND_HIGH_DURATION          SECONDS_TO_MS * RELEASE_MOTOR_LOW_WIND_HIGH_DURATION_IN_SECONDS
    #define RELEASE_MOTOR_LOW_WIND_MONITORING_DURATION    SECONDS_TO_MS * MINUTES_TO_SECONDS * RELEASE_MOTOR_LOW_WIND_MONITORING_DURATION_IN_MINUTES
    #define WIND_MEASUREMENT_TIMER_INTERVAL               SECONDS_TO_MS * WIND_MEASUREMENT_TIMER_INTERVAL_IN_SECONDS
    
    static unsigned long lastMillis = 0;
    static boolean       releaseMotorHighWindMonitoringActive;
    
    namespace timers {
      struct timer_t{
        boolean       running;
        /* NOTE timeLeft MUST be a signed number int or long as the code relies on it being able to be negative */
        long          timeLeft;
        long          timerLenghtInms;
      };
    
      static timer_t HorizontalRotationMotorLowToHighTimer;
      static timer_t HorizontalRotationMotorHighToLowTimer;
      static timer_t ReleaseMotorHighWindHighToLowTimer;
      static timer_t ReleaseMotorLowWindHighToLowTimer;
      static timer_t ReleaseMotorLowWindMonitoringTimer;
      static timer_t WindMeasurementUpdateTimer;
    
      void initializeTimer(timer_t * timer, long timerLenghtInms) {
        timer->running         = false;
        timer->timeLeft        = -1;
        timer->timerLenghtInms = timerLenghtInms;
      }
    
      void initializeTimers() {
        initializeTimer(&HorizontalRotationMotorLowToHighTimer, HORIZONTAL_ROTATION_MOTOR_LOW_DURATION);
        initializeTimer(&HorizontalRotationMotorHighToLowTimer, HORIZONTAL_ROTATION_MOTOR_HIGH_DURATION);
        initializeTimer(&ReleaseMotorHighWindHighToLowTimer,    RELEASE_MOTOR_HIGH_WIND_HIGH_DURATION);
        initializeTimer(&ReleaseMotorLowWindHighToLowTimer,     RELEASE_MOTOR_LOW_WIND_HIGH_DURATION);
        initializeTimer(&ReleaseMotorLowWindMonitoringTimer,    RELEASE_MOTOR_LOW_WIND_MONITORING_DURATION);
        initializeTimer(&WindMeasurementUpdateTimer,            WIND_MEASUREMENT_TIMER_INTERVAL);
      }
    
      void setTimer(timer_t * timer) {
        timer->running  = true;
        timer->timeLeft = timer->timerLenghtInms;
      }
    
      void resetTimer(timer_t * timer) {
        timer->running  = false;
        timer->timeLeft = -1;
      }
    
      boolean hasTimerExpired(timer_t * timer, long msSinceLastCheck) {
        if (timer->running == true) {
          timer->timeLeft -= msSinceLastCheck;
          if (timer->timeLeft <= 0) {
            resetTimer(timer);
            return true;
          }
        }
    
        return false;
      }
    
      boolean isTimerRunning(timer_t * timer) {
        return timer->running;
      }
    }
    
    namespace digitalOutputs {
      struct digitalOutput_t{
        int       portNumber;
        int       currentState;
        int       pendingState;
      };
    
      static digitalOutput_t HorizontalRotationMotorSwitch;
      static digitalOutput_t VerticalRotationMotorSwitch;
      static digitalOutput_t ReleaseMotorSwitch;
    
      void initializeDigitalOutput(digitalOutput_t * digitalOutput, int portNumber) {
        pinMode(portNumber, OUTPUT);
        digitalOutput->portNumber   = portNumber;
        digitalOutput->currentState = LOW;
        digitalOutput->pendingState = LOW;
      }
    
      void initializeDigitalOutputs() {
        initializeDigitalOutput(&HorizontalRotationMotorSwitch, HORIZONTAL_ROTATION_MOTOR_DIGITAL_OUTPUT_PORT);
        initializeDigitalOutput(&VerticalRotationMotorSwitch,   VERTICAL_ROTATION_MOTOR_DIGITAL_OUTPUT_PORT);
        initializeDigitalOutput(&ReleaseMotorSwitch,            RELEASE_MOTOR_DIGITAL_OUTPUT_PORT);
      }
    
      boolean isDigitalOutputHighStateAllowed(int portNumber) {
        if (portNumber == HORIZONTAL_ROTATION_MOTOR_DIGITAL_OUTPUT_PORT && ReleaseMotorSwitch.currentState == HIGH)
          return false;
    
        if (portNumber == RELEASE_MOTOR_DIGITAL_OUTPUT_PORT && HorizontalRotationMotorSwitch.currentState == HIGH)
          return false;
    
        return true;
      }
    
      boolean SetDigitalOutputToHigh(digitalOutput_t * digitalOutput) {
        digitalOutput->pendingState = HIGH;
    
        if (isDigitalOutputHighStateAllowed(digitalOutput->portNumber)) {
          Serial.println("Digital output set to high:");
          Serial.println(digitalOutput->portNumber);
          digitalWrite(digitalOutput->portNumber, HIGH);
          digitalOutput->currentState = HIGH;
          return true;
        }
        Serial.println("Digital output high state not allowed now:");
        Serial.println(digitalOutput->portNumber);
        return false;
      }
    
      void checkDigitalOutputPendingHighStates() {
        if (HorizontalRotationMotorSwitch.pendingState == HIGH && HorizontalRotationMotorSwitch.currentState == LOW) {
          if (SetDigitalOutputToHigh(&HorizontalRotationMotorSwitch) == true)
            timers::setTimer(&timers::HorizontalRotationMotorHighToLowTimer);
        }
    
        if (ReleaseMotorSwitch.pendingState == HIGH && ReleaseMotorSwitch.currentState == LOW) {
          if (SetDigitalOutputToHigh(&ReleaseMotorSwitch) == true) {
              if (releaseMotorHighWindMonitoringActive == true) {
                timers::setTimer(&timers::ReleaseMotorHighWindHighToLowTimer);
                releaseMotorHighWindMonitoringActive = false;
              }
              else
                timers::setTimer(&timers::ReleaseMotorLowWindHighToLowTimer);
          }
        }
      }
    
      void SetDigitalOutputToLow(digitalOutput_t * digitalOutput) {
        Serial.println("Digital output set to low:");
        Serial.println(digitalOutput->portNumber);
        digitalWrite(digitalOutput->portNumber, LOW);
        digitalOutput->currentState = LOW;
        digitalOutput->pendingState = LOW;
        checkDigitalOutputPendingHighStates();
      }
    
      void SetDigitalOutputPendingState(digitalOutput_t * digitalOutput, int newPendingState) {
        digitalOutput->pendingState = newPendingState;
      }
    }
    
    namespace digitalInput {
      struct digitalInput_t{
        int       portNumber;
        int       currentValue;
      };
    
      static digitalInput_t DigitalInput;
    
      void initializeDigitalInput(digitalInput_t * digitalInput, int portNumber) {
        pinMode(portNumber, INPUT);
        digitalInput->portNumber   = portNumber;
        digitalInput->currentValue = 0;
      }
    
      void updateDigitalInputValue(digitalInput_t * digitalInput) {
        digitalInput->currentValue = digitalRead(digitalInput->portNumber);
        Serial.println("New digital input value:");
        Serial.println(digitalInput->currentValue);
      }
    
      void digitalInputBasedActions(digitalInput_t * digitalInput) {
    
        if (releaseMotorHighWindMonitoringActive == true) {
          if (digitalInput->currentValue == 1) {
            if (digitalOutputs::SetDigitalOutputToHigh(&digitalOutputs::ReleaseMotorSwitch) == true) {
              timers::setTimer(&timers::ReleaseMotorHighWindHighToLowTimer);
              releaseMotorHighWindMonitoringActive = false;
            }
          }
        }
    
        if (timers::isTimerRunning(&timers::ReleaseMotorLowWindMonitoringTimer) == true) {
          if (digitalInput->currentValue == 1) {
            /* High wind detected while waiting for wind to be low for RELEASE_MOTOR_LOW_WIND_MONITORING_DURATION time.
             * Start low wind monitoring from beginning.
             */
            Serial.println("ReleaseMotorLowWindMonitoringTimer restarted");
            timers::setTimer(&timers::ReleaseMotorLowWindMonitoringTimer);
          }
        }
      }
    }
    
    /* NOTE: analogInput not used currently. Code left here in case it is needed again later. */
    namespace analogInput {
      struct analogInput_t{
        int       portNumber;
        int       currentValue;
        float     currentValueInV;
      };
    
      static analogInput_t AnalogInput;
    
      void initializeAnalogInput(analogInput_t * analogInput, int portNumber) {
        analogInput->portNumber      = portNumber;
        analogInput->currentValue    = 0;
        analogInput->currentValueInV = 0.0;
      }
    
      void updateAnalogInputValue(analogInput_t * analogInput) {
        analogInput->currentValue    = analogRead(analogInput->portNumber);
        analogInput->currentValueInV = analogInput->currentValue * 0.0049;
        Serial.println("New analog input value in V:");
        Serial.println(analogInput->currentValueInV);
      }
    
      void analogInputBasedActions(analogInput_t * analogInput) {
    
        if (releaseMotorHighWindMonitoringActive == true) {
          if (analogInput->currentValueInV >= RELEASE_MOTOR_VOLTAGE_ON_LIMIT) {
            if (digitalOutputs::SetDigitalOutputToHigh(&digitalOutputs::ReleaseMotorSwitch) == true) {
              timers::setTimer(&timers::ReleaseMotorHighWindHighToLowTimer);
              releaseMotorHighWindMonitoringActive = false;
            }
          }
        }
    
        if (timers::isTimerRunning(&timers::ReleaseMotorLowWindMonitoringTimer) == true) {
          if (analogInput->currentValueInV > RELEASE_MOTOR_VOLTAGE_ON_LIMIT) {
            /* Voltage detected while waiting for voltage to be off for RELEASE_MOTOR_LOW_WIND_MONITORING_DURATION time.
             * Start voltage off monitoring from beginning.
             */
            Serial.println("ReleaseMotorLowWindMonitoringTimer restarted");
            timers::setTimer(&timers::ReleaseMotorLowWindMonitoringTimer);
          }
        }
      }
    }
    
    void setup() {
    
      digitalOutputs::initializeDigitalOutputs();
      digitalInput::initializeDigitalInput(&digitalInput::DigitalInput, WIND_MEASUREMENT_DIGITAL_INPUT_PORT);
      timers::initializeTimers();
      releaseMotorHighWindMonitoringActive = true;
      timers::setTimer(&timers::HorizontalRotationMotorLowToHighTimer);
      timers::setTimer(&timers::WindMeasurementUpdateTimer);
    
      Serial.begin(9600);
      while (Serial.available()) {
      }
      Serial.println("Program execution begins");
      lastMillis = millis(); /* do this last in setup */
    }
    
    void loop() {
    
      unsigned long deltaMillis = 0;
      unsigned long currentMillis = millis();
    
      if (currentMillis != lastMillis) {
        deltaMillis = currentMillis-lastMillis; /* note this works even if millis() has rolled over back to 0 */
        lastMillis = currentMillis;
      }
    
      if (timers::hasTimerExpired(&timers::WindMeasurementUpdateTimer, deltaMillis)) {
        Serial.println("WindMeasurementUpdateTimer expired. Seconds program has been running:");
        Serial.println(currentMillis/1000);
        digitalInput::updateDigitalInputValue(&digitalInput::DigitalInput);
        digitalInput::digitalInputBasedActions(&digitalInput::DigitalInput);
        timers::setTimer(&timers::WindMeasurementUpdateTimer);
      }
    
      if (timers::hasTimerExpired(&timers::ReleaseMotorHighWindHighToLowTimer, deltaMillis)) {
        Serial.println("ReleaseMotorHighWindHighToLowTimer expired.");
        digitalOutputs::SetDigitalOutputToLow(&digitalOutputs::ReleaseMotorSwitch);
        timers::setTimer(&timers::ReleaseMotorLowWindMonitoringTimer);
      }
    
      if (timers::hasTimerExpired(&timers::ReleaseMotorLowWindHighToLowTimer, deltaMillis)) {
        Serial.println("ReleaseMotorLowWindHighToLowTimer expired.");
        digitalOutputs::SetDigitalOutputToLow(&digitalOutputs::ReleaseMotorSwitch);
        releaseMotorHighWindMonitoringActive = true;
      }
    
      if (timers::hasTimerExpired(&timers::ReleaseMotorLowWindMonitoringTimer, deltaMillis)) {
        Serial.println("ReleaseMotorLowWindMonitoringTimer expired.");
        if (digitalOutputs::SetDigitalOutputToHigh(&digitalOutputs::ReleaseMotorSwitch) == true)
          timers::setTimer(&timers::ReleaseMotorLowWindHighToLowTimer);
      }
    
      if (timers::hasTimerExpired(&timers::HorizontalRotationMotorLowToHighTimer, deltaMillis)) {
        Serial.println("HorizontalRotationMotorLowToHighTimer expired. Seconds program has been running:");
        Serial.println(currentMillis/1000);
        if (digitalOutputs::SetDigitalOutputToHigh(&digitalOutputs::HorizontalRotationMotorSwitch) == true)
          timers::setTimer(&timers::HorizontalRotationMotorHighToLowTimer);
      }
    
      if (timers::hasTimerExpired(&timers::HorizontalRotationMotorHighToLowTimer, deltaMillis)) {
        Serial.println("HorizontalRotationMotorHighToLowTimer expired. Seconds program has been running:");
        Serial.println(currentMillis/1000);
        digitalOutputs::SetDigitalOutputToLow(&digitalOutputs::HorizontalRotationMotorSwitch);
        timers::setTimer(&timers::HorizontalRotationMotorLowToHighTimer);
      }
    }
    
     
  19. make60

    make60 Active Member

    Vs: Härvelit ja muut rakennelmat.


    [​IMG]

    [​IMG]
    Tässäpä olis härveliä ihmeteltäväksi paikalliselta pelle pelottomalta,rupelin siivet vielä puuttuu...
     
  20. Vesa50

    Vesa50 Ockelbo 300-S, Lynx 250

    Vs: Härvelit ja muut rakennelmat.

    Aiotko kelirikkoalusta rakentaa vai mistä on kyse?
    Edit: taitaa olla myös ilmatyynyt alla.
     

Suosittele tätä sivua