sobota 13. prosince 2014

Arduino Lesson 7 - Real Time Clock

V dnešní sedmém tutoriálu se naučíme pracovat s real time clock modulem. Budeme potřebovat Arduino, display shield a real time clock modul.

Otevřete si vývojové prostředí pro Arduino a zkopírujte tento kód:


       #include <DS1307.h>
       #include <WProgram.h>
       #include <Wire.h>
       #include <LiquidCrystal.h>

       LiquidCrystal lcd(8, 9, 4, 5, 6, 7);        

       int rtc[7];

       void setup(){  
        lcd.begin(16, 2);
       }
       void loop(){
         RTC.get(rtc,true);
         char cas[9];
         sprintf(cas, "%02d:%02d:%02d", rtc[2],rtc[1],rtc[0]);
         lcd.clear();
         lcd.print(cas);
         delay(1000);
        }





Propojte podle těchto fotek.

Funkce setup() se spustí po spuštění programu, a v ní se deklaruje nastavení pinů, inicializace Ethernet Shieldu atd. a následně se zavolá funkce loop(). Funkce loop() se neustále opakuje.
#include <LiquidCrystal.h> inkluduje knihovnu LiquidCrystal. Pomocí LiquidCrystal lcd(8, 9, 4, 5, 6, 7) vybereme piny které chceme používat na LCD panelu. lcd.begin(16,2) spustí knihovnu.
Aby jsme mohli používat knihovnu DS1307, musíme ji nejprve stáhnout a poté přidat do adresáře knihoven. Stáhnete ji zde. RTC.get(rtc,true)  vloží čas z modulu do proměnné rtc. char cas[9] vytvoří pole znaků pro čas. sprintf(cas, "%02d:%02d:%02d", rtc[2],rtc[1],rtc[0]) zapíše čas z rtc do cas. lcd.clear() vyčistí display a lcd.print(cas) zobrazí čas.



GitHub: https://github.com/vaclavpavlicek/Arduino-Tutorial/tree/master/Lesson7_Real_time_clock

neděle 7. prosince 2014

Arduino Lesson 6 - Display and Buttons

V dnešní šestém tutoriálu pomocí tlačítek budeme přičítat a odečítat proměnnou a poté ji zobrazíme na displayi. Budeme potřebovat Arduino, display shield, dvě tlačítka a dva rezistory.

Otevřete si vývojové prostředí pro Arduino a zkopírujte tento kód:


        #include <LiquidCrystal.h>
        int buttonPlusPin = 2;
        int buttonMinusPin = 3;

        LiquidCrystal lcd(8, 9, 4, 5, 6, 7);        
        int buttonPlusState = 0;
        int buttonMinusState = 0;

        int number = 0;

        void setup() {
         lcd.begin(16, 2);
         lcd.print("0");
         pinMode(buttonPlusPin, INPUT);  
         pinMode(buttonMinusPin, INPUT);    
        }

        void loop(){
         buttonPlusState = digitalRead(buttonPlusPin);
         buttonMinusState = digitalRead(buttonMinusPin);
 
         if (buttonPlusState == HIGH) {  
                 lcd.clear();
                 number++;
                 lcd.print(number);
                 delay(500);
         }
         else {

         }

         if (buttonMinusState == HIGH) {  
                 lcd.clear();
                 number--;
                 lcd.print(number);
                 delay(500);
         }
         else {

         }

        }


Propojte podle následujícího schématu.

Funkce setup() se spustí po spuštění programu, a v ní se deklaruje nastavení pinů, inicializace Ethernet Shieldu atd. a následně se zavolá funkce loop(). Funkce loop() se neustále opakuje.
#include <LiquidCrystal.h> inkluduje knihovnu LiquidCrystal. Pomocí LiquidCrystal lcd(8, 9, 4, 5, 6, 7) vybereme piny které chceme používat na LCD panelu. lcd.begin(16,2) spustí knihovnu,
lcd.print("0") zobrazí na displayi 0. Řádek pinMode deklaruje že pin 2 a pin 3 bude výstup. Pomocí digitalRead zjisťujeme stav tlačítka jestli se rovná HIGH a nebo LOW. Když stiskneme tlačítko plus tak se proměnná buttonPlusState nastaví na HIGH. A když tlačítko plus není stisknuté, tak se buttonPlusState nastaví na LOW. Stejné je to i u tlačítka minus a u buttonMinusState. První podmínka if zjišťuje jestli je tlačítko plus stisknuté, když je tlačítko plus stisknuté, tak zvýší proměnnou number o 1 a poté ji pomocí lcd.print(number) zobrazí. Druhá podmínka if zjišťuje jestli je tlačítko minus, když je tlačítko minus stisknuté, tak sníží proměnnou number o 1. Příkaz lcd.clear() vyčístí display, a to doslova, kdyby tam tento příkaz nebyl, tak by se proměnná number zobrazovala vícekrát.