Impulz po stisku tlačítka

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Impulz po stisku tlačítka

Příspěvek od ondraN » 30 bře 2022, 15:14

Jaká je hodnota rezistoru mezi 5V a kolektorem PC814?

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

Re: Impulz po stisku tlačítka

Příspěvek od gilhad » 31 bře 2022, 00:35

Kód: Vybrat vše

// uvodni nastaveni
unsigned long Interval_LED = 500; // ms (unsigned long je typ pro cas (millis), pokud je u tebe jiny, pouzij ten spravny)
unsigned long Interval_pulz = 20; // ms - maximalni cas mezi pulzy, nez zacnes brat, ze skoncily

int pin_LED = 13 ; // nebo kde to mas (HIGH=sviti)
int pin_TL = 5 ;// nebo kde je tlacitko/optoclen (LOW=stisknuto)

// promenne (klidne by mohly byt v loop, ale tady je to IMHO prehlednejsi)

int Tlacitko_Pred; // minuly stav - HIGH je rozepnuto, LOW je sepnuto
int Tlacitko_Ted; // aktualni stav

unsigned long currentMillis; // aktualni millis
unsigned long beginMillis; //  millis, kdyz zacal bezet cyklus

// setup

void setup() {
  pinMode(pin_LED, OUTPUT);
  digitalWrite(pin_LED, LOW); // explicitni zhasnuti, asi neni nutne
  pinMode(button_B, INPUT_PULLUP); // nebo jen INPUT kdyz tam mas externi pullup
}

// smycka

void loop(){
  // - čekej na začátek pulzu
  do
    Tlacitko_Ted = digitalRead(pin_TL);
  while (Tlacitko_TED == HIGH ); // dokud neni tlacitko stisknute tak to cti znovu

  // rozsviť LEDku
  digitalWrite(pin_LED, HIGH); 

  // spusť časovač na 500ms,
  beginMillis=millis(); // zacneme TED
  do
    currentMillis=millis();
  while  ((currentMillis-beginMillis) <= Interval_LED);

  //  až doběhne zhasni LEDku
  digitalWrite(pin_LED, LOW);

  // nacteme si stav tlacitka
  Tlacitko_TED = digitalRead(pin_TL);

  // spusť časovač na 10ms (nebo víc), 
  beginMillis = millis(); // zacneme TED
  do
    currentMillis = millis();

    // zajima nas zacatek pulzu
    Tlacitko_PRED = Tlacitko_TED;
    Tlacitko_TED = digitalRead(pin_TL);

    if ( Tlacitko_TED == LOW ) { // pulz trva
      beginMillis = currentMillis; // resetujeme zacatek casovace na TED
    };

    if ( (Tlacitko_TED ==  HIGH) && (Tlacitko_PRED == LOW ) ) { // pulz prave skoncil
      beginMillis = currentMillis; // resetujeme zacatek casovace na TED
    };

  while  ((currentMillis-beginMillis) <= Interval_pulz); // Test, zda uz od KONCE posledniho pulzu neubehl prislusny interval

  // To celé nech běžet v nekonečné smyčce - třeba loop() - coz jsme prave udelali
}

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Impulz po stisku tlačítka

Příspěvek od Ludek » 31 bře 2022, 12:23

Ondro, na tom odporu nijak nezáleží, je to jen místo Pullup, myslím, že tam je 8K2
Gilhad - díky, vypadá to profi... vyzkouším, dám vědět.
díky všem

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Impulz po stisku tlačítka

Příspěvek od ondraN » 31 bře 2022, 12:40

No, kdybys připájel na ten optočlen 20M kondenzátor, plus na kolektor, mínus na emitor tranzistoru v OC, tak ti to vyfiltruje ty impulzy, na které jsi si stěžoval :mrgreen:
Pak tam budeš mít L při stisku tlačítka (po celou dobu stisku) bez zákmitů a jiných neplech. Kondenzátor můžeš naletovat přímo na vývody OC, bez nějakých změn na DPS.

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

Re: Impulz po stisku tlačítka

Příspěvek od kiRRow » 31 bře 2022, 12:42

Na tom odporu velmi záleží, on ten optočlen má nějaký omezený proud, který jim může protékat ... a taky nějaký proud který jim musí protékat. Právě toto ten odpor dělá. Není to žádný pullup, ale omezovací odpor aby ti ten optočlen po připojení nevybouchnul do úsměvu.

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Impulz po stisku tlačítka

Příspěvek od Ludek » 31 bře 2022, 13:20

pro gilhad
nějak jsem nenašel chybu v tom while :-(
Error.jpg

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

Re: Impulz po stisku tlačítka

Příspěvek od kiRRow » 31 bře 2022, 13:33

Kód: Vybrat vše

  do {
  ...
  ...
  } while ...
lepší je tam mít ty složené závorky ... pro jeden příkaz to jde bez, ale pro více je třeba označit těma závorkama "blok" programu

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Impulz po stisku tlačítka

Příspěvek od Ludek » 31 bře 2022, 13:38

:-)
dík

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

Re: Impulz po stisku tlačítka

Příspěvek od kiRRow » 31 bře 2022, 13:46

doufám, že máš aspoň papíry na to hrabat se někomu v elektroinstalaci domu

Ludek
Příspěvky: 289
Registrován: 02 pro 2019, 08:14
Reputation: 0
Bydliště: České Budějovice

Re: Impulz po stisku tlačítka

Příspěvek od Ludek » 31 bře 2022, 13:52

No Ty máš ale starosti... můj obor je nn a neboj mám vyhl.50 :-)
gilhad - ŠLAPE TO !!!! díky

Odpovědět

Kdo je online

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