Датчик движения AM312

Степан7

✩✩✩✩✩✩✩
15 Ноя 2023
2
0
Собираю "немного умную дачу". Датчики: температуры, газа, движения, геркон. Кричащий динамик. Включение обогрева, общение по СМС.
Может ещё чего придумаю по ходу.
Споткнулся на датчике движения AM312. Цифровой выход 3В.Но цифровой выход с Ардуино - 1,3В. Как так?
Дело ни в схеме (использовал разные пины и по входу и по выходу), ни в Ардуино (менял МК, правда обе - нано), ни в датчике (тоже менял),
ни в коде (код смешной).


C++:
uint32_t a=0;

void setup() {
  pinMode(3, OUTPUT);
}
void loop() {
 
  boolean sensor = digitalRead(2);

  if (sensor == HIGH)
         {a++;
           sensor = digitalRead(2);
           if (a>=20000) digitalWrite(3, HIGH);
         }
 
else a=0; digitalWrite(3, LOW);

}

Но и это не всё. При задействовании библиотеки для DS18B20 (некоторых строк) и команд печати в Serial выход на цифровом пине Ардуино =0!
Где тут собачка зарыта?


C++:
#include "OneWire.h"
#include "DallasTemperature.h"
#define temp 4
#define MQ2pin (A0)
float gazValue;     // переменная для хранения значения датчика газов/концентрвция
boolean gaz;        // переменная для хранения значения датчика газов/наличие
float t;            // переменная для хранения значения датчика температуры
boolean go;         // переменная для хранения значения датчика движения
uint32_t a;         // переменная для хранения значения счётчика времени датчика движения

// Настройка oneWire для связи с любыми устройствами OneWire
OneWire oneWire(temp);
DallasTemperature sensors(&oneWire);

void setup()
{       Serial.begin(9600); //для проверки
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
  // Запуск библиотек
sensors.begin();

}

void loop() {


                         //температура:
    sensors.requestTemperatures();       // при добавлении этого блока
    t=sensors.getTempCByIndex(0);      // напряжение падает до 0В
    if (t>29) digitalWrite(5, HIGH);
     else digitalWrite(5, LOW);
  

                  //датчик движения:
go = digitalRead(2);
if (go == HIGH)
         {a++;
          go = digitalRead(2);
        if (a>=2000) digitalWrite(3, HIGH);
         }
   else a=0; digitalWrite(3, LOW);

                      //датчик газов                              при добавлении этого блока
         gazValue = analogRead(MQ2pin);      // напряжение падает до 0,2В
         gaz = !digitalRead(7);
        if (gaz == 1) digitalWrite(6, HIGH);
        else digitalWrite(6, LOW);
     

        Serial.print(t);                               // при добавлении этого блока
        Serial.print("  ");                           // напряжение падает до 0В
        Serial.print(go);
        Serial.print("     ");
        Serial.print(gazValue);
        Serial.print("     ");
        Serial.println(gaz);
   
}
При этом по схеме подключен только датчик движения со светодиодом.
Запитывал датчик отдельно.
В мониторе порта всё в порядке.
Всю свою недоделанную башку сломал уже!

Убрал в первом коде всё лишнее.
Напряжение пришло в норму.
Знатоки, в чём здесь дело?
 
Изменено:

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
Цифровой выход 3В.Но цифровой выход с Ардуино - 1,3В.
Звучит как бред. Поясните внятно.

При задействовании библиотеки для DS18B20 (некоторых строк) и команд печати в Serial выход на цифровом пине Ардуино =0!
Каком именно пине и каких строк?
Если хотите помощи, то потрудитесь понятно излагать свои мысли и внятно формулируйте вопросы. Гадать тут никто не собирается.
 
Изменено:

Степан7

✩✩✩✩✩✩✩
15 Ноя 2023
2
0
@Bruzzer,

Преклоняюсь перед Вашими знаниями! В первом коде сработало.
Хотелось бы понять, почему так происходит, но не могу.
Тем не менее при раскомментировании строк 29, 30 и/или строк 51-57 во втором коде, напряжение на PIN3 =0.
Спасибо за Ваше терпение.

@PiratFox,
Выход с датчика движения AM312 - 3В. Подключен к PIN2 Arduino Nano.
PIN3 - выход (pinMode(3, OUTPUT);). И при моём коде на этом пине напряжение 1,3В при высоком значении PIN2.

Во втором коде в строках, которые влияют на результат, есть комментарии (29,30 и 51-57).
Пины те же (go = digitalRead(2); и pinMode(3, OUTPUT);).
Прошу прощения. Думал, что проблема необычная. и заинтересует, несмотря на бред.

@Степан7,Я не подмигивал - ; со скобкой прочитались как смайлик.