Дано: модуль датчика холла A3144 подключенный через I2C расширитель PCF8575 к UNO R3
Необходимо контролировать наличие магнита и передавать информацию на сервер по mqtt-протоколу
При инициализации устройства магниты УЖЕ поднесены к датчику Холла.
Проблема: при старте устройства с поднесенными магнитом, скетчу "сносит" башню и Ардуино не понимает состояние датчика и не может отслеживать их переключение.
Если изначально при старте магниты не поднесены, всё прекрасно работает.
Код (часть связанную с сетью и передачей по mqtt-протоколу на брокер исключил):
01#include<SPI.h>02#include<Wire.h>03#include<PCF8575.h>0405#define PUB_DELAY 3000// Частота передачи данных ото всех ключей06#define CHK_DELAY 500// Частота проверки ключей07#define KEYS 3// Кол-во ключей08#define ACT LOW // Состояние входа при активации09#define DIS !ACT
1011 PCF8575 ex1;1213long previousMillis, checkMillis;14 boolean kst[KEYS]={0};1516void setup (){17// setup serial communication18Serial.begin(9600);192021// Адрес i2c расширителя pcf857522 ex1.begin(0x20);2324for(int i =0; i <3; i++) ex1.pinMode(i, INPUT);25for(int i =0; i < KEYS; i++) kst = DIS;// состояние датчика задается константой 2627 delay(1500);// Allow hardware to stabilize2829 previousMillis = millis();30 checkMillis = millis();3132}3334void loop (){35if(millis()- checkMillis > CHK_DELAY){// проверка ключей36for(int i =0; i <3; i++) kst = ex1.digitalRead(i);37for(int i =0; i <3; i++){38if(kst[i]== ACT){// если хотя бы 1 ключ активен39String state ="Active";40Serial.println (state);41}42}43 checkMillis = millis();44}45if(millis()- previousMillis > PUB_DELAY){// передача данных о ключах46String request;47for(int i =0; i <3; i++){48Serial.println (request);49}50 previousMillis = millis();51}52// mqttClient.loop();53}
Нужна помощь ГУРУ: проблема инициализации состояния датчиков холла
в Arduino
Опубликовано: · Изменено пользователем init.d
не корректная тема топика · Жалоба на ответ
Дано: модуль датчика холла A3144 подключенный через I2C расширитель PCF8575 к UNO R3
Необходимо контролировать наличие магнита и передавать информацию на сервер по mqtt-протоколу
При инициализации устройства магниты УЖЕ поднесены к датчику Холла.
Проблема: при старте устройства с поднесенными магнитом, скетчу "сносит" башню и Ардуино не понимает состояние датчика и не может отслеживать их переключение.
Если изначально при старте магниты не поднесены, всё прекрасно работает.
Код (часть связанную с сетью и передачей по mqtt-протоколу на брокер исключил):