• - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!
подписаться на RSS-ленту
0
Тогда +85 отсеивать надо. Вычислять среднее или большие отклонения нет смысла — других аномалий я не встречал.
avatar

boa

  • 5 апреля 2010, 12:21
0
Один я звук не слышу?
Кстати, +85 это скорее всего не в датчике проблема:
*The power-on reset value of the temperature register is +85°C.
Ищите плохой контакт )
avatar

boa

  • 5 апреля 2010, 11:45
+1
1. контакт в монтажке
2. контакт в проводке к ардуино.
3. попробуй по одному датчику отцеплять — может сам датчик глючит.
avatar

boa

  • 12 марта 2010, 18:01
+1
CRC неправильно это как? :)
Помехи. Пока работает — они в каком-нибудь малозначащем разряде.
avatar

boa

  • 12 марта 2010, 15:40
0
Единственное подозрение на ds.reset(); — я не особо понимаю зачем там сброс шины происходит. Попробуй убрать.
avatar

boa

  • 11 марта 2010, 16:27
+1
Почему успокаивается?
По идее должно работать так (см. комментарии):
#include <OneWire.h>

OneWire  ds(1wirePin);

void setup(void)  {
  Serial.begin(9600);
}

void loop(void) {
  byte addr[8];
  
  if (!ds.search(addr)) { // поиск нового датчика
      ds.reset_search(); // если не нашли, сбрасываем поиск в начало
      return; // и возвращаемся в самое начало главного цикла void loop(void)
  }
  
  // Часть кода, которая ниже, выполняется только если
  // найден новый датчик, с которым ещё не работали в
  // главном цикле до сброса поиска

  if (OneWire::crc8( addr, 7) != addr[7]) { // Проверка CRC
      Serial.print("CRC is not valid!\n");
      return; // Если не пройдена, то в начало главного цикла и продолжаем поиск других датчиков
  }
  
  if (addr[0] != 0x28) {	// Проверка того, что найденное устройство - температурный датчик DS18B20
      Serial.print("Device is not a DS18B20 family device.\n");
      return; // Если не он, то опять в начало главного цикла на продолжение поиска
  }
  
  ds.reset();
  ds.select(addr);
  // И вот после этого селекта делаем с очередным найденным датчиком что хотим
  // После возврата в начало цикла поиск будет продолжен, пока не сработает первое условие и не выполнится ds.reset_search().
}
avatar

boa

  • 11 марта 2010, 16:26
0
Кстати, интересный документ :)
www.digitop.com.ua/pdf/TK-7.pdf
avatar

boa

  • 5 марта 2010, 18:16
+1
На то он и 1wire :) Можно вешать кучу датчиков и даже разных. И термометр и гигрометр и iButton и чёрта в ступе :)

www.maxim-ic.com/products/1-wire/images/1wiremain.gif
avatar

boa

  • 4 марта 2010, 14:02
0
Ну блок реле можно спрятать подальше.
avatar

boa

  • 3 марта 2010, 22:32
+1
3000/220=13,7А искать реле, которое держит такой ток. Твёрдотельное дорогое будет. Скорее всего электромагнитное типа этого: www.chip-dip.ru/product0/58171.aspx
Но там 24В рабочее напряжение, соответственно нужна обвязка, которая откроет 24В (второй БП? или с него же брать и питание для ардуино) на управляющие контакты по сигналу ардуино.
avatar

boa

  • 3 марта 2010, 18:50
0
Ну или провода или микросхему паять + логику писать для неё + место на плате искать :)

Котёл у меня газовый, 100 ватт вместе с циркуляционным насосом, так что реле слабенького хватило.
avatar

boa

  • 3 марта 2010, 15:00
0
Про кнопки повторю — это без аккордов. Т.е. если порты 110 это может быть и 6-я кнопка и 2 и 4 вместе. Это тут не отследить.
avatar

boa

  • 3 марта 2010, 14:51
+1
1 кнопка при нажатии подаёт сигнал на 3 вход, 2-я на 2-й, 3-я на 2-й и 3-й одновременно и т.д.

Опрашиваешь сразу три порта. Если порт1||порт2||порт3 = 110, то нажата 6-я :)

А зачем столько кнопок?
Вообще проект похож на то, что хочу сделать я — управление котлом по температуре в комнатах. Мне вроде как трёх кнопок достаточно — «режим», "+", "-". Последние две — для настройки максимума/минимума и (если сделаю) расписания. Режимы: Показометр -> настройка мин t в 1 комнате -> настройка макс t в 1 комнате -> настройка мин t во 1 комнате ->… -> Показометр.
avatar

boa

  • 3 марта 2010, 14:48
0
Много! Тогда на одной wire.h попробовать можно как тут: www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1198881858
avatar

boa

  • 3 марта 2010, 14:28
+1
У каждого датчика есть айди, который содержится в byte addr[8].

6 Кнопок можно поместить на 3 входа: 001, 010, 011, 100, 101, 110 и ещё 7-я поместится туда же. 000 — все отжаты, соответственно.
avatar

boa

  • 3 марта 2010, 14:26
0
цифровые датчики можно на один вход повесить, зачем размножать?
Для кнопок без аккордов можно применить двоичную логику без микросхем, но это имеет смысл если много кнопок: кол-во кнопок = 2^(кол-во входов) — 1.
avatar

boa

  • 3 марта 2010, 14:02
0
А можно узнать сколько памяти занимает библиотека DS1307?
Если с моим кодом в 8к влезет — тоже расписание сделаю.
avatar

boa

  • 3 марта 2010, 13:57
0
Смотря какая цель размножения портов :)
Кнопки? Аккорды нужны?
avatar

boa

  • 3 марта 2010, 13:45
+1
Так это совсем другая ошибка :)
Да, для B20 надо так:
if (address[0] == 0x28)...
avatar

boa

  • 25 февраля 2010, 18:33
0
Кстати, <b> внутри <code> тут не работает ;)
Да и закрытие тегов не отслеживается…
avatar

boa

  • 25 февраля 2010, 17:55