%indnt
%indent
*** [#l56b39d0]
###
#include <OneWire.h>
#include <DallasTemperature.h>

const int pHeat = 12; //Digital
OneWire oneWire(2);
DallasTemperature sensor(&oneWire);
 
void setup() {
  Serial.begin(9600);
  Serial.println("Begin OneWireTemprature");
  sensor.begin();
  delay(100);
  
  Serial.print("  sensor.getDeviceCount ==> ");
  Serial.println(sensor.getDeviceCount());
  delay(100);
}

float gCurrent = 0;
float gTarget = 70;
float gFullPowere = gTarget - 10;

int gFreq = 1000;
void loop() {
  sensor.requestTemperatures();
  float vMesure = sensor.getTempCByIndex(0);

  if (0 < vMesure && vMesure < 110) {
    gCurrent = vMesure; // 異常値ガード
  }

  if (gTarget < gCurrent) {
    Serial.print(gTarget );
    Serial.print(",");
    Serial.print(gCurrent);
    Serial.print(",");
    Serial.print(0);
    Serial.println("");
    digitalWrite(pHeat, LOW);
    delay(gFreq);
  }
  else if (gCurrent < gFullPowere) {
    Serial.print(gTarget );
    Serial.print(",");
    Serial.print(gCurrent);
    Serial.print(",");
    Serial.print(100);
    Serial.println("");
    digitalWrite(pHeat, HIGH);
    delay(gFreq);
  }
  else {
    float vDiff = gTarget - gCurrent;
    float vDuty = vDiff / 10;
    float vTimeHigh = vDuty * gFreq;
    float vTimeLow = gFreq - vTimeHigh;
    Serial.print(gTarget );
    Serial.print(",");
    Serial.print(gCurrent);
    Serial.print(",");
    Serial.print(vDuty * 100);
    Serial.println("");
    digitalWrite(pHeat, HIGH);
    delay(vTimeHigh);
    digitalWrite(pHeat, LOW);
    delay(vTimeLow);
  }
}
###
    技術 一覧 検索 最新 バックアップ リンク元   ヘルプ   最終更新のRSS