Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.
Příspěvek na blogu herního enginu Godot představuje aplikaci Xogot přinášející Godot na iPad a iPhone. Instalovat lze z App Storu. Za Xogotem stojí Miguel de Icaza (GitHub) a společnost Xibbon.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za březen (YouTube).
ESP-IDF (Espressif IoT Development Framework), tj. oficiální vývojový framework pro vývoj aplikací na mikrokontrolérech řady ESP32, byl vydán v nové verzi 6.0. Detaily na portálu pro vývojáře.
DeepMind (Alphabet) představila novou verzi svého multimodálního modelu, Gemma 4. Modely jsou volně k dispozici (Ollama, Hugging Face a další) ve velikostech 5-31 miliard parametrů, s kontextovým oknem 128k až 256k a v dense i MoE variantách. Modely zvládají text, obrázky a u menších verzí i audio. Modely jsou optimalizované pro běh na desktopových GPU i mobilních zařízeních, váhy všech těchto modelů jsou uvolněny pod licencí Apache 2.0. Návod na spuštění je už i na Unsloth.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.
Byla vydána nová verze 10.3 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu bezpečnostních oprav, vylepšení funkcí a oprav chyb.
Cloudflare představil open source redakční systém EmDash. Jedná se o moderní náhradu WordPressu, která řeší bezpečnost pluginů. Administrátorské rozhraní lze vyzkoušet na EmDash Playground.
Bratislava OpenCamp 2026 zverejnil program a spustil registráciu. Štvrtý ročník komunitnej konferencie o otvorených technológiách prinesie 19 prednášok na rôzne technologické témy. Konferencia sa uskutoční v sobotu 25. apríla 2026 v priestoroch FIIT STU v Bratislave.
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: