Поплавковый выключатель не обнаружен
Всем добрый день, простите меня за потрепанный рисунок, я просто паникую, почему мои поплавковые выключатели внезапно остаются незамеченными моим Arduino mega. Я проверил все поплавковые выключатели один за другим, чтобы убедиться, что все работает непосредственно перед их установкой.
у меня есть 18 комплектов поплавковых выключателей, 5 насосов управляются реле, мой основной блок питания-12В 20А. Желтый прямоугольник обозначает поплавковый выключатель, фиолетовая линия соединена с цифровыми контактами от резистора между 10 ком и переключателем. зеленая линия-это общее заземляющее соединение от бака 5,2 В (блок питания для устройств, которым требуется от 5 до 5,5 В) до gnd Arduino mega.
вот мой код, и это не код проекта, а просто простой тестовый скетч, потому что мои поплавковые выключатели внезапно ведут себя странно:
#include <OneWire.h>
#include "OneButton.h"
#include <DallasTemperature.h>
#include "GravityTDS.h"
#include <EEPROM.h>
#include "Wire.h" // Include the I2C Wire Library
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define bp1 (uint8_t) 10 /*Button 1*/
#define bp2 (uint8_t) 11 /*Button 2*/
#define bp3 (uint8_t) 12 /*Button 3*/
OneButton btn1 = OneButton(bp1,false,false); uint8_t bx1 = 0;
OneButton btn2 = OneButton(bp2,false,false); uint8_t bx2 = 0;
OneButton btn3 = OneButton(bp3,false,false); uint8_t bx3 = 0;
//Float Switches...........
/*Collector Float Switch*/
#define CT_Fs2 (uint8_t) 9
/*Sieve & Cloth*/
#define SC_Fs1 (uint8_t) 8
/*Primary Test Tank*/
#define PT_Fs1 (uint8_t) 7
#define PT_Fs2 (uint8_t) 6
/*Grease Trap*/
#define GT_Fs1 (uint8_t) 5
/*First Filtration*/
#define FFP_Fs1 (uint8_t) 4
#define FFP_Fs2 (uint8_t) 3
/*Sediment Filter*/
#define SD_Fs1 (uint8_t) 2
/*Second Filtration Passed*/
#define SP_Fs1 (uint8_t) 24
#define SP_Fs2 (uint8_t) 25
/*Final Test Tank*/
#define FT_Fs1 (uint8_t) A7
#define FT_Fs2 (uint8_t) A8
/*Tank A*/
#define TA_Fs1 (uint8_t) 45
#define TA_Fs2 (uint8_t) 47
/*Tank B*/
#define TB_Fs1 (uint8_t) 42
#define TB_Fs2 (uint8_t) 43
/*Tank C*/
#define TC_Fs1 (uint8_t) 40
#define TC_Fs2 (uint8_t) 41
void setup()
{
Serial.begin(9600); /* Show Serial Monitor */
lcd.begin(); /* LCD Screen Set Up */
//---------------------------------------------------------------------dont forget to set up the pins
//ALL DIGITAL PINS ARE INPUT AS DEFAULT, DECLARE ONLY IF MODE IS OUTPUT:
pinMode(FT_Fs1,INPUT);
pinMode(FT_Fs2,INPUT);
//----------------------------------------------------------------------One Button Single Click event attachment
btn1.attachClick(handleClick1);
btn2.attachClick(handleClick2);
btn3.attachClick(handleClick3);
}
//simple show txt on LCD Screen
void lcd_print(String txt ,uint8_t a, uint8_t b)
{ lcd.setCursor(a,b); lcd.print(txt);}
void loop()
{
FSTester();
}
void FSTester() // to check FLOAT SWITCH
{
if (digitalRead(CT_Fs2) == 1)
{
lcd.clear();
lcd_print("CT_Fs2 Detected",0,1);
delay(5000);
}
else if (digitalRead(SC_Fs1) == 1)
{
lcd.clear();
lcd_print("SC_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(PT_Fs1) == 1)
{
lcd.clear();
lcd_print("PT_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(PT_Fs2) == 1)
{
lcd.clear();
lcd_print("PT_Fs2 Detected",0,1);
delay(5000);
}
else if (digitalRead(GT_Fs1) == 1)
{
lcd.clear();
lcd_print("GT_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(FFP_Fs1) == 1)
{
lcd.clear();
lcd_print("FFP_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(FFP_Fs2) == 1)
{
lcd.clear();
lcd_print("FFP_Fs2 Detected",0,1);
delay(5000);
}
else if (digitalRead(SD_Fs1) == 1)
{
lcd.clear();
lcd_print("SD_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(SP_Fs1) == 1)
{
lcd.clear();
lcd_print("SP_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(SP_Fs2) == 1)
{
lcd.clear();
lcd_print("SP_Fs2 Detected",0,1);
delay(5000);
}
else if (digitalRead(FT_Fs1) == 1)
{
lcd.clear();
lcd_print("FT_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(FT_Fs2) == 1)
{
lcd.clear();
lcd_print("FT_Fs2 Detected",0,1);
delay(5000);
}
else if (digitalRead(TA_Fs1) == 1)
{
lcd.clear();
lcd_print("TA_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(TA_Fs2) == 1)
{
lcd.clear();
lcd_print("TA_Fs2 Detected",0,1);
delay(5000);
}
else if (digitalRead(TB_Fs1) == 1)
{
lcd.clear();
lcd_print("TB_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(TB_Fs2) == 1)
{
lcd.clear();
lcd_print("TB_Fs2 Detected",0,1);
delay(5000);
}
else if (digitalRead(TC_Fs1) == 1)
{
lcd.clear();
lcd_print("TC_Fs1 Detected",0,1);
delay(5000);
}
else if (digitalRead(TC_Fs2) == 1)
{
lcd.clear();
lcd_print("TC_Fs2 Detected",0,1);
delay(5000);
}
else
{
lcd.clear();
lcd_print("NOTHING",0,1);
}
}
Я проверил непрерывность связи, и все в порядке. почему это так странно?
кто нибудь пожалуйста исправьте мои ошибки
1 ответ
Лучший ответ:
Из диаграммы трудно определить, находится ли зеленый провод под тем же напряжением, что и черный провод, питающий плату Arduino. Даже если они соединены, трудно сказать, является ли ток номинальным. Поскольку есть источник питания неизвестной конструкции, задействованный как для Arduino, так и для поплавкового переключателя.
Это может привести к неожиданным результатам и даже к необратимому повреждению чувствительных деталей. Рассмотрите возможность использования конструкции только с одним источником питания, тем самым снижая риск неожиданных результатов.
Предполагается, что ваш код, датчики и насос работали вместе в одной точке ("на испытательном стенде"). Так что код, вероятно, работает. И только после того, как вы установили его и некоторое время запускали, вы заметили, что он выходит из строя. Это правильно?, @st2000
Ты новенькая @princessbubbles15. Если приведенные выше ответы на ваш вопрос, выберите его как правильный ответ. Если вы хотите подождать и попробовать, чтобы проверить, работает ли он, это тоже нормально. Или напишите комментарий/вопрос здесь, если что-то не ясно, и я отредактирую ответ. Не стесняйтесь также редактировать свой вопрос, если вы обнаружите, что забыли задать что-то конкретное., @st2000
- Является ли это хорошим способом фильтрации шума, вызванного вибрацией концевого выключателя?
- Преобразование float в байт, от Arduino до Raspberry Pi i2c
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Float печатается только 2 десятичных знака после запятой
- Отправка и получение различных типов данных через I2C в Arduino
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
"внезапно вести себя странно" не дает нам много для продолжения. Я бы предложил попробовать небольшой фрагмент вашего кода, в котором используется только один поплавковый переключатель, и заставить его работать. Затем добавьте остальные из них (с любыми изменениями, которые вам, возможно, пришлось бы внести для первого). Возможно ли, что переключатели работают в противоположном смысле, в котором вы их тестируете? Вы тестируете на ВЫСОКИЙ - они действительно переключаются на НИЗКИЙ? В противном случае нам нужно будет знать, чего вы ожидали от своего кода и что он делает вместо этого. И все равно будет полезно свести его к одному реле - то есть к простейшему случаю, когда происходит сбой., @JRobert
Что такое желтый компонент в вашем чертеже и что такое зеленое/фиолетовое соединение?, @Sim Son
В чем причина того, что вы используете дополнительный источник питания для - что я предполагаю из вашего рисунка - это просто простые переключатели? Почему бы просто не использовать для этого контакт 5 вольт ардуино напрямую?, @chrisl
Вашей схеме почти невозможно следовать. Можете ли вы нарисовать фактическую проводку без использования цветных коробок и т. Д.? **В частности** часть о переключателе. Мы предполагаем, что вы подаете питание на различные устройства, вам не нужно это показывать. Возможно, входы вашего переключателя "плавают" (то есть неопределенны) либо в открытом, либо в закрытом положении., @Nick Gammon
См. [моя страница о переключателях](http://www.gammon.com.au/forum/?id=11955) и если это поможет, я могу дать ответ в этом направлении (если его еще нет, что, вероятно, есть)., @Nick Gammon