Elektroda.pl
Elektroda.pl
X
Hotair
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino - Połączenie kodu zegara z termomerem.

jarecho 02 Lut 2015 00:35 1278 2
  • #1 02 Lut 2015 00:35
    jarecho
    Poziom 11  

    Witam Proszę o pomoc w połączeniu tych dwóch kodów, tak żeby na wyświetlaczu była wyświetlana godzina, data i termometr.

    Oba te kody działają, ale z osobna.

    Z góry dziękuję


    ZEGAR

    Kod: c
    Zaloguj się, aby zobaczyć kod


    // DS1307_LCD (C)2010 Henning Karlsen
    // web: http://www.henningkarlsen.com/electronics
    // Modified R. LaSalle
    // Uses DS1307 library but not wire library

    // A quick demo of how to use my DS1307-library to make a quick
    // clock using a DS1307 and a 16x2 LCD.

    // I assume you know how to connect the DS1307 and LCD.
    // DS1302: SDA pin -> Arduino Digital 18
    // SCL pin -> Arduino Digital 19
    // LCD: DB7 -> Arduino Digital 2
    // DB6 -> Arduino Digital 3
    // DB5 -> Arduino Digital 4
    // DB4 -> Arduino Digital 5
    // E -> Arduino Digital 12
    // R/W -> Arduino Digital 11
    // RS -> Arduino Digital 10

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

    // Init the DS1307
    DS1307 rtc(18,19); //using Analog pins 4,5 as digital

    // Init the LCD
    LiquidCrystal lcd(10,11,12,2,3,4,5);

    void setup()
    {
    // Set the clock to run-mode
    rtc.halt(false);

    // Setup LCD to 24x2 characters
    lcd.begin(24, 2);
    /*
    // The following lines can be commented out to use the values already stored in the DS1307
    rtc.setDOW(SATURDAY); // Set Day-of-Week to SUNDAY
    rtc.setTime(9, 41, 0); // Set the time to 12:00:00 (24hr format)
    rtc.setDate(18,8, 2012); // Set the date to October 3th, 2010
    */
    // Set SQW/Out rate to 1Hz, and enable SQW
    rtc.setSQWRate(SQW_RATE_1);
    rtc.enableSQW(true);

    }

    void loop()
    {
    // Display time centered on the upper line
    lcd.setCursor(4, 0);
    lcd.print(rtc.getTimeStr());

    // Display abbreviated Day-of-Week in the lower left corner
    lcd.setCursor(0, 1);
    lcd.print(rtc.getDOWStr(FORMAT_SHORT));

    // Display date in the lower right corner
    lcd.setCursor(6, 1);
    lcd.print(rtc.getDateStr());

    // Wait one second before repeating :)
    delay (1000);
    }
    Kod: c
    Zaloguj się, aby zobaczyć kod




    TERMOMETR
    Kod: c
    Zaloguj się, aby zobaczyć kod


    #include <OneWireTempSensor.h>

    #include <OneWire.h>
    #include <LiquidCrystal.h>
    int DS18S20_Pin = 7; //DS18S20 Signal pin on digital 7 by rahulmitra
    LiquidCrystal lcd(10,11,12,2,3,4,5);
    //Temperature chip i/o
    OneWire ds(DS18S20_Pin); // on digital pin 7 by rahulmitra

    void setup(void) {
    Serial.begin(9600);
    lcd.begin(16, 2);

    }

    void loop(void) {
    float temperature = getTemp();
    Serial.println(temperature);
    lcd.setCursor(8, 0);
    lcd.print("Temp:");
    lcd.print(temperature);
    lcd.print(" *C");
    delay(100); //just here to slow down the output so it is easier to read

    }

    float getTemp(){
    //returns the temperature from one DS18S20 in DEG Celsius

    byte data[12];
    byte addr[8];

    if ( !ds.search(addr)) {
    //no more sensors on chain, reset search
    ds.reset_search();
    return -1000;
    }

    if ( OneWire::crc8( addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    return -1000;
    }

    if ( addr[0] != 0x10 && addr[0] != 0x28) {
    Serial.print("Device is not recognized");
    return -1000;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44,1); // start conversion, with parasite power on at the end

    byte present = ds.reset();
    ds.select(addr);
    ds.write(0xBE); // Read Scratchpad


    for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
    }

    ds.reset_search();

    byte MSB = data[1];
    byte LSB = data[0];

    float tempRead = ((MSB << 8) | LSB); //using two's compliment
    float TemperatureSum = tempRead / 16;

    return TemperatureSum;

    }
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 2
  • HotAir
  • Pomocny post
    #2 05 Lut 2015 14:08
    lukas12p
    Poziom 2  

    Nie wiem jaki masz LCD: 16x2 czy 24x2, jakby co to dasz radę sam ustawić.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • HotAir
  • #3 21 Paź 2015 23:46
    jarecho
    Poziom 11  

    Działa. Dzięki za pomoc.

    0