Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 4 - Arduino - Projekty s LED diodami a tlačítkem

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
jargry
Člen
Avatar
jargry:22.11.2014 21:58

Omlouvám se, ale funguje jen ve WORDU.

 
Odpovědět
22.11.2014 21:58
Avatar
heger.m
Člen
Avatar
heger.m:25.7.2016 21:55

Jaké napětí snesou vstupy?

 
Odpovědět
25.7.2016 21:55
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá 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.

Odpovědět
25.7.2016 22:32
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");
    }
}
 
Odpovědět
14.12.2020 16:30
Avatar
Odpovídá 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;
    }
}
 
Odpovědět
15.12.2020 0:19
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 ?

 
Odpovědět
2.1.2023 9:21
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 16.