NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 – Hodiny pro Arduino

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
Martin Dráb
Tvůrce
Avatar
Odpovídá na Adam Ježek
Martin Dráb:7.2.2016 17:29

No, pokud se očekávají přesné analogové hodnoty pro ta tlačítka, tak to podle mě není zrovna dobře udělané. Moje zkušenost je, že při stisku tlačítka ne vždy dostaneš přesně ty hodnoty, spíš něco v jejich okolí. Takže je k tomu třeba mít kód tolerantní.

Odpovědět
7.2.2016 17:29
2 + 2 = 5 for extremely large values of 2
Avatar
1mlrek11
Člen
Avatar
1mlrek11:7.2.2016 17:32

malinko nechapu

 
Odpovědět
7.2.2016 17:32
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Martin Dráb
Adam Ježek:7.2.2016 18:40

samozřejmě, jenže to [me|]1760[/me|], dokonalej jablíčkář, nikdy nepochopí, že ne všechno je přesné.

Odpovědět
7.2.2016 18:40
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
1mlrek11
Člen
Avatar
1mlrek11:7.2.2016 19:15

no ajak tesy mam otestovat ty tlačítka abych viděl na seriovem portu ten kod

 
Odpovědět
7.2.2016 19:15
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na 1mlrek11
Martin Dráb:7.2.2016 20:26

Předpokládám, že ten shield posílá vstup z tlačítek na pin A0, takže by mělo stačit si přečíst hodnotu tohoto pinu:

analogRead(0);

A pak ji poslat třeba na sériovou linku. Přes nějaké Serial.write (podívej se do dokumentace pro třídu Serial). Když jsem si s těmi tlačítky hrál (než jsem ten shield rozbil :-) ), nechával jsem si to číslo vypsat přímo na LCD.

Pokud tohle nechceš dělat, můžeš zkusit upravit kód detekující, které tlačítko bylo stisknuto. Místo testování A0 na přesnou hodnotu definuj pro každé tlačítko interval (třeba (X-100;X+100), kde X je aktuálně testovaná hodnota pro tlačítko). ADC převodník u té ATmegy, co se používá v Arduinu, je AFAIK 10bitový, dává ti tedy hodnoty v rozmezí 0-1023, takže se s těmi intervaly můžeš poměrně rozšoupnout.

Odpovědět
7.2.2016 20:26
2 + 2 = 5 for extremely large values of 2
Avatar
1mlrek11
Člen
Avatar
1mlrek11:7.2.2016 20:56

moc děkuji za každou pomoc ale jsem začatečník tak jestli mohu poprosit o trošku přesnější navod pro začatečníka diky moooooc

 
Odpovědět
7.2.2016 20:56
Avatar
Odpovídá na 1mlrek11
Radovan Cermak:28.7.2016 10:19

Na zjisteni hodnot tlačitek nahraj na desku :

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1);        // delay in between reads for stability
}

otevři serial monitor v arduinu a napiš si hodnoty tlačitek ktere tě to vypíše a ty potom jen uprav ve zdrojovym kodu pro hodiny.

tady je zdrojak ktery jsem si upravil k moji desce, treba budou hodnoty stejne.

#include <LiquidCrystal.h>
int button;
int buttonread;
bool start;
int hodiny;
int minuty;
int hodiny2;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Program Hodiny");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Cekej");
  lcd.setCursor(0, 1);
  lcd.print("uz to bude");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0, 1);
  lcd.print("Zimni  a");
  lcd.setCursor(11, 1);
  lcd.print("Letni");
  lcd.setCursor(0, 0);
}

void loop() {
  if (!start) {
    if (analogRead(A0) == 406) {
      if (hodiny != 24) {
        hodiny = hodiny + 1;
      }
      if (hodiny == 24) {
        hodiny = 0;
      }
    }
    if (analogRead(0) == 0) {
      if (minuty != 60) {
        minuty = minuty + 1;
      }
      if (minuty == 60) {
        minuty = 0;
        if (hodiny != 24) {
          hodiny = hodiny + 1;
        }
        if (hodiny == 24) {
          hodiny = 0;
        }
      }
    }
    lcd.setCursor(0, 0);
    if (hodiny < 10) {
      lcd.print("0");
      lcd.print(hodiny);
    } else {
      lcd.print(hodiny);
    }
    lcd.setCursor(2, 0);
    lcd.print(":");
    lcd.setCursor(3, 0);
    if (minuty < 10) {
      lcd.print("0");
      lcd.print(minuty);
    } else {
      lcd.print(minuty);
    }
    delay(300);
    if (analogRead(0) == 639) {
      start = 1;
      hodiny2 = hodiny + 1;
    }
  }
  if (start) {
    delay(60000);
    minuty = minuty + 1;
    if (minuty == 60) {
       hodiny = hodiny + 1;
      minuty = 0;
    }
    if (hodiny > 23) {
      hodiny = 0;
    }
    if (hodiny2 > 23) {
      hodiny2 = 0;
    }
    lcd.setCursor(0, 0);
    if (hodiny < 10) {
      lcd.print("0");
      lcd.print(hodiny);
    } else {
      lcd.print(hodiny);
    }
    lcd.setCursor(2, 0);
    lcd.print(":");
    lcd.setCursor(3, 0);
    if (minuty < 10) {
      lcd.print("0");
      lcd.print(minuty);
    } else {
      lcd.print(minuty);
    }
    lcd.setCursor(11, 0);
    if (hodiny2 < 10) {
      lcd.print("0");
      lcd.print(hodiny2);
    } else {
      lcd.print(hodiny2);
    }
    lcd.setCursor(13, 0);
    lcd.print(":");
    lcd.setCursor(14, 0);
    if (minuty < 10) {
      lcd.print("0");
      lcd.print(minuty);
    } else {
      lcd.print(minuty);
    }
  }
}
Editováno 29.7.2016 14:17
 
Odpovědět
28.7.2016 10:19
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Radovan Cermak
Adam Ježek:28.7.2016 10:32

MÁME TU TLAČÍTKO NA VLOŽENÍ KÓDU!

Odpovědět
28.7.2016 10:32
Počkej chvíli, poradím se s křišťálovou koulí.
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 8 zpráv z 28.