термостат на Attiny13 и DS18B20

bester
Offline
Зарегистрирован: 25.06.2016

Помогите переделать скетч под датчик температуры DS18B20 без функции Serial.begin(9600), для заливки в Attiny13.

Вот, пособирал что то. Скажите, если бы этот скетч влез в Attiny13 он бы заработал?

#define LED 0
#include <OneWire.h>
OneWire  ds(1);
   void setup() {            
   pinMode(LED, OUTPUT);
   analogWrite(LED, OUTPUT);
   }
   
  void loop(){
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
  
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // начало коммуникации
  
  delay(1000);
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // читаем значение

  for ( i = 0; i < 9; i++) {           // смотрим 9 байтов
    data = ds.read();
   
  }
  // Преобразуем получненный данные в температуру
  // Используем int16_t тип, т.к. он равен 16 битам
  // даже при компиляции под 32-х битный процессор
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3;
    if (data[7] == 0x10) {
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw & ~7;
    else if (cfg == 0x20) raw = raw & ~3;
    else if (cfg == 0x40) raw = raw & ~1;
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  // Если температура достигает температуры кипения (с погрешностью), отключаем кипятильник 
  if (celsius > 33.5)
  {
    analogWrite(LED, 0);
  }
  if (celsius < 32)
  {
    analogWrite(LED, 1);
  }
   
}

 

Т.к. визуально значение температуры визуально наблюдать не требуется, то возможно из скетча , что то можно удалить, чтоб облегчить его объем?

bester
Offline
Зарегистрирован: 25.06.2016

Что, никто не поможет?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

чтобы помогали нужно, в первую очередь, уважать правила сообщества. То есть код вставить правильно.

Во вторых вставляемый код нехудо бы откомпилировать и проверить на ошибки. Как настроить IDE для компиляции под Attiny13 написано тут же, в шапке. Все вопросы сразу пропадут.

Вы спрашиваете: "Что выкинуть", но размер проги пока не знаете. Вы реально думаете, что комуто интересно подогнать ваш код по тиньку?

Сделайте сами, и если уперлись в нерешаемое - задавате вопрос.

То, что в программе для тиньки Вы использовали float и библиотеку - выдает полную безграмотность.

Все плавающие вычисления - выкинуть. 1-wire реализовать без библиотеки, руками. ТОгда точно влезет. А проще посмотреть готовое решение для тиньки.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

bester, с библиотекой оно туда не влезет. Нужно писать на чистом СИ без ардуиновских фишек, и без каких-то ни было библиотек. Для опытного программиста пол дня работы. Но смысл отсутствует, проще взять МК с большей памятью.

PS: для датчика DHT22 я писал аналогичную программу для тини13

bester
Offline
Зарегистрирован: 25.06.2016

dimax пишет:

Для опытного программиста пол дня работы.

Ясно, спасибо. Я надеялся, что это будет менее сложно по времени для опытного программиста.

gena
Offline
Зарегистрирован: 04.11.2012

  По времени может и менее сложно, но кто ЭТО будет отлаживать и доводить до ума?