Vl53lox проблема со скетчем уровня

Солёнойд - закуска к пиву?

Родной , извените за орфографию, писал сие ночью. Короче аларм пин это d2 он должен вкл реле и светодиод redpin d3 ,на проходе уровня 100мм отключать d3 , реле в этот момент должно продолжаться работу до вкл светодиода grenpin порог 300мм . Далее пройдя 300мм откл реле. Светодиод остаётся гореть, как только наполнении произойдет снова до уровня redpin снов включить реле.

b707, это не лечицца, IQ тут не пахнет

Это воздушный клапан , катушка в нем играет роль эл.магнита для Открытие канала

Виликадушно прасчяем

Ладно.

  1. Если уровень максимальный,включаем исп.устройство. Уровень падает…
  2. Если достигли дна,то выключаем исп.устройство.
    Такой алгоритм?
    Используйте флаг направления изменения уровня воды.

Да могу просто я пытался вставить , через копипаст с бука на телегу с телеги сюда . Проблемы со входом пароль забыл от форума.

Так нужен код полностью или есть от чего отталкиваться? От чего нам отталкиваться?

Есть все , сейчас скину , доберусь до ноута. Обождите

пин d2 должен включать d3 , для этого нужно реле? А напрямую d3 включать не проще?

согласен

От соленойда. Хотя, к нему можно и притянуться, если не тем полюсом повернёмся.

Жжошь!:rofl:
Кстати,ТС, параллельно селеноиду подключал 50мкФ,хотя надо бы диод…)

Код ТС

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;
#define alarmPin 2
#define RedPin 3
#define GrenPin 4
int minDistance = 300; // минимальное расстояние
int maxDistance = 100; // максимальное расстояние


void setup()
{
  pinMode(alarmPin, OUTPUT);
  pinMode(RedPin, OUTPUT);
  pinMode(GrenPin, OUTPUT);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous(50);
}


void loop()
{
  unsigned int distance = sensor.readRangeContinuousMillimeters();
  
  digitalWrite( alarmPin, (distance > 100) );
  digitalWrite( RedPin, (distance > 100) );
  digitalWrite( GrenPin, (distance < 300) );
  if (RedPin == LOW) {
    digitalWrite(alarmPin, LOW);

  } else if (GrenPin == LOW) {
    digitalWrite(alarmPin, HIGH);
  } else {
    if (GrenPin == LOW) {
      digitalWrite(alarmPin, HIGH);
    } else if (GrenPin == HIGH) {
      digitalWrite(alarmPin, LOW);
    } else {
    }
  }
}
1 лайк

Пришел Ржевский и все опошлил

Мультфильм про крокодила Гену в детстве не смотрел? Там один правильный персонаж есть - старуха Шапокляк, помнишь? “Кто людям помогает, тот тратит время зря!” :wink:

2 лайка

так он не ТС-у помогает, а нам.
Вот эта вот часть кода ТС чудо как хороша:

но пока @ua6em код не вставил - я этот код не замечал

2 лайка

тоись, про digitalWrite он чо-та слышал, а про digitalRead - IQ не дошел.

@Iliya
Илья, большая часть вашего кода полный бред.
Вот хотя бы это… ваши номера пинов - константы, равны 3 и 4:

поэтому когда вы начинаете сравнивать их с LOW - это не работает.

1 лайк

Я только ща заметил что в условиях номера пинов,а не их состояния…я стар,я суперстар…

2 лайка

Да знаю , но для этого пока что и фильтра достаточно.