Close

1-wire teplomer a bluetooth

Úvodní stránka Fórum Vaše projekty Arduino 1-wire teplomer a bluetooth

  • Toto téma obsahuje celkem 1 odpověď. Do diskuze (2 diskutující) se naposledy zapojil uživatel posjirka a poslední změna proběhla před 8 roky.
Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Autor
    Příspěvky
  • #6536
    krehnis
    Účastník

    Zdravím,jsem tu nový a obracím se na Vás s radou ohledně mého malého,jednoduchého projektu,který mne trápí.

    Ač jde opravdu o jednoduchý sketch,tak stejně mám někde chybu a jelikož se teprve učím,tak bych potřeboval tuto chybu najít 🙂

    Dělá to následující – posílá přes BT hodnoty z teploměru,jenže po chvíli se zřejmě resetují proměnné a pokud je zrovna třeba 20st,tak uloží do obou hodnot (min i max),tuto hodnotu, i když tam předtím bylo MIN třeba 15st.

    Když k tomuto dojde,tak jsem si všiml,že zabliká asi 3x i LED na arduinu UNO

    MOC děkuji za vyřešení!!

    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <SoftwareSerial.h>
    #undef int

    #define ONE_WIRE_BUS 2

    SoftwareSerial bluetooth(8, 9); // RX, TX

    OneWire oneWire(ONE_WIRE_BUS);

    DallasTemperature sensors(&oneWire);

    int vyssi=-100;
    int nizsi=100;

    void setup(void)
    {

    bluetooth.begin(115200); // The Bluetooth Mate defaults to 115200bps
    bluetooth.print(„$“); // Print three times individually
    bluetooth.print(„$“);
    bluetooth.print(„$“); // Enter command mode
    delay(100); // Short delay, wait for the Mate to send back CMD
    bluetooth.println(„U,9600,N“); // Temporarily Change the baudrate to 9600, no parity
    // 115200 can be too fast at times for NewSoftSerial to relay the data reliably
    bluetooth.begin(9600); // Start bluetooth serial at 9600

    // Start up the library
    sensors.begin();
    }

    /*
    * Main function, get and show the temperature
    */
    void loop(void)
    {
    sensors.requestTemperatures();
    int teplota = (sensors.getTempCByIndex(0));
    int temp = teplota;

    delay(1000);
    if(vyssi < temp)
    vyssi=teplota;
    if(nizsi > temp)
    nizsi=teplota;

    bluetooth.print(„MAX : „);
    bluetooth.println(vyssi);
    bluetooth.print(„NYNI: „);
    bluetooth.println(temp);
    bluetooth.print(„MIN : „);
    bluetooth.println(nizsi);
    delay(5000);

    }

    #6537
    posjirka
    Účastník

    po hrubé kontrole to vypadá funkčně.
    Máš tam 2x delay podle mě zbytečně.
    Jen výsledný proces podmínky „if“ bych dal do složených závorek.
    Napadá mě, že jestli se neresetuje sám procesor.
    Bluetooth modul má celkem velkou spotřebu a po čase může zahřát a přetížit stabilizátor na desce. TO by pak znamenalo reset.
    Dej si na začátek něco jako text „start“.
    Když se ti objeví před změnou hodnot „start“ tak se ti resetoval čip.

    i tak neni nic ztraceno. můžeš si ti hodnoty zaznamenat do EEPROM a při startu si je znovu načíst. Vlastně by pokračoval tam, kde posledně skončil.
    Po stisku tlačítka (nový tlačítko) + reset by si ty udaje mohl resetovat.
    TO udělal tjde. jen pozor EEPRm má max.100 000 zápisu do každé buńky. Pak ta bunka není stabilní.

Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Pro reakci na toto téma se musíte přihlásit.