Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.
OpenSearch (Wikipedie) byl vydán ve verzi 3.0. Podrobnosti v poznámkách k vydání. Jedná se o fork projektů Elasticsearch a Kibana.
PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.
Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.
Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
představte si čidlo(optickou závoru) přes čidlo profičí kyvadlo hodin cik cak (tam a zpět)
čidlo je umístěno libovolně (nepřesně) na spodu uprostřed dráhy kyvadla
kyvadlo má nestabilní výchylky přes střed (kde je čidlo)
(někdy se vyhoupne výše někdy níž)
přes čidlo jde vždy
chtěl bych udělat akci po průchodu čidla jen na
-->> jen sudý průchody kyvadla případně jen v jednom směru
ano přesně tak akce by byla spuštěna když je kyvadlo na nejvyšší pozici sudé průchody
jen sudý průchody kyvadla případně jen v jednom směruNo a kde je problém?
ano přesně tak akce by byla spuštěna když je kyvadlo na nejvyšší pozici sudé průchodyZměř si periodu té části průchodu, která tě zajímá. V půlce tohoto intervalu je kyvadlo na vrcholu.
čas od průchodu nemám čím měřit
to bude zřejmě ten kód
označit je jako sudé
po sudých udělat akci
psal jsem jestli pro začátečníka by nebyl kousek kódu
#define LAG 5 # jak dlouho trvá maximálně zakrytí senzoru kyvadlem při průchodu char pass = 0; loop() { if(digitalRead(pin)) { # čidlo detekuje kyvadlo pass++; if(pass%2) { # sudý průchod Serial.println("Even pass"); } delayms(LAG); } }Měření času jsem neimplementoval.
čas od průchodu nemám čím měřit
millis()
int ledPin = 13; // indikace
int CidloZavora =2; // cidlo zavora
int val = 0; // promena
int pocitadlo = 0;
int stavPinu = 0;
int PredchoziStavPinu = 0;
void setup() {
pinMode(ledPin, OUTPUT); // vystupni pin deklarace
pinMode(CidloZavora, INPUT); // vstupni pin
}
void loop(){
val = digitalRead(CidloZavora); // cti vstupni pin
if (val == HIGH) { //zjisti jestli ji HIGH
digitalWrite(ledPin, HIGH); // rozsvit LED
stavPinu = 1;
}
else {
digitalWrite(ledPin, LOW); //zhasni LED
stavPinu = 0;
}
if(stavPinu != PredchoziStavPinu){
if(stavPinu == 1){
pocitadlo = pocitadlo + 1;
if(pass%2) { # sudý průchod
a tady nejak rozlisit jsetli je to sudé
// tady prijde akce
}
}
PredchoziStavPinu = stavPinu;
delay(250);
}
a tady nejak rozlisit jsetli je to sudéTo přece rozlišuješ tím, že počet průchodů modulíš dvěma.
tak nejak by to šlo ??
int ledPin = 13; // indikace
int CidloZavora =2; // cidlo zavora
int val = 0; // promena
int pocitadlo = 0;
int stavPinu = 0;
int PredchoziStavPinu = 0;
int pass = 0;
void setup() {
pinMode(ledPin, OUTPUT); // vystupni pin deklarace
pinMode(CidloZavora, INPUT); // vstupni pin
}
void loop(){
val = digitalRead(CidloZavora); // cti vstupni pin
if (val == HIGH) { //zjisti jestli ji HIGH
digitalWrite(ledPin, HIGH); // rozsvit LED
stavPinu = 1;
}
else {
digitalWrite(ledPin, LOW); //zhasni LED
stavPinu = 0;
}
if(stavPinu != PredchoziStavPinu){
if(stavPinu == 1){
pocitadlo = pocitadlo + 1;
if(pocitadlo%2) { # sudý průchod
Serial.println("Even pass");
// tady prijde ta akce
}
}
}
PredchoziStavPinu = stavPinu;
delay(250);
}
nerozumím co je odsazeníŽe jednotlivé podvětve nebo smyčky předchází mezery nebo tabulátory (všimni si, jak vypadá můj kód). Mnohem líp se to čte.
tak nejak by to šlo ??No asi jo, já tady nemám Arduino s fotozávorou a kyvadlem. To si musíš vyzkoušet ty, jestli ti to jde…
Jendo dík moc
nevěděl jsem že sudé zjistím dělením if(pocitadlo%2)
no dneska už kývat nebudu ,jedině v posteli
Vyzkoušeno.
Pro moje potřeby to funguje.
Je znaménko pro liché cykly ?
if(!(pass%2))nebo
if(pass%2==0)Tedy až na to, že je (IMO) v celé této diskusi zaměněn význam slov lichá a sudá. Takže tomu raději nebudu říkat ani sudá, ani lichá, je to prostě ten opačný průchod...
Je znaménko pro liché cykly ?(počet+1)%2
Neexistuje ani pre parne a ani pre neparne, ty to totizto LOGICKY musis vyjadrit. Neviem, ako je zapis v tomto jazyku, ale jednoducho si pohladaj negovanie toho vyssieho vyrazu. Nieco ako
if!(pocitadlo%2)
alebo pridas vetvu k tomu, nieco na styl if - else , ale to si pozri v priprucke ako je zapis.
Syntax si pozri a aj kopec veci okolo toho tuna: http://wiring.org.co/reference/
Na papíru, v Karlu nebo javě?Arduino se defaultně programuje v C+.
Na papíru, v Karlu nebo javě?
Exaktní řešení Vašeho problému se jmenuje Kalmanův filter. Ale je to vyšší dívčí z teorie řízení.
Zjednodušeně řečeno: napíšete rovnici výchylky toho kyvadla ( α(t)=sin(ω t)+φ ), jejíž parametry/stavy ω a φ), které modifikujete podle toho co naměříte (= signál čidla). Změna těchto parametrů je úměrná tomu jak moc se Vaše aktuální měření se strefilo do okamžiku kdy jste očekával průchod čidlem podle této rovnice. K dispozici máte dva inženýské knoflíky (K,L)- váhy, kterými regulujete, jak moc má měření na dva stávající parametry vliv. Tyto váhy určují míru toho jak moc věříte měření versus jak moc je vaše rovnice spolehlivá sama o sobě jako samostatný prediktor (= bez aktualizace parametrů pomocí měření).
Výstupem rovnice je pak úhel alfa, který pro ± π/2 dává očekávaný vrchol (=nejvyšší pozice kyvadla). Musíte tedy napsat inverzní funkci f:α → t, ta vám pak pro α= +π/2 dá čas t ve kterém spustíte akci.
Algoritmus má tedy dva kroky
Samostatnou kapitolou je pak start celého algoritmu, kdy by se jen několik měření nedělala žádná akce ale jen se aktualizoval model, tak aby se dosáhlo počátečního nastavení parametrů.
Oprava: Odstavec "Výstupem rovnice je pak úhel alfa,který ...." prosím ignorujte. Žádnou inverzní funkci není potřeba vytvářet. Chyba vznikla už v definici rovnice kyvadla. Správně je totiž α(t) = sin(ω t + φ) a tedy pro okamžik akce stačí řešit vztah ω t + φ = π/2 pro neznámé t. Podobně lze napočíst i predikci času dalšího průchodu kyvadla čidlem. ω t + φ = φcidla.
Tiskni
Sdílej: