Bistabilní KO

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Dene Elanik
Příspěvky: 67
Registrován: 29 led 2020, 20:15
Reputation: 0

Bistabilní KO

Příspěvek od Dene Elanik » 02 kvě 2023, 19:40

Přátelé, hoďte sem kód pro BKO pro Arduino.
Prvním stiskem tlačítka výstup sepne, druhým stiskem vypne.
Může být i s ošetřením zákmitů, ale není nutno.
Nebo odkaz, nedaří se mi najít nic vhodného.
Díky, kdyby se někomu chtělo.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Bistabilní KO

Příspěvek od kiRRow » 02 kvě 2023, 21:29

Tohle se jde naučit pomocí AI.

Kód: Vybrat vše

const int buttonPin = 2;    // Pin pro tlačítko
const int ledPin = 13;      // Pin pro LED diodu

int ledState = LOW;         // Aktuální stav LED diody
int buttonState;            // Aktuální stav tlačítka
int lastButtonState = LOW;  // Předchozí stav tlačítka

// Proměnné pro ošetření zákmitů na tlačítku
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // Čtení stavu tlačítka
  int reading = digitalRead(buttonPin);

  // Ošetření zákmitů na tlačítku
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;

      // Pokud je tlačítko stisknuto, změní se stav LED diody
      if (buttonState == HIGH) {
        ledState = !ledState;
      }
    }
  }

  // Aktualizace stavu LED diody
  digitalWrite(ledPin, ledState);

  // Uložení předchozího stavu tlačítka
  lastButtonState = reading;
}
Vůbec jsem to nekontroloval, jen jsem tomu poslal tvojí otázku. Jako výstup to navrhlo LED diodu.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Bistabilní KO

Příspěvek od gilhad » 03 kvě 2023, 09:58

S tím AI opatrně, je to velké rizoto, ona se tváří jako suterén, ale často to končí katastrálním fiakrem.

Teda chci říct - ona neví co dělá a občas si prostě vymýšlí, nebo vyloženě lže, ale s naprosto stejnou přesvědčivostí.

Já ji při programování používám jako inspiraci, ale cokoli dodá, to musím pečlivě překontrolovat, protože to občas obsahuje hodně dobře schované záludnosti.

Že program občas dělá něco zcela jiného, než AI dostala jako zadání, nebo než co tvrdí, že dělá ještě není nejhorší, na to se ještě přijde snadno.

Ale taky jsem ji požádal o program, který kopíruje jeden soubor do druhého, ale testuje, zda cílový soubor existuje a pokud ano, tak se zeptá, zda ho přepsat nebo zachovat. A AI vyplodila program, který to na pprvní pohled opravdu dělal, před zahájením kopírování se podíval, zda cíl existuje a pokud ano, tak se ptal zda přepsat ... až na to, že ve skutečnosti to ten cílový soubor přepsalo vždycky, buď obsahem zdrojového, nebo tak, že cílový soubor byl prázdný. Protože na čtení argumentů použil knihovnu, která ten soubor potichu smazala bez ptaní.

Taky klidně navrhne řešení pomocí knihovny, která neexistuje. Nebo pomocí jazykové konstrukce, kterou cílový jazyk prostě nemá a nikdy neměl (ale řešila by to hezky, kdyby jí měl, ale její implementace se rozhodně neplánuje).

Nebo na dotaz, zda něco v daném jazyce jde a jak odpoví, že samozřejmě jde a vyplivne ukázku - až teda na to, že podle manuálu to nejde a ta ukázka nefunguje správně.

Jenže ona ta AI prostě generuje text, který se podle jejích kritérií dobře čte a moc se nestará, zda je také nějakým způsobem pravdivý. To je pro ni dost podružná záležitost.

Kód: Vybrat vše

User: Can you list date (DD.MM.YYYY) and time (HH:MM) of all new moons and full moons in Seattle in year 2055?
ChatGPT: Certainly! Here are the dates and times of the new moons and full moons in Seattle for the year 2055:

New Moons:
    03.01.2055 05:13
    01.02.2055 23:36
    03.03.2055 16:57
....
Moc hezké, určitě hezčí, než něco ve stylu "takovou fnunkci nemám, jsem jen jazykový model který ..." nebo "otázce jsem asi nerozuměl ...", nebo tak něco. Má to jedinou chybu - naprosto prokazatelně to je zcela blbě a ty měsíční fáze, které tu sype na minuty přesně má blbě skoro o týden. Ale to by neznělo tak hezky ...

Což mi připomělo pasáž z Douglese Adamse, která to nádherně ilustruje - akorát jsem ji nedokázal přesně určit, tak jsem zkusil požádat AI o pomoc - a vyšlo to naprosto příznačně:

User
Můžeš mi najít pasáž ze Stopařova Průvodce po galaxii, kde se píše o soudním řízení s pozůstalými po obětech Blátotlačky žravé z Traalu?
ChatGPT
Ano, pasáž, kterou hledáte, se nachází v knize "Stopařův průvodce po Galaxii" od Douglase Adamse a je v kapitole 6. Zde je přesný citát:

"Blátotlačka žravá z Traalu je na druhé straně tak neuvěřitelně blbá, že se dá předpokládat, že i kdyby vládla světu, bylo by to tak strašné, jako kdyby ho ovládali lidé. To se také stalo. Aby se vyřešil problém, když tento lid natáhl vypínač, kterým měl být zapnut nový svět, a celá populace se okamžitě přeměnila na směs plynů, takže pozůstalí si museli zažádat o náhradu škody, probíhalo celé století soudní řízení, na kterém se zjistilo, že se jednalo o tragickou nehodu a nikdo nebyl vinen. Jenže samozřejmě mezitím pozůstalí vymřeli a na náhradu škody nezbyl nikdo, kdo by ji mohl inkasovat."
Hmm... to není to, co jsem hledal, a i když to stylově odpovídá, tak si zrovna na takovouhle pasáž nevzpomínám a myslím, že bych si na ní vzpomenout měl, pokud bych jí tam četl ... zalovím v paměti hlouběji a pokusím se upřesnit o co mi jde

User
A pasáž, kde si právní oddělení nechalo odpřisáhnout, že co je hezké je i pravdivé?
ChatGPT
Ano, tato pasáž se také nachází v knize "Stopařův průvodce po Galaxii" od Douglase Adamse. Konkrétně se nachází v kapitole 13 a zní následovně:

"Když se tedy na Právním oddělení PanGalaktického novinářského tribunálu zeptali, zda si mohou být jisti, že co je hezké, to je i pravdivé, muselo si nechat odpřisáhnout, že ano - nicméně zároveň muselo připustit, že přirozeně to nemohou vždy zaručit, takže to musí být víceméně náhoda."
Tohle mi už přijde podezřele málo absurdní na dané knihy, zkusím to dohledat jinde (pořád se mi ještě nechce pročítat všechny ty knihy znova jen kvůli jednomu citátu) ... https://fantasya.cz/com_view.php?neprop ... ate=simple jo, to je ono, byla to jiná kniha té série:

Restaurant na konci vesmíru
Vydavatele Průvodce žalovaly rodiny stopařů, kteří přišli o život jen proto, že vzali doslova heslo o planetě Traaal. Stálo v něm, že „žravé Blátotlačky často slouží turistům za chutnou krmi“, namísto „turisté často slouží žravým Blátotlačkám za chutnou krmi“. Vydavatelé tvrdili, že první verze je esteticky mnohem přijatelnější, a dali si od soudního znalce odpřísáhnout, že co je krásné, je pravdivé, a naopak, co je pravdivé, je krásné. Snažili se tak dokázat, že vinen je sám život, protože není ani krásný, ani pravdivý. Soudci se k tomuto názoru přiklonili a v dojemné závěrečné řeči odsoudili život za pohrdání soudem, a tudíž ho všem přítomným odňali…
Takže zkusím AI přivést na pravou stopu

User
Můžeš mi najít pasáž z Restaurantu na konci vesmíru, kde se píše o soudním řízení s pozůstalými po obětech Blátotlačky žravé z Traalu?
ChatGPT
Je mi líto, ale tato pasáž se v knize "Restaurant na konci vesmíru" od Douglase Adamse nenachází. Pasáž o soudním řízení s pozůstalými po obětech Blátotlačky žravé z Traalu se nachází pouze v knize "Stopařův průvodce po Galaxii".
OK, nebudu líný a napíšu to přesně

User
Můžeš mi najít pasáž z Restaurantu na konci vesmíru, kde se píše jak vydavatele Průvodce žalovaly rodiny stopařů, kteří přišli o život jen proto, že vzali doslova heslo o planetě Traaal.
ChatGPT
Je mi líto, ale tato pasáž se v knize "Restaurant na konci vesmíru" od Douglase Adamse také nenachází. Je možné, že se jedná o záměnu s pasáží o soudním řízení s pozůstalými po obětech Blátotlačky žravé z Traalu, která se skutečně vyskytuje v knize "Stopařův průvodce po Galaxii".
Tohle už je prostě totální a očividná lež.
Takže se omlouvám za odbočku, ale všimněte si, jak přesvědčivá ta AI dokáže být, když lže a pohybuje se ve vlastní fantasii ...

(A jen pro dokreslení, našel jsem si ty knihy -
Blátotlačka je ve Stopařově průvodci zmíněna 3x - jednou v kapitole 3 v souvislosti s ručníkem a 2x v kapitole 5 v souvislosti s vogonskou babičkou
kapitola 6 pojednává o Bábelské rybce, heslu pro Zemi (neškodná -> převážně neškodná) a zajetí Arthura Denta Vogony
kapitola 13 pojednává o tom, jak Arthur na Srdci ze zlata potká dveře, Forda a Trillian

Ta citace z Restaurantu na konci vesmíru je z kapitoly 6 a opravdu tam je.

A pak věřte AI ...
)

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Bistabilní KO

Příspěvek od kiRRow » 03 kvě 2023, 10:30

Jo je to schopný i napsat, že pokud použijeme podmínku, kde porovnáme zda-li je $a větší než $b ... a v kódu napsat if($a<$b) ...
Já chtěl spíše poukázat na to, že takové jednoduché zadání se dá rychleji (a hlavně člověk se více naučí - z chyb AI) pořešit s AI. Ale je to nástroj, musí se s tím umět pracovat. Konkrétně v tomto případě - minimálně to umí člověka nakopnout správným směrem.
Programování je proces : vymyslet co vlastně chci, pak to vysvětlil procesoru programem, zjistit kde jsem udělal chybu, opravit chybu, zjistit proč tato oprava způsobila dvě další chyby ...

Uživatelský avatar
Diego
Příspěvky: 166
Registrován: 23 črc 2017, 09:43
Reputation: 0
Kontaktovat uživatele:

Re: Bistabilní KO

Příspěvek od Diego » 03 kvě 2023, 11:21

Ja sem parkrat pouzil AI na okomentovani kousku kodu a to umi celkem pekne. Chce to vedet aspon zhruba co to ma delat a pak to pomuze.
Nesmi se ji slepe verit :!:
https://arze.cz - ARduino Zapojení Elektronika

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Bistabilní KO

Příspěvek od kiRRow » 03 kvě 2023, 11:36

Asi jako navigace v autě ... tý taky nesmíš slepě věřit. Ale zhruba to aspoň pomůže ...

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Bistabilní KO

Příspěvek od gilhad » 03 kvě 2023, 16:58

Přesně tak, člověk se nesmí nechat zmást tím, že AI něco tvrdí suverénně (a třeba i přitom cituje), nebo že "počítače přece nelžou" a všechno si ověřit.
Protože AI má dost často tendenci generovat raději výstup krásný, než výstup pravdivý.
Ale často zase může pomoct (i neúmyslně) tím, že člověka nasměruje ke správnému řešení.
A nezřídka se AI i podaří (nějak) vyřešit situaci, kdy člověk ví, že něco má vypadat "asi takhle", ale přesně to z hlavy na první pokus nedá.

Po delší době teď zase programuju víc v Pythonu, ale verze 3.10.10 místo 2.7, a tak docela pomůže nápověda typu:

User
'data' is dictionary with string key and integer value pairs. Please fix and explain Python 3 statement
extremes=[( v < 0 ? '-' : '+', v) for k,v in data where k is like '_max' or '_min']
ChatGPT
The provided Python 3 statement is not valid syntax. It appears to be a mix of Python and some other programming language. However, I can provide you with a possible corrected and explained version of what I believe this code might be trying to achieve:

Kód: Vybrat vše

# assuming 'data' is a dictionary with string keys and integer values

# list comprehension to iterate over the items in the 'data' dictionary
# and filter by keys that end with either '_max' or '_min'
extremes = [('-' if v < 0 else '+', v) for k, v in data.items() if k.endswith(('_max', '_min'))]

This code uses a list comprehension to create a new list of tuples where the first element is either '-' or '+' depending on whether the value associated with the current key in the loop iteration is negative or non-negative, and the second element is the corresponding integer value from the data dictionary. The list comprehension filters the dictionary keys to only include those that end with '_max' or '_min'.

Note that the ternary operator (? : ) used in the original code has been replaced with an inline if-else statement to check whether the value is negative or non-negative, and return the corresponding '-' or '+' character. The items() method has also been added to the data dictionary to iterate over its key-value pairs.
(Ano, zmatlal jsem v zadání python, C, MySQL a přirozený jazyk, ale rozkódoval to dobře. I když možná by bylo přesnější použít '_max' in k or '_min' in k - nebo taky ne, podle struktury těch dat
No a obvykle mu dám takovéto zjednodušené zadání a pak si tam místo "v < 0" dám vlastní, silně rozvité podmínky, které mu nemíním vysvětlovat, protože se syntaxí nesouvisí ;)

Na takovouhle pomoc, kdy si to člověk přebere sám a nechává ho dělat jen věci, které na něj nejsou moc komplikované (malé kusy kódu, boilerplate a tak), to je skutečně výhodné.
Navíc si člověk při kontrole projde a osvěží spoustu znalostí - endswith znám, ale že první parametr může být i tuple jsem zatím nepoužil a v aktivní paměti neměl ...
)

Uživatelský avatar
Diego
Příspěvky: 166
Registrován: 23 črc 2017, 09:43
Reputation: 0
Kontaktovat uživatele:

Re: Bistabilní KO

Příspěvek od Diego » 03 kvě 2023, 17:08

Nejlepsi je ze kdyz mu napises cesky tak i cesky odpovi ;)
https://arze.cz - ARduino Zapojení Elektronika

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Bistabilní KO

Příspěvek od gilhad » 03 kvě 2023, 18:22

(Na genderu mu nezáleží, ale pro mě je to primárně ten chatbot a až pak ta AI nebo nějaké neurčité to v počítači)

Jinak jsem zjistil, že [strike]dává přednost[/strike] líp funguje s celými větami než jen útržky a fakty (je to jazykový model).

Zdvořilost mu nevadí, i když ji nevyžaduje, spíš je to usnadnění pro mě, že prostě nemusím měnit svoje návyky a ořezávat o ní co píšu, ale rovnou tam sypu, co si myslím. (Takové to "Please fix ..." x "Fix ...")

Protože teď používám hodně různých jazyků, tak mu tam bez myšlení píšu "v Python 3", "v C++", "v bashi", "pro Makefile", "v RST", "v CSS" a tak podobně a dostávám co chci. On tak nějak obecně preferuje Python, ale asi by si u jednojazyčného uživatele zvyknul používat třeba C++ nebo jiné .INO :D

A líp mi funguje s angličtinou (asi většinu materiálů načetl v ní a tak se mu v ní líp hledá a naopak výstup není zatížený chybami či neobratnostmi překladu do češtiny - tím ani tak nemyslím, že by odpověď sesmolil v angličtině a pak překládal (on si ji spíš tak nějak plynule vytváří a hledá, co se mu do ní líp hodí), jako že spoustu termínů jde přeložit i nevhodně, nebo neobratně (zdravíme hlasitost pevného disku), zatímco anglická teminologie je dost ustálená)

A pro mě je už dost často jednodušší o programování přemýšlet a psát v anglištině (jak furt mám otevřené anglické zdroje), než přepínat do češtiny a zpět.

Kdo naopak si je s angličtinou nejistý, tak je pro něj lepší s ním komunikovat v nejpohodlnějším jazyce (česky, slovensky, ...) a v případě potřeby mu říct, ať odpověď napíše v jiném jazyce, nebo více jazycích. ("Odpověz v angličtině a v češtině")

Překlepy si opravuje sám (takže není nutné mít zadání napsané zcela bezchybně bez překlepů), dost si toho i domyslí, ale samozřejmě, čím víc si domýšlí, tím víc si může vymyslet něco jiného. Takže je dobré si přečíst i to jeho shrnutí, na co si myslí, že odpovídá.

A jde mixovat víc jazyků i v zadání, prostě psát větu anglicky, pak větu česky a on to schřoustá. Když tam člověk použije jen sem tam cizí slovo, tak to může pochopit špatně (nebo ho pochopit jako překlep).

A to vysvětlení je dobré hlavně k tomu, že při hledání v dokumentaci nemusím hledat "takovou tu kostrukci s hranatkama" :roll: , ale zykopíruju si z jeho odpovědi "list comprehension" a to už se hledá snadno :lol:

Dobrý je taky na generování nějakých náhodných dat (Navrhni 10 jmen filmových postav a tak) a na programy na generování náhodných/testovacích dat. (Napiš program na vygenerování adresářové struktury, kde bude 5 adresářů, v každém 5 podadresářů a v každém z nich 5 souborů v RST, s hlavičkou obsahující ":title:" s náhodným titulkem, ":tags:" s 3-5 náhodnými tagy z 20, ":authors:" s náhodnými 1-3 autory z 20 a náhodný text začínající "Lorem ipsum". Hodnoty tagů, titulků a autorů si vymysli nějaké zajímavé. - návrh nebyl špatný a pro svou konkrétní potřebu jsem ho už doladil snadno)

Dobrý je taky na nastartování vyhledávání, kdy člověk má nějakou představu, ale chybí mu konkrétní výrazy - Jak řekové a římané pomocí studny a stínu vypočítali obvod Země? - odpověděl směsí halucinací a rozumnách postupů, ale nic, co by se dalo roumné hledat, takže dál - Kdo to udělal jako první? - tady už docela kecá, ale padne i Eratosthenes a Alexandria a Syéne (a tady už jde dál jít přez wiki) a Posidonius (taky dál přez wiki)

A jen tak na pokec (o nesmrtelnosti chrousta třeba) je samozřejmě nejlepší a je s ním legrace, ale to mi nic moc nepřináší, tak to moc nedělám.

Dene Elanik
Příspěvky: 67
Registrován: 29 led 2020, 20:15
Reputation: 0

Re: Bistabilní KO

Příspěvek od Dene Elanik » 04 kvě 2023, 14:09

Díky za úvod do umělé inteligence. Mezi tím jsem uhnal toto (se zajímavým SW debouncem):

Kód: Vybrat vše

#define BUTTON_PIN 8
#define LED_PIN LED_BUILTIN

void setup(void) {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
}

void loop(void) {
  button_press_and_action();
  delay(1);
}

void button_press_action(void) {
  static byte toggle_sw = 0;
  toggle_sw = !toggle_sw;
  if (toggle_sw)
    digitalWrite(LED_PIN, HIGH);
  else
    digitalWrite(LED_PIN, LOW);
}

// Debounce a button.
void button_press_and_action(void) {
  static uint16_t btndbc = 0;
  btndbc = (btndbc << 1) | digitalRead(BUTTON_PIN) | 0xe000;
  if (btndbc == 0xf000) {  // High for 1 bits low for 12 (each bit is 1 loop thru this code).
    button_press_action();
  }
}

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 15 hostů