poniedziałek, 14 października 2024

obsidian. git clone

Jest to polecenie pobierające repozytorium DevlopNote.git z zasobów bartdurak chronione tokenem. 

git clone https://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@github.com//bartdurak/mud_gra.git

```` 



https://forum.obsidian.md/t/mobile-automatic-sync-with-github-on-ios-for-free-via-a-shell/46150




I recently started using Obsidian and didn’t want to pay for Sync or Working Copy, so I thought I’d try to figure out a way to sync my vault everywhere for free. I saw in the comments of this post by rsteele 98 and this post from ForceBru 83 that people were able to get GitHub to sync with their iOS device using the a-shell app, but the way to do it was not really discussed. I hope that this tutorial will be useful for other non-tech-savvy people like myself who would like to get their vault synced across all their devices without having to pay for it. The overall process for this comes from this post on the Logseq forums 100. It’s somewhat involved, but has improved my workflow so I think it’s worthwhile.

Process

Set-up:

  1. Install the a-shell app from the app store (link 886)
  2. Install the Obsidian mobile app
  3. Open a-shell and run pickFolder
  4. When the pop-up opens select On my iPhone → Obsidian (hit ‘Done’) choose the entire folder
  5. The working directory should now be the Obsidian files folder. For me, a-shell auto-named the the folder Documents (different from the default /Documents), so run renamemark Documents obsidian to change it
  6. Verify that the obsidian folder is a bookmark by running showmarks

Generate/Pair SSH key:

  1. Follow the steps from this GitHub article 615 to generate an SSH key (skip the other sections)
  2. To get the public key,cd back to root then cd .ssh/and head id_ed25519.pub
  3. Copy the entire output of the file (including the e-mail part)
  4. Sign in to Github in your mobile browser of choice (couldn’t see a way to add it through the app) and go to Settings → SSH and GPG keys → New SSH key
  5. Name the device and paste the contents of the .pub key into the field.

Create local repo:

  1. Go back to the obsidian folder with jump obsidian
  2. Create a subfolder for your vault with mkdir VAULT-NAME, then do the following commands to clone your vault:
    • cd VAULT-NAME
    • lg2 init .
    • lg2 remote add origin git@github.com:USERNAME/REPO-NAME.git
    • lg2 pull origin
  3. Type y at the prompt to add the host/key pair
  4. Choose SSH key 1 and enter its password (just hit enter if you didn’t add a password)
  5. Your vault should be downloaded from GitHub! Now is a good time to go into the Obsidian app and check to make sure everything looks okay. The Obsidian Git plugin throws a bunch of errors on startup, so go to Settings → Community Plugins → Obsidian Git settings and turn on ‘Disable on this device’
  6. Back in a-shell, at the beginning of the last output a-shell says Consider running.... Copy and run the two commands its suggests to store the SSH key and its password in user.identityFile and user.password, respectively
  7. Then store the name and email used for commits with the commands
    • lg2 config user.name "NAME"
    • lg2 config user.email "EMAIL"

Define Shortcuts to push and pull:

Both Shortcuts execute shell scripts through the a-shell Shortcut command ‘Execute command’. Links to my Shortcuts are below; all they do is execute the following commands inside a-shell:

  1. Pull Shortcut (Link 569):
    • jump obsidian
    • cd VAULT-NAME
    • lg2 pull origin
  2. Push Shortcut (Link 409):
    • jump obsidian
    • cd VAULT-NAME
    • lg2 add .
    • lg2 commit -m "updating from phone"
    • lg2 push origin

Automate push/pull:

  • For pulling:
    1. To automate pulling from GitHub on startup, I created another Shortcut (link 345) that would call the ‘Obsidian pull’ shortcut (created in the last step) and then open the Obsidian app
    2. Add this Shortcut to the home screen to replace Obsidian (app icon link 215)
    3. Optionally, disable Obsidian from appearing in the search menu (Settings → Obsidian → Siri & Search → Show App in Search) so that this shortcut is the only way to launch it
  • For pushing:
    1. This one is a little more tricky. I created Shortcut Automations that trigger whenever the Obsidian app is open or closed, then waits two minutes before pushing. If the app is closed and re-opened within two minutes the push doesn’t go through. A link to the Shortcut that triggers when Obsidian is closed is here 239, and a link to the Shortcut that triggers when Obsidian is opened is here 173. (If the Shortcuts folder doesn’t exist in Files, you’ll have to create it.) A downside to this method is that locking the phone with Obsidian still running doesn’t trigger a push, as iOS still considers the app ‘open’. Additionally, while working in the app for a long time, a push is never triggered. If anyone has any better ideas about how best how/when to push please let me know.

Other notes

  • I started learning how to use the shell and git about two weeks ago (and just to start synchronising my vault across devices), so I apologise if some of the steps are clunky or inefficient.
  • I’m pretty new to Obsidian as well and my vault is pretty small. The pushing/pulling might be too slow to be used reliably on larger vaults.
  • I tried using Automations to run the push/pull Shortcuts directly when Obsidian is open or closed, but they run whenever the app is minimised or un-minimised, which became cumbersome quickly.
  • Opening the app through a Shortcut that pulls from GitHub then launches Obsidian has worked pretty well so far for me, but I would like to have a better way to push.

czwartek, 7 marca 2024

regulacja PIDów

Roll (na boki), 
Pitch (przód tył),
Yaw (obrót prawo lewo)
oraz na 5 kolumn:
Proportional
Integral
D min
D max
Feedforward

 avifly.pl

Rozkład osi w dronie wyścigowym FPV 

 

Parametr P

Parametr P określa jak bardzo kontroler lotu pracuje, aby korygować lot oraz osiągnąć tor lotu podyktowany przez pilota za pomocą aparatury. 

Myśląc pod względem czułości oraz responsywności wysoka wartość parametru P może być odczuwalna w podobny sposób jak by wartości rates zostały zwiększone. Wysokie P zapewnia ostrzejsze bardziej sztywne sterowanie, niskie łagodniejsze.
Jeśli wartość P jest zbyt wysoka dron zaczyna być zbyt czuły i będzie miał tendencję do wprowadzania zbyt dużych korekt oraz będzie można doświadczyć oscylacji o wysokiej częstotliwości, mogą być widoczne na podglądzie lub/oraz słyszalne na nagraniu. Aby zniwelować niepożądane efekty, należy zmniejszyć ten parametr, jednak jeśli zostanie on zmniejszony za mocno, dron zacznie być ospały.

Parametr I

Parametr  I określa jak bardzo jak bardzo dron ma walczyć z siłami zewnętrznymi, takimi jak np. wiatr czy zaburzony środek się ciężkości. Należy odbierać to ustawienie jako ustawienie odpowiadające za ruch drona podczas utrzymywania się w jednej pozycji.
Jeśli dron ucieka „dryfuje” bez woli użytkownika oznacza to, że ten parametr jest za niski i należy go zwiększyć. Kiedy parametr I jest za wysoki pilot musi w bardzo dużym stopniu korygować model podczas lotu, jest to widocznie szczególnie przy manewrach wymagających używania gazu.
Kiedy parametr I jest za wysoki jest odczuwalny podobnie do tego gdy posiadamy za zmniejszony parametr oraz wolniejszy czas reakcji. W takim wypadku dron jest ograniczany przez ten prametr zaczyna być odczuwalny jako sztywny oraz nieresponsywny. W przypadku skrajnych wartości parametr I może powodować oscylacje o niskiej częstotliwości. 

Warto tutaj wspomnieć o wprowadzonej w nowszych wersjach funkcji „Anti Gravity”. Jest to funkcja niwelująca problem zauważalny podczas nagłego wznoszenia się i odpuszczania gazu, w wielu przypadkach w takich momentach np. jeden silnik zaczyna się szybciej wolniej kręcić, przez co ta strona drona szybciej traci wysokość. Wynika to z faktu, że nie ma na świecie 2 identycznych silników śmigieł czy też ESC i dostarczają inny ciąg. Może to wynikać z zużycia tych części lub różnic powstałych w trakcie produkcji. W poprzednich wersjach wymagane było podbicie tego parametru, aby uniknąć tego zjawiska. Działa w taki sposób, że podczas powolnych lotów parametr I jest obniżony, a podczas zwiększania wysokości i odpuszczania gazu następnie parametr I zostaje zwiększony w celu uniknięcia takiego zjawiska. 

Parametr D

Parametr D możemy uznać jako, taki który działa jako hamulec starający się nie dopuścić do zbyt dużej kontry spowodowanej parametrem P. Można to określić jako amortyzator, który zapobiega „odbijaniu” się jak piłka, dodanie parametru D łagodzi oraz niweluje oscylacje spowodowane przez parametr P oraz zmniejsza efekt „propwash”. 
Z tym parametrem należy obchodzić się z rozsądkiem, ponieważ zbyt wysoka jego wartość może spowodować spalenie silnika!
Zbyt niski parametr D może być widoczny przy wykonywaniu przewrotów oraz beczek po zakończeniu manewru jako zbyt duży powrót do poziomu, bujnięcie dronem
Zbyt wysoki parametr D może powodować, że responsywność drona znacząco spadnie oraz mogą pojawić się dodatkowe wibracje. W przypadku skrajnych wartości może dojść do przegrzania silnika, a następnie jego uszkodzenia. Dlatego warto podczas ustawiania tego parametru sprawdzać temperaturę silników. 

Ustawienia prametrów dla danych osi

Parametr P na osi roll

Najłatwiej jest ocenić czy prametr P jest ustawiony poprawnie wykonując spokojny lot, skupiając się na tym czy dron wykonuje precyzyjnie nasze polecenia. 
Podczas próby wykonywania ostrych zakrętów, jeśli parametr P jest za niski dron będzie nurkował na jedną stronę lub będą pojawiały się drobne oscylacje. Kiedy parametr P jest za wysoki pojawiają się szybkie oscylacje. Kiedy P jest ustawione w sposób idealny, mogą występować minimalne drgania przy naprawdę ostrych zakrętach.

Parametr P na osi Pitch

Aby sprawdzić, czy działa poprawnie wykonując tzw. split-S lub inny trick gdzie dokonujemy nagłego dodania gazu w celu „odratowania” modelu przed uderzeniem w ziemię,  należy zwrócić uwagę na ruch w tej osi. Jeżeli podczas takiego ruchu unosi się przód naszego drona, oznacza to, że parametr P jest zbyt niski, jeżeli odczuwamy szybkie oscylacje oznaczają że parametr P posiada zbyt wysoki i należy obniżyć jego wartość.
Wartości te należy dopracowywać do momentu, kiedy będzie zachowywał się responsywnie oraz będzie zwinny, należy zwrócić szczególną uwagę na to aby nie pojawiły się nadmierne wibracje. Mogą one się objawiać poprzez specyficzny dźwięk silników i nie być widoczne na podglądzie kamery jest to oznaka zbyt dużej wartości P.

Parametr D na osi Pitch oraz Roll

Parametr D dla każdej osi działa podobnie, jeśli podczas manewrów bardziej agresywnych takie jak przewroty lub beczki następuje przy końcu manewru charakterystyczne odbicie lub bujnięcie. 
Na ten problem pomoże zwiększenie wartości tego parametru co również zmniejszeniu efekt propwash.

Należy uważnie używać tego parametru jak zawsze w jego przypadku, zbyt duża jego wartość może się przyczynić do oscylacji o wysokiej częstotliwości przy końcu akrobacji lub/oraz do zwiększenia temperatury silników, co przy skrajnych wartości może się przyczynić do spalenia silników.
Jeśli ten parametr nie pomoże, warto spróbować funkcji „feedforward”.

Parametr I na osi Roll

Aby sprawdzić, czy ten parametr jest dobrany poprawnie należy wykonać parę ruchów tą osią w prawo i w lewo jeśli po puszczeniu drążka nasz dron FPV zmniejsza wysokość, na jakiej się znajduje oznacza to, że parametr I jest za niski. 
W wietrzne dni nasz dron może być zwiewany wtedy należy trochę podnieść ten parametr, w zależności od siły wiatru.
Wyższe wartości parametru mogą powodować oscylacje oraz uczucie, że dron jest bardzo sztywny, zaleca się utrzymywanie parametru w takim zakresie, aby dron był w stanie utrzymać poziom.

Parametr I na osi Pitch

Ustawienie tego parametru należy sprawdzić lecąc do przodu, kąt z jakim porusza się dron, powinien być jednostajny, jednak jeśli nie jest on utrzymywany, należy zwiększyć siłę tego parametru. 
Objawem zbyt dużego tego parametru są pojawiające się specyficzne dźwięki, kiedy nie dodajemy gazu.

Opcja anti-gravity

Opcja służąca wyrównywaniu drona podczas opadania, aby opadał równo, a nie w sposób kiedy jedno ramię drona opada szybciej niż inne. Najłatwiejszym sposobem na sprawdzenie tego jest wykonanie lotu na wprost mając coś w linii prostej aby mieć punkt orientacyjny, może być to horyzont, ziemia lub nawet drzewa. Jeśli po gwałtownym dodaniu a następnie odjęciu go nasz dron opada nie równo należy zwiększyć tą wartość, jednak jeśli będzie ona zbyt duża dron będzie zachowywał specyficznie.  

Parametr P na osi Yaw

Ustawienia dla osi Yaw są trudne do ustawienienia z powodu charakterystyki drona. Aby sprawdzić czy parametr jest dobrany prawidłowo, należy „zakręcić” drona po odpuszczeniu drążka obserwować jego zachowanie. Jeżeli zaobserwujemy wibracje lub dron podczas takich manewrów będzie zyskiwał wysokość należy obniżyć wartość natomiast, jeżeli dron zacznie przechylać się w jedną z stron należy ją zwiększyć.

Warto mieć na uwadze, że wibracje generowane na tej osi są znaczenie mniejsze w porównaniu z wibracjami na innych osiach, ponieważ ze względu na konstrukcję drona jest ona najsłabsza. 

Parametr I na osi Yaw

Niepoprawnie ustawiony parameter I na tej osi można zauważyć podczas pokonywania zakrętów. Ten parametr ma zapobiegać wyjeżdżaniu drona przy ostrych zakrętach, powinien być ustawiony na takim poziomie, aby dron pokonywał zakręty bez wypadania czy też wyjeżdżania z nich. Jeżeli będzie miał za dużą wartość, dron będzie nie stabilny oraz spadnie jego responsywność. 

Krótka ściąga pomagająca przejść proces PIDowania:

  • Jeśli dron po wykonaniu beczki lub przewrotu „odbija się” należy zwiększyć parametr D dla danej osi 
  • Jeśli przechyliłeś drona aby lecieć do przodu ale dron nie utrzymuje zdanego kąta, należy zwiększyć wartość I dla osi Pitch
  • Jeżeli przechyliłeś drona lecieć w bok i dron nie utrzymuje takiego przechylenia należy zwiększyć parametr I dla osi Roll
  • Jeżeli pojawiają się powolne oscylacje należy zwiększyć P 
  • Jeżeli po gwałtownym dodaniu gazu następnie odpuszczeniu go model przechyla się należy zwiększyć wartość anti-gravity
  • Jeśli przód drona ucieka bez dodania gazu należy zwiększyć parameter I
  • Jeżeli przód drona ucieka po dodaniu gazu należy zwiększyć anti-gravity
  • Jeżeli pojawia się propwash przy pokonywaniu ostrych zakrętów należy zwiększyć parametr D a zmniejszyć parametr I . Należy spróbować wykonać to dla osi Pitch oraz Roll 
  • Jeśli dron wyjeżdza podczas pokonywania zakrętów należy zwiększyć parametr I dla osi Yaw
  • Jeżeli chcesz aby dron zachowywał się sztywno zwiększ parametr I dla osi Roll i Pitch

czwartek, 14 września 2023

czwartek, 29 czerwca 2023

DIY FPV

DIY FPV


rtmp://a.rtmp.youtube.com/live2


== My config ==


FC plug

Departure from FC

















BAT and GND output

















Bringing BAT and GND to the old ESC














New ESC















V from 5V? or V with BAT?















The red cut wire is 5V


5V connected to the stabilizer














The old ESC had 2 x GND connected
There is no room for two GNDs or 2 x VCCs on the new ESC. You have to decide. Do we connect 5V or VBAT?
















5v or VBATThe instructions for connecting a new ESC are simple, but the practice is not. On the old ESC, a connection was made from the FC to a small device through 5v, the same 5v returned to the ESC in place of vcc. Now the question. How to connect it on the new ESC. a) when I connect with BAT, I will be on the safe side, but there will be two bare wires that power a small device at the bottom of the drone b) I will cut the red and black wires of the new ESC and connect 5v and GND to the ESC I will get current on ESC as it was before, but VBAT will still be empty

piątek, 2 czerwca 2023

FC do ESC. 5v || VBAT lub 5v && VBAT

DIY FPV

rtmp://a.rtmp.youtube.com/live2

 5v czy VBAT

 

Instrukcja do podłączenia nowego ESC jest prosta  , ale praktyka już nie.

 

Na starym ESC wykonano połączenie z FC do małego urządzenia rzez 5v, to samo 5v wróciło do ESC w miejsce vcc. Teraz pytanie.  

Jak to podłączyć na nowym ESC. 

a) jak podłączę się z BAT, to będę po stronie bezpiecznej, ale zostaną dwa gołę przewody które zasilają małe urządzenie na dole drona

b) przetnę przewody nowego ESC czerwony  czarny  z nich połączę się  5v i GND do ESC

dostanę prąd na ESC jak było wcześniej, ale dalej zostanie pusty VBAT


Wtyczka FC


Wyprowadzenie z FC

wyprowadzenie BAT i GND

Doprowadzenie BAT i GND do starego ESC



piątek, 3 marca 2023

EV3 Python. Lego

Wgrywanie programu python na Lego EV3

Tematyka dla użytkowników zaawansowanych w programowaniu EV3. Wymaga podstawowej znajomości języka python 3.

2. ev3-micropython
3. liknij  to google site

4. Instrukcja wgrywania

Beyond Basics Ex 7-11

Ćwiczenie 7: 'czujnik Blocks'

Ja zachowałem oryginalny tytuł tego ćwiczenia, „czujnik Blocks”, choć EV3 Python nie korzysta z bloków programowych jak oprogramowanie Lego robi. 

Cel:
Gdy czujnik dotykowy nie jest wciśnięty robot okaże na miejscu w prawo z prędkością, która jest proporcjonalna do natężenia światła otoczenia. Gdy czujnik dotyku jest wciśnięty następnie robot zatrzyma się dopóki przełącznik jest wciśnięty, a kontrolka stanu będzie świecić na czerwono. Ten program nie zatrzyma sama więc trzeba zmusić program aby zatrzymać naciskając przycisk Wstecz na EV3 lub przycisk stop w Kodeksie VS jeśli uruchomił skrypt stamtąd.

Rozwiązanie:

#!/usr/bin/env python3
from ev3dev2.motor import MoveSteering, OUTPUT_B, OUTPUT_C
from ev3dev2.sensor.lego import TouchSensor, ColorSensor
from ev3dev2.led import Leds
from time import sleep

steer_pair = MoveSteering(OUTPUT_B, OUTPUT_C)
cl = ColorSensor()
ts = TouchSensor()
leds = Leds()

while True:     # forever
    if ts.is_pressed==0:    # touch sensor NOT pressed
        leds.all_off()   # turn off LEDs
        # turn motors at opposite speeds to turn on the spot
        steer_pair.on(steering=100, speed=cl.ambient_light_intensity)
    else:   #  touch sensor is pressed
        steer_pair.off()
        leds.set_color('LEFT', 'RED')
        leds.set_color('RIGHT', 'RED')

Uwagi:
1.  Proponowane rozwiązanie jest bardzo różny oficjalnej roztworu EV3-G, przedstawionym poniżej:



















Oficjalne rozwiązanie wykorzystuje dwa wątki , które poruszają się równocześnie, ponieważ są one przyłączone do bloku Start. Kiedy dolna pętla wykryje, że czujnik dotykowy został naciśnięty to wydaje polecenie zatrzymania silnika, ale to wydaje się być w konflikcie z dowództwem Samochodowego w górnej pętli, która opowiada silniki przenieść. Przypuszczalnie polecenie zatrzymania silnika ma pierwszeństwo, ale jak może, ponieważ polecenie zatrzymania silnika i komenda startu silnika są w różnych pętli i będą realizowane w różnym czasie? Więc to rozwiązanie może działać, ale jest trudne do zrozumienia i niepotrzebnie skomplikowane - dlaczego używać dwóch wątków dla tego rozwiązania? 

Ćwiczenie 8: Tekst

To ćwiczenie jest jak ćwiczenia 5, ale prostsze. 

Cel:
Czujnik ultradźwiękowy mierzy odległość. Wartość odległość będzie wyświetlany  w centymetrach  na ekranie LCD, po którym następuje ciąg „CM”. Tekst zostanie wyświetlony w courB24 czcionki. Na wyświetlaczu będzie stale aktualizowana o aktualnym czytaniu odległość czujnika.

Rozwiązanie:

#! / Usr / bin / env python3
od ev3dev2.sensor.lego importu UltrasonicSensor
Wyświetlanie od ev3dev2.display importowej
od czasu snu importowej

LCD = Wyświetlacz ()
Us = UltrasonicSensor ()

podczas gdy prawdziwe: # wiecznie
    distance = us.distance_centimeters # pływak
    lcd.text_pixels (łańcuch (w) cm '+', X = 40, Y = 50, czcionki = 'courB24')
    lcd.update ()
    sleep (0,1) # więc wyświetlacz nie zbyt często zmieniać

Uwagi:
  1. Zatrzymać program, naciskając przycisk Wstecz na EV3 lub przycisk stop w Kodeksie VS jeśli uruchomił skrypt stamtąd.
  2. Ten skrypt czasami wyświetla odczyty takich jak 63.40000000000 cm zamiast oczekiwanych 63,4 cm.
  3. Jest to możliwe, aby przepisać powyższy skrypt do pracy z czujnikiem podczerwieni, chociaż odczyty odległość będzie znacznie mniej dokładne. Tylko raz, nie da ci rozwiązanie - można popracować na zmiany!

Ćwiczenie 9: Zakres

Cel:
Dokonaj robot śledzić obiekt, który oddala się od niego - powinien poruszać się do przodu w kierunku obiektu, o ile obiekt jest między 10 a 20 cm z przodu robota, ale zatrzyma się, jeśli robi się bliżej niż 10 cm, co pozwala na uniknięcie kolizja. Będzie również zatrzymywać się (zrezygnować) jeśli prowadzi przedmiot jest większa niż 20 cm przed robota.

Rozwiązanie:

#!/usr/bin/env python3
from ev3dev2.motor import MoveTank, OUTPUT_B, OUTPUT_C
from ev3dev2.sensor.lego import UltrasonicSensor
from time import sleep

tank_pair = MoveTank(OUTPUT_B, OUTPUT_C)
us = UltrasonicSensor()

while True:    # forever
    distance = us.distance_centimeters
    if distance > 10 and distance < 20:
        tank_pair.on(left_speed=50, right_speed=50)
    else:
        tank_pair.off()
    sleep(0.1)

Uwagi:
  1. Jak w poprzednim ćwiczeniu, powinno być bardzo możliwe (i to dobre wyzwanie) przekonwertować ten program do pracy z czujnikiem podczerwieni, a następnie czujnik USA.

Ćwiczenie 10: Matematyka - Basic

Cel:
Ten program obliczy, jak wiele obrotów kół konieczne, aby robot przodu 50 cm, a następnie uczyni to ruch robota, a następnie będzie obliczyć prędkość robota podczas ruchu.

Rozwiązanie:
Za każdym razem gdy koło obraca się o jeden robota obrót całego obwodu rolki koła wzdłuż ziemi.
  • Średnica EV3 Education opon wersja gumy wynosi około 5,6 cm, a więc obwód wynosi 5,6 cm x π = 5,6 cm x 3,14 = 17,6 cm ok.
  • Średnica EV3 domowe opon gumowych wersja 4.32 cm, a więc obwód wynosi 4,32 cm * π = 4,32  cm x 3,14 = 13,6 cm, odległość . 
Znaleźć ilości obrotów koniecznych do przemieszczania robota do przodu 50 musi podzielić 50 cm od odległości przesunięcia każdego obrotu koła (równy obwodowi koła).

Użyjemy functi on time () , która jest częścią czasu bibliotece - nie mylić z funkcji z biblioteki o tej samej nazwie. time () zwraca (jako pływaka) liczba sekund, które upłynęły od „epoki”. Nie musimy wiedzieć, kiedy „epoka” było (może to być bardzo początkiem 1970?), Ponieważ wszyscy jesteśmy zainteresowani jest wydłużenie czasu między początkiem a końcem ruchu ruchu. W tym skrypcie używam od czasu czasu importu więc w scenariuszu I wystarczy użyć time () , aby wywołać funkcję. Gdybym użył czasu import następnie w skrypcie musiałbym użyć time.time () , aby wywołać t on funkcję.

#!/usr/bin/env python3
from ev3dev2.motor import MoveSteering, OUTPUT_B, OUTPUT_C
from ev3dev2.display import Display
from time import sleep, time

steer_pair = MoveSteering(OUTPUT_B, OUTPUT_C)
lcd = Display()

# num_rots is number of wheel rotations needed for robot to advance 50 cm
num_rots = 50/17.6 # wheel circumference = 17.6 cm for education version
# num_rots = 50/13.6 # wheel circumference = 13.6 cm for home version


start_time = time() # time() returns seconds since the 'epoch'

steer_pair.on_for_rotations(steering=0, speed=40, rotations=num_rots)

travel_time = time() - start_time # calculate how long the movement took
speed = 50/travel_time # speed = distance in cm / time in s
lcd.text_pixels(str(round(speed)) + ' cm/s', x=40, y=50, font='helvB24')
lcd.update()
sleep(5) # Give enough time for the screen to be read

Uwagi:
  1. Jeśli używasz wersji Home następnie wypowiedzieć się wiersz, który wspomina o wersji edukacyjnej i usuń wiersz, który wspomina o wersji domowej.
  2. Oto oficjalne rozwiązanie EV3-G do tego samego problemu:

Ćwiczenie 11: Gyro - stawka

Cel:
Program powinien stale (co 0,5 sekundy) pokazują szybkość obrotu czujnika żyroskopowego w stopniach na sekundę. W EV3 Python v2 stopa kolei jest przez stopy własności czujnik żyroskopowy .

Rozwiązanie:
Przypomnijmy, że przy każdym użyciu czujnik żyroskopowy to jest niezwykle ważne, aby utrzymać czujnik absolutnie nieruchomy gdy  cegła EV3 jest zasilony lub czujnik żyroskopowy jest podłączony , w przeciwnym razie odczyt żyroskop będzie nieustannie wędrują od prawidłowej wartości.

#! / Usr / bin / env python3
od ev3dev2.sensor.lego importu GyroSensor
Wyświetlanie od ev3dev2.display importowej
ev3dev2.fonts import jak czcionki
od czasu snu importowej

żyroskop = GyroSensor ()
LCD = Wyświetlacz ()

podczas gdy prawda:
    lcd.text_pixels (STR ( gyro.rate ) +”deg / s', X = 40, Y = 50, czcionki = 'helvB24')
    lcd.update ()
    sleep (0,4) # więc wyświetlacz nie zbyt często zmieniać

Uwagi:
  1. Zauważ, kiedy robot obraca się w prawo wskaźnik jest pozytywny i odwrotnie, niezależnie od kierunku, w którym robot jest faktycznie wskazującego.
  2. gyro.rate szereg więc musi być przekształcony w ciąg ze str ()  zanim może być wykorzystany do LCD jako tekst.
Teraz jesteśmy gotowi do walki  Beyond Basics sprawuje 12-18 .