При изменении температуры выдать звуковой сигнал

Тема в разделе "Arduino & Shields", создана пользователем MO_SPB, 8 апр 2017.

Метки:
  1. MO_SPB

    MO_SPB Нуб

    Прошу помощи. Подключен датчик температуры далас(18B20), табло и бузер.
    Нужно что бы при каждом изменении температуры был короткий звуковой сигнал. Как указать что при изменении Temp, выдать сигнал на бузер. Извините в программировании ноль, если не сложно подскажите.
    Код (C++):
    #include <OneWire.h>
    OneWire ds(9);
    #include "TM1637.h"
    #define CLK 3
    #define DIO 2
    TM1637 disp(CLK,DIO);
    #define buzzer 5

    void setup()
    {
     
    disp.set(7);
    disp.init(D4056A);
    pinMode(buzzer,OUTPUT);
    }

    void loop() {
      byte data[2];
      ds.reset();
      ds.write(0xCC);
      ds.write(0x44);
      delay(10000);
      ds.reset();
      ds.write(0xCC);
      ds.write(0xBE);
      data[0] = ds.read();
      data[1] = ds.read();
      int Temp = (data[1] << 8) + data[0];
      Temp = Temp >> 4;
     
      disp.display(Temp);
     

    }
     
  2. qwone

    qwone Гик

  3. MO_SPB

    MO_SPB Нуб

    Хорошо про тон я понял, мне интересно как "сказать" что при изменении температуры нужно возпроизвести сигнал?
     
  4. qwone

    qwone Гик

    Блин. Похоже у вас с реальностью проблемы. Что такое "изменение температуры"? Ну думайте... раньше была одна температура, а сейчас другая.
    If (Temp != Temp_old) надо пищать;
     
    MO_SPB нравится это.
  5. Как-то так
    Код (C++):
    Код (C++):

    #include <OneWire.h>
    OneWire ds(9);
    #include "TM1637.h"
    #define CLK 3
    #define DIO 2
    TM1637 disp(CLK,DIO);
    #define buzzer 5

     int Temp_old = 0;

    void setup()
    {
     
    disp.set(7);
    disp.init(D4056A);
    pinMode(buzzer,OUTPUT);
    }

    void loop() {
      byte data[2];
      ds.reset();
      ds.write(0xCC);
      ds.write(0x44);
      delay(10000);
      ds.reset();
      ds.write(0xCC);
      ds.write(0xBE);
      data[0] = ds.read();
      data[1] = ds.read();
      int Temp = (data[1] << 8) + data[0];
      Temp = Temp >> 4;
     
      disp.display(Temp);
     
    //определяем изменение
    if(Temp != Temp_old){
     Temp_old = Temp;
     digitalWrite(buzzer, HIGH);  //включаем бузер
     delay(500);
    digitalWrite(buzzer, LOW);  //выключаем бузер
     delay(500);
    }

    }

     
     
    Tomasina и MO_SPB нравится это.
  6. MO_SPB

    MO_SPB Нуб

    Спасибо дружище! Дай бог здоровья.