«Конфетка» на Arduino из кривого проточного нагревателя. Arduino for tankless water heater + remote control

реклама не должна пугать :slight_smile: Все важное пишут потом мелким шрифтом :slight_smile:

Всячкие дюпонты ещё ничего. Я видел видеоролик про очередную безделушку из ~говна~батарейки и палок, так там соединения на термоклею держаться😄

Дюпоны не помогут :slightly_smiling_face:

Ну они прямо провоцируют…

1 лайк

Мне кажется эта манера писать полную дичь, “по-синьке” и с глупыми шутками - очень знакомой. Был nmi на старом форуме с такими манерами. Хотя возможно это просто одинаковая е@анутость. :wink:

старичковский инфантилизм

“Это болеют все вместе. А с ума сходят поодиночке”

Воду возят бочками. Дальше - на горбу. Датчик не проверить, пока, он уже в системе. Поэтому: “Периффь!” (М. Галустян)

Как и обещал, щедро делюсь практическими результатами. Выполнены натурные испытания заявленного Датчика Расхода (ДР), подключенного к Нано. Интуицию не купишь, не пропьешь! Как и предполагал, обещанных кита-ми 1-2 л\м нет и в помине! ДР останавливается, еще, при очень сильной струе. Это раза в 3 хуже, чем у работающего в тм Реле Протока (РП)! При закрытом кране соответственно – 0. Порог остановки ДР – примерно на мониторе 9655-108837мкс. При увеличении расхода длительность уменьшается.

В принципе, сей скорбный факт не мешает работе над скетчем.

Спасибо! Займусь. Года 3 назад пытался конкретно поучиться. Появилось подозрение, что многие авторы мутят вокруг одних и тех же примеров, слегка изменяя текст.

введ[code]


int Ledpin = 13;
int LedState = 0;
int MORE;
int LESS;
unsigned long R;    // переменная для хранения длительности импульса
void setup() {
  Serial.begin(9600); // Запускаем последовательный порт со скоростью 9600 бод
  pinMode(2, INPUT); (3, INPUT); (4, INPUT); (5, INPUT); (6, INPUT);
  (7, INPUT); (8, INPUT); (9, INPUT); (11, INPUT);    // назначить выводу порт ввода - мне так
  //  легче менять ПИНы при необходимости
  digitalWrite(2, HIGH); (3, HIGH); (4, HIGH); (5, HIGH); (6, HIGH);
  (7, HIGH); (8, HIGH); (9, HIGH); (11, HIGH);    // включить подтягивающий резистор
  int TIN = analogRead(A1);  // ввод температуры входа от термистора 1
  int TOUT = analogRead(A3);  // ввод температуры выхода от термистора 2
  int R = digitalRead(3);     // ввод сигнала от датчика расхода
  int MORE = digitalRead(5);  //  коллектор оптотранзистора от кнопки "надо теплее"
  int LESS = digitalRead(7);//  коллектор оптотранзистора от кнопки "надо холодне"
  (10, OUTPUT); // вывод разблокировки силового реле, нужен высокий уровень
  (12, OUTPUT); // вывод на ssr силы, нужен высокий уровень
  (13, OUTPUT); // есть импульсный сигнал от датчика расхода
}

void loop() {
  R = pulseIn(3, LOW); //  Измеряем время, пока сигнал на пине 2 находится в состоянии LOW
  Serial.println(R); // Выводим значения на встроенный монитор - это только на время настройки
}
{
  digitalRead(R)
  if (int R > 6) { // Проверяем, что приходят импульсы от ДР
    digitalWrite(ledPin, HIGH); // Включаем светодиод
    delay(300);                 // Ждем 300 миллисекунд
    digitalWrite(ledPin, LOW);  // Выключаем светодиод
    delay(150);                 // Ждем 150 миллисекунд
  } else {
    digitalWrite(ledPin, LOW);  // Если переменная меньше 6мкс, светодиод выключен
  }
}
[/code]ите или вставьте сюда код

Скетч барахтается на этой стадии. ЕВК злится, как я только не пробовал скобки и прочее менять.

Пока ты не разберешься, что это работает не так, как в твоих влажных фантазиях, дальше тебе не продвинуться. А пока не прочтешь хоть одну книгу по основам, выглядеть будешь как феерический дэбил (на этом и любом другом форуме).
“Конфетку” сделать с такими знаниями невозможно, можно только известную субстанцию в фантик завернуть, по форме “конфеты”.

6 лайков

А в программировании не так уж и много разных приёмов – искусство состоит в том, чтобы из этого небольшого количества приёмов составить нужную комбинацию.

Это, кстати, характерно для многих видов деятельности. Например, в лирической попсе, на самом деле, всего две темы: “мне не дают” и “мне наставили рога”, а песен – миллионы!

После всего, что Вам тут написали и после того, как я Вам порекомендовал тоненькую книжку, которую за это время можно было выучить наизусть, … у меня два варианта:

  1. либо Вы – жирный тролль и пришли поиздеваться над нами;
  2. либо Вы – клинический идиот.

Мне, почему-то, кажется, что первое.

А мне кажется - что второе.

Абыкновенный слесарь…

1 лайк

остальной код не сильно лучше

просто не так бросается в глаза, как

для слесаря в СССР который делал изделия по 14 классу шероховатости поверхности ваши знания программирования выглядят как детский лепет (если взвешивать профессионализм), я говорю об абсолютно всех здесь присутствующих, не надо себя в грудь стучать…
PS никаких микроскопов, руки, ветошь, керосин…

Ну, вот, кстати, объявление переменной в if (и в switch) я часто использую (не так, как ТС, конечно, а правильно). Это очень удобно – создаёт переменную с областью видимости внутри if. Например,

if (uint32_t nowMillis = millis(); nowMillis - timeout >= lastMatchMillis) {
	lastMatchMillis = nowMillis;
	// ...
}

Правда, это доступно только начиная с С++17. В IDE вполне работает, если в обпциях вместо -std=gnu++11 написать -std=gnu++1z.