Не получается сихронизировать 4-й датчик с остальными тремя

друзья, делаю умный дом как проект для автомата, загружаю в ардуинку скетч, в котором 3 датчика(температура и влажность, датчик затопления, датчик света), все работает корректно, после того как добавляю 4-й для двери гаража, которые открываются с помощью клавиатуры(4х4), вводя пин-код, почему-то все синхронизируется с клавиатурой для гаража, допустим нажимаешь на кнопку и может загореться датчик света, рисовал схему, паял специалист, с контактами не должны были попутать, оставлю код, помогите кому не сложно

#include <Servo.h>
#include <Keypad.h>
#include <Wire.h>                       // библиотека для протокола I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602
#include <DHT.h>                         // подключаем библиотеку для датчика
Servo ServoMotor;
char* password = "888"; // change the password here, just pick any 3 numbers
int position = 0;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
 byte rowPins[ROWS] = { 8,7, 6, 9 };
byte colPins[COLS] = { 5, 4, 3, 2 };
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int RedpinLock = 2;
int GreenpinUnlock = 3;
LiquidCrystal_I2C LCD(0x27,16,2);  // присваиваем имя LCD для дисплея
DHT dht(12, DHT11); 
const int ledPin = 13;
void setup()
{
ServoMotor.attach(11);
LockedPosition(true);
{
   LCD.init();            // инициализация LCD дисплея
   LCD.backlight();  // включение подсветки дисплея
   dht.begin();
   pinMode(ledPin, OUTPUT);
   pinMode(10, OUTPUT);
          // запускаем датчик DHT11

}
}
void loop()

{
char key = keypad.getKey();
if (key == '*' || key == '#')
{
position = 0;
LockedPosition(true);
}
if (key == password[position])
{
position ++;
}
if (position == 3)
{
LockedPosition(false);
}
    delay(100);
}
void LockedPosition(int locked)
{
if (locked)
{
digitalWrite(RedpinLock, HIGH);
digitalWrite(GreenpinUnlock, LOW);
ServoMotor.write(11);
}
else
{
digitalWrite(RedpinLock, LOW);
digitalWrite(GreenpinUnlock, HIGH);
ServoMotor.write(180);
}
{
   // считываем температуру (t) и влажность (h)
   float h = dht.readHumidity();
   float t = dht.readTemperature();

   // выводим температуру (t) и влажность (h) на жк дисплей
   LCD.setCursor(0,0);
   LCD.print("Humidity: ");
   LCD.print(h);

   LCD.setCursor(0,1);
   LCD.print("Temperature: ");
   LCD.print(t);

   delay(1000);
   LCD.clear();
     if(analogRead(A0) <= 200)
   digitalWrite(ledPin, HIGH);

   else
   digitalWrite(ledPin, LOW);
   if(analogRead(A1)>100)
   {
    digitalWrite(10, HIGH);
    delay(15);
    digitalWrite(10, LOW);
   }
}
}

Ну вот как могут быть связаны какие-то датчики с нажатием клавиатуры? Блок схема программы хотя бы в голове есть?

за 15000р мне несложно.

ну схема есть, что куда в какие пины

Алгоритм программы. Так сказать принцип можете сформулировать? Просто там чёрт ногу ломит, всё в кучу.
Почему замеры датчиков производятся не независимо в лупе а в функции LockedPosition()?

к сожалению не понимаю программирования, скетчи копировал с интернета

Ладно, у нас тут конкуренция на форуме. Поэтому сделаю за 14999р, дешевле чем у @anonimSimen , даже не совсем понимая что в итоге и как должно работать.

хахахахх, та легче будет вторую ардуинку купить, которая стоит 1к и на нее отдельно загрузить

Ну, тогда Вам нужна не помощь, а просто “сделать за Вас”. Такое у нас практикуется в коммерческом разделе, я перенесу тему туда (тем более, что коммерческие предложения уже появились).

1 лайк

Хоть пятую. Если Вы не разбираетесь ни в схеме, ни в программе, работать нормально у Вас ничего не будет. Впрочем, дерзайте!

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

2 лайка

Это Вы не датчик(скорее всего серва?) с клавиатурой добавляете, а совершенно иной функционал. И тут помощь вида " строчку А поменять с Б" не прокатит. Ваш какашечный код проще уничтожить вместе с жёским диском, и уже на новом написать код, предварительно сформулировав алгоритм работы.

спасибо большое, хоть вы дали подсказку)

смысл вашего сообщения, поговорить?сказать, что код фигня, ливните лучше, смысл трать время

Смысл в том чтобы в голову вдолбить простую истину: хочешь уметь-учись, не хочешь-доверь тому кто умеет.

я подразумевал, что используются одни и те же пины, хотел, чтобы чуть-чуть помогли, указали где именно, ты раздул не из чего, за 15к никто не согласится, чтобы ты брался за работу, я уверен, что без таких экспертов как ты, я додумаюсь, учиться-это хорошо, но когда месяц до сессии и ты предлагаешь мне что-то учить, смешно, для общего развития обязательно буду учить

могу помочь привести ваш скетч в рабочее состояние тыщи за 3, если интересно, то пишите на fridgetester@mail.ru

И при этом

Остаётся только пожелать благополучного отчисления, чтобы не появился ещё один, прости Господи, “спицалист”.

4 лайка

хахахахахахах, какой ты добрый

увы не отчислюсь))