Работа с несколькими датчиками HC-SR04

Добрый день, я постигаю азы программирования на этой чудесной платформе и впервые написал что то более менее серьезное. Наверняка вы как продвинутые в этом плане люди увидете кучу ошибок или проблем в моем творении, кинте тапком что я сделал по вашему мнению не так, но пожалуйста, с обоснованием или хотябы с небольшим пояснением как нужно.
Если кратко что это такое, мне нужно подключить несколько датчиков расстояния ультразвуковых и опрашивать их по очереди, если значение расстояния превышает порог (допустим 50см), то записать это, и после опроса всех датчиков (планируеться от 2 до 8) в вебку вывести число датчиков что превысили его.

#include <NewPing.h>                                 
#include <SPI.h>
#include <Ethernet.h>


#define SONAR_NUM 2                                  // количество сенсоров.
#define MAX_DISTANCE 500                             // Maximum distance (in cm) to ping.
#define ena1 30                                      //trigger for 1
#define ena2 30                                      //trigger for 2
const int ID = 1;                                    // номер платы
int activatedSensors = 0;                            // установка переменной
const int sensorPins[SONAR_NUM] = {ena1, ena2};
long sensors[SONAR_NUM];                             //array to store sensor distances 

byte mac[] = { 0xFA, 0xFA, 0x01, 0x00, 0x01, 0x71 }; // Мак-адрес Ethernet
IPAddress ip(192, 168, 1, 101);                      // IP-адрес Arduino
byte gateway[] = { 192, 168, 1, 1 };                 // IP-адрес шлюза
byte subnet[] = { 255, 255, 255, 0 };                // Маска подсети

EthernetServer server(80);

NewPing sonar[SONAR_NUM] = {                         // Sensor object array.
  NewPing(4, 5, MAX_DISTANCE),                       // Each sensor's trigger pin, echo pin, and max distance to ping. 
  NewPing(6, 7, MAX_DISTANCE), 

};

void setup() {
pinMode(ena1, OUTPUT);
pinMode(ena2, OUTPUT);
Ethernet.begin(mac, ip, gateway, subnet);           // start the Ethernet connection and the server:
server.begin();                                     // start the server
}

void loop() {

 for (uint8_t i = 0; i < SONAR_NUM; i++) {          // Loop through each sensor and display results.
    delay(50);                                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
    sensors[i] = sonar[i].ping_cm(); 
  }

  
  if (sensors[0] > 0 && sensors[0] <= MAX_DISTANCE){
 
  digitalWrite(ena1, HIGH);
  }else{
  digitalWrite(ena1,LOW);
  }
 {
  activatedSensors = 0;
  for (int i = 0; i < SONAR_NUM; i++) {
    int sensorReading = digitalRead(sensorPins[i]);
      if (sensorPins[i] == HIGH) {
        activatedSensors++;
      }
    }
  }
  
  EthernetClient client = server.available();     // выводим вебстраницу

  if (client) {
    bool currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println("Refresh: 1");
          client.println("Access-Control-Allow-Origin: *");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<head>");
          client.println("<title>");
          client.println("ID: " + String(ID));
          client.println("</title>");
          client.println("</head>");
          client.println("<body>");
          client.println("ID: " + String(ID));
          client.println("Busy Parks: " + String(activatedSensors) + " of " + String(SONAR_NUM));    // Вывод активированных датчиков
          client.println("</body>");
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        } else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
  }
   delay(1000);                                                             // Пауза между обновлениями в миллисекундах
  
 }

Т.е. никаких проблем с этим кодом у Вас нет, Вам просто хочется, чтобы Вас похвалили. Я правильно понял?

нет, не похвалили, скажите что я по вашему мнению сделал не так , или где я сделал хрень.

Т.е. питание на датчики не подаётся вовсе, просто их пины Vcc соединены между собой? Всё так?

Оригинальное решение!

И как? Работает?

Если Вы зададите вопрос, я (или другие) постараюсь на него ответить, а так … не вижу смысла что-то говорить, тем более, когда сразу же ставят условия, что мол говорить надо не как попало, а только

Хрен Вас знает, что Вы называете обоснованием. Практика же показывает, что “что ни скажи - всё не слава Богу”.

не дорисовал проводок на схеме извиняюсь, невнимателен. конечно датчикам питание подаеться с пина 5в МК
я открыт к любой критике, она деалет процесс обучения более результативным

имееться ввиду что легко написать, “ты сделал хрень” я же прошу указать хотябы где конкретно
например тут можно по другому или тут неправильно что то использовал

Началось, в колхозе утро!

Слушайте, Ardrunya, может Вам залогиниться под своим именем?

простите, я вас не понял.

интересно, а если выводы ECHO со всех датчиков посадить на один пин ардуино, будет работать?

По идее схема ИЛИ получиться. Если каждый Эхо через резистор. Хотя не.

думал об этом, поставить диод на каждый датчик и соединить пины, и дергать тригом их по очереди, но это если потребуеться более 4 штук например, пока пинов хватает посчитал это необоснованым усложнением схемы

Можно фото в студию этих модулей? Именно их, а не из тырнета. Заднюю сторону.

тут все про модули что я ипользую Arduino Ultrasonic Sensor Module Tutorial - How Ultasonic Module Works and Interfacing it with Arduino

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

Какие-то навороченные. Непонятно только есть i2c и меняется ли адрес. Видимо нет.
В простом режиме можно применить сдвиговый регистр. Будет 8 датчиков.

i2c нет в них, только пин на RX (запуск измерения), и ответ на TX

Конечно, вы правы. Эта схема будет толко завтра мной собрана и включена, (датчики задерживаються в доставке), завтра все соберу и дополню пост, понял свою ошибку о публикации без конкретной проблемы походу на форумы не пишут


исправляю свою грубую ошибку

а предупреждения не смущают?
а также строки 8 и 9 и всё что с ними связано