Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.

Diskusia – 3. diel - Arduino - Hráme sa s LEDkami

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
jargry
Člen
Avatar
jargry:22.11.2014 21:58

Omlouvám se, ale funguje jen ve WORDU.

Avatar
heger.m
Člen
Avatar
heger.m:25.7.2016 21:55

Jaké napětí snesou vstupy?

Avatar
Adam Ježek
Tvůrce
Avatar
Odpovedá na heger.m
Adam Ježek:25.7.2016 22:32

Má to 5V logiku, takže bych těch 5V moc nepřekračoval.

Odpovedať
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Tomáš Endlicher:14.12.2020 16:30

Ahoj, řeším problém s programem na to, abych mohl jedním tlačítkem zapnout blikání LED a tím stejným tlačítkem blikání zase vypnout. Zjistil jsem, že pokud použiji pro blikání funkci delay(), tak potom tlačítko nereaguje správně (nebo spíše vůbec). Nejspíš proto, že se stisknutím nestrefím do velmi krátkého okamžiku mezi jednotlivými funkcemi delay(), kdy je program stopnutý a tudíš nečte pin s tlačítkem. Napsal jsem tedy blikání pomocí funkce millis(), takže se už chod programu nezastavuje, ale nedaří se mi část kódu s blikáním vložit ke kódu pro přepínání funkce tlačítka (konkrétně místo části "digitalWrite(led, HIGH); delay(500);). Zkoušel jsem tu část, která ma na starost blikání zapouzrdřit do funkce např. void blik(ledpin), abych ji pak v kódu mohl jednoduše zavolat a nedaří se mi to. Můžete mi někdo poradit? ;-)

kód pro tlačítko:

byte tlacitko = 2;
byte led = 3;
bool stavtlacitka;
byte pocitadlo = 0;
byte zbytek;

void setup() {
  Serial.begin(9600);
  pinMode(tlacitko, INPUT);
  pinMode(led, OUTPUT);

}

void loop() {
  zbytek = pocitadlo % 2;

  stavtlacitka = digitalRead (tlacitko);

  if (stavtlacitka == HIGH && zbytek == 0){
         digitalWrite(led, HIGH); // tady bych chtěl vložit kód pro blikání
         pocitadlo++;
         delay(500); // toto bych pak mohl smazat
          }
  if (stavtlacitka == HIGH && zbytek == 1){
          digitalWrite(led, LOW);
          pocitadlo++;
          delay(500);
          }
    if(pocitadlo == 10){
      pocitadlo = 0;
      }

}

tady je kód pro blikání pomocí funkce millis()

byte led = 3;
long cas = 0;
bool stavled = false;



void setup() {
    Serial.begin(9600);
    pinMode(led, OUTPUT);
}

void loop() {

  if(millis() >= cas + 1000 && stavled == false){
    cas = millis();
    digitalWrite(led, HIGH);
    stavled = true;
    Serial.print("H");
    }

  if(millis() >= cas + 1000 && stavled == true){
    cas = millis();
    digitalWrite(led, LOW);
    stavled = false;
    Serial.print("L");
    }
}
Avatar
Odpovedá na Tomáš Endlicher
Tomáš Endlicher:15.12.2020 0:19

Jooo :-) už to mám!!! Sice jsem musel ještě z postele, ale když mě to z ničeho nic napadlo, tak jsem to musel jít vyzkoušet. :-P

byte tlacitko = 2;
bool stavtlacitka = false;
bool blikani = false;

byte led = 3;
bool stavled = false;
long cas = 0;

void setup() {
  pinMode(tlacitko, INPUT);
  pinMode(led, OUTPUT);
}

void loop() {
  if(digitalRead(tlacitko) == HIGH && !stavtlacitka){
    blikani = true;
    stavtlacitka = true;
    delay(500); // pauza je potřeba aby se stihlo načíst stisknutí tlačítka
    }
  if(digitalRead(tlacitko) == HIGH && stavtlacitka){
    blikani = false;
    stavtlacitka = false;
    delay(500); // pauza je potřeba aby se stihlo načíst stisknutí tlačítka
    }
  if(millis() >= cas + 1000 && blikani && stavled == false){
    cas = millis();
    digitalWrite(led, HIGH);
    blikani = true;
    stavled = true;
    }
  if(millis() >= cas + 1000 && blikani && stavled == true){
    cas = millis();
    digitalWrite(led, LOW);
    blikani = true;
    stavled = false;
    }
}
Avatar
Rostislav Mikolaš:2.1.2023 9:21

Neměly by být u těch LED diod, myslím u toho prvního příkladu, taky nějaké odpory kvůli omezení proudu ?

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 6 správy z 16.