Raine Ampuja

SIOC muuttujista?

6 viestiä aiheessa

Tarkoitus oli tehdä servosta nopeusmittari

 

Päättelin, että koska offset 02bc antaa arvoja välille 0 - kts*128 niin

Variaabeli v001 hakee IAS-arvon

Sitten L0:lla lasketaan se takaisin solmuksi (luku / 128) ja kerrotaan n. 3:lla (koska servo toimii alueella 0 - 1022 n. 180 astetta ja  toi mun fööni kulkee sellasta vähän reilua 300 kts:a. Lopun voi hoitaa sovitusrattailla)

Sitten rajataan IF THEN lausekkeilla pois arvot yli 1022 ja toisaalta alle 20

 

Var 0001, Link FSUIPC_IN, Offset $02BC, Length 4, Type 1 // IAS

{

L0 = V0001 / 128 // IAS conversion to knots

L1 = L0 * 3

// Servon alue on 0 - 1022 niin, eiköhän se viisari pyöri suurin piirtein oikein tuolla kertoimella (KNOTS*3)

 

 

IF L1 > 1022 // servo limits

{

L1 = 1022

}

 

IF L1 < 20/ servo limits

{

L1 = 0

}

 

V0002 = L1

}

 

Var 0002, Link USB_SERVOS, Device 0, Output 2, PosL 1, PosC 512, PosR 1023

 

 

Toimiikohan tää, tuntus liian helpolta... ???

Nuo muuttujat on mulle vielä hieman epäselvät.

 

Voiko esim L-muuttujaa käyttää samassa koodissa eri osioissa. vai säilyykö niiden arvo jos esim variometrissäkin lasketaan L0, L1 ja L2 arvoja...

 

Onko variaabelin oltava aina v ja numero, vai voinko käyttää omia

kuten niinkin nerokasta muuttujaa kuin  A! :)

 

esim.:

 

A = 200- v0001, a = a+1, tms.

 

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Saattaa toimiakin - vaikeaahan tuo ei ole vaan siinä on vaan paljon opettelemista. En ole ihan varma tuosta L:n jutusta, toisaalta saattaa toimiakin, mutta kokeilemalla selviää. Oliko se nyt "paikallinen" yhden muuttujamäärittelyn sisällä vai peräti vain aaltosulkeiden sisällä?

 

Mutta saat yksinkertaistettuakin tuota vielä:

 

Var 0001, Name Airspeed, Link FSUIPC_IN, Offset $02BC, Length 4, Type 1 // IAS

{

  L0 = &Airspeed / 43 // IAS conversion to knots ( (x / 128) * 3 )

  IF L0 > 1022 // upper servo limit

  {

      IF L0 < 20 // lower limit

      {

        &AirspeedServo = L0

      }

  }

}

 

Var 0002, Name AirspeedServo, Link USB_SERVOS, Device 0, Output 2, PosL 1, PosC 512, PosR 1023

 

Saattaisi toimia, en pysty nyt testaamaan :-)

 

//T

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Mä testaan ton, toi kerroin kolme on ihan hihasta, sen vuoksi ajattelin pistää sen erikseen...siis muutella

sitä ja katsoa, että koska se viisari alkaa olla kohdallaan. Itse asiassa sen pitäs varmaan olla minus merkkinen, koska toi sovitinratashan muuttaa servon suunnan päinvastaiseksi.

 

Huom. ton servon saa myös poltettua, jos arvot on ihan hanurista

servo pyrkii pyörimään rajoittimen yli...kuumenee ja lopulta palaa

No vielä en itse ole polttanut, mutta kuumana se kävi...joten kiinnostaisi seuraava juttu:

 

 

Pystysköhän tosta kyseisestä koodista tekemään sellasen 7segment pohjaisen testerin,

jolla voisi lukea, että mitä arvoja toi offset ihan oikesti tuottaa?

 

Siis kytkis mastercardin näyttökorttiin 5 segementtiä esim ulostuloon 11-15

Mitäs tohon koodiin pitäs lisätä?

 

Samalla periaatteellahan voisi testata monta muutakin asiaa...

Vai onko jo olemassa joku vastaava ohjema.

Jaa viesti


Link to post
Jaa muulla sivustolla

 

Var 0001, Name Airspeed, Link FSUIPC_IN, Offset $02BC, Length 4, Type 1 // IAS

{

  L0 = &Airspeed / 43 // IAS conversion to knots ( (x / 128) * 3 )

  IF L0 > 1022 // upper servo limit

  {

      IF L0 < 20 // lower limit

      {

        &AirspeedServo = L0

      }

  }

}

 

Var 0002, Name AirspeedServo, Link USB_SERVOS, Device 0, Output 2, PosL 1, PosC 512, PosR 1023

 

Saattaisi toimia, en pysty nyt testaamaan :-)

 

//T

 

 

Toimiiko toi IF rakenne noin...siis jos

L0 > 1022 niin se ei enää kasva koska

&AirspeedServo = L0

ja laskut jämähtää tähän (näinkö tää ajatellaan?)

 

Vai mitä tapahtuu kun L0 saa arvon 1023?

Mä ajattelin, että se koodi funtsaa, että nyt tuli 1023...so what

Jos L0 > 1022 THEN &AirspeedServo = 1023  ???

mutta laittamalla

Jos L0 > 1022 THEN &AirspeedServo =1022, niin nyt se jämähtää ainakin...

 

Mutta jos se toimii kuten esitit, niin sehän helpottaa koodintekoa kummasti :thmbup:

 

 

Logiikasta vielä:

Tuo &airspeedservo-muuttuja voidaan siis nimetä vasta vikalla rivillä,

koska tää ei lue rivijärjestysksessä kuten basicit (näinkö täöä ajatus menee?)

 

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Pystysköhän tosta kyseisestä koodista tekemään sellasen 7segment pohjaisen testerin,

jolla voisi lukea, että mitä arvoja toi offset ihan oikesti tuottaa?

 

---

 

Samalla periaatteellahan voisi testata monta muutakin asiaa...

Vai onko jo olemassa joku vastaava ohjema.

 

IOCPConsole.exe. Ja kun pistät muuttujiin kommentit // vspeed servo < tähän tyyliin, se muistaakseni vielä ottaa ne sinne sulle kätevästi valmiiksi joka muuttujan kohdalle näkyviin. Siitä vaan "connect" päälle (saattaa taas vaatia jotain ini:n puukotusta, en muista varmaan) ja pystyt kattomaan kaikkia muuttujia reaaliajassa.

 

Noi noiden spaniaardien softat on kauheen sekavia aluksi, ja käyttöliittymät on ihan järkyttäviä, mut kun ne oppii ja tuntee, se on kyllä varsin pätevä setti.

 

//T

Jaa viesti


Link to post
Jaa muulla sivustolla

Noi noiden spaniaardien softat on kauheen sekavia aluksi, ja käyttöliittymät on ihan järkyttäviä, mut kun ne oppii ja tuntee, se on kyllä varsin pätevä setti.

//T

 

Kiitoksia, loisto-ohjelma..ei tarvinnu puukkoa...ohjelma päälle ja open =>  munkoodi.ssi

ja ruudulle pölähtää fs:n todelliset  ja servolle lähtevät arvot, nerokasta!

 

:thmbup:

Jaa viesti


Link to post
Jaa muulla sivustolla

Luo uusi käyttäjätunnus tai kirjaudu sisään

Sinun täytyy olla jäsen osallistuaksesi keskusteluun

Luo käyttäjätili

Rekisteröi uusi käyttäjätili helposti ja nopeasti!


Luo uusi käyttäjätili

Kirjaudu sisään

Sinulla on jo käyttäjätili?


Kirjaudu sisään