Счётчик количества людей в комнате в данный момент времени

Датчик использовать для понимания “входа” и “выхода человека”. Т.е. замеры через 0,3 секунды если человек появляется в поле зрения и приближается к датчику, то это +1. Если же он появляется у некоторой “минимальной” границы поля зрения, а потом уходит за “макимальную” то это -1.
Так получится сразу и подсчет сколько в данный момент людей внутри

#define PIN_ECHO 2
#include<LiquidCrystal.h>
// Есть идея добавить звук, чтобы, когда заходил человек, был звуковой сигнал //
int kolichestvo=0;
int rasstoyanie,cm;
LiquidCrystal lcd(12, 11, 5, 4, 9, 10);
bool diapozon;
int count=5; // Учитель задаёт макс. кол-во студентов 
void setup()
{
Serial.begin (9600);
lcd.begin(16, 2); 
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);

}
void loop()
{
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
rasstoyanie = pulseIn(PIN_ECHO, HIGH);
cm = (rasstoyanie / 2) / 29.1;
if (cm <=320)
{ diapozon = true; }
else
{ diapozon = false; }
if (diapozon == true)
{ lcd.setCursor(0,0);          
  lcd.print(kolichestvo); 
  kolichestvo++; 
  analogWrite(6, 255);
   
}
else
{   analogWrite(6, 0);}
delay(1500);
if (kolichestvo == count)
{ lcd.setCursor(0,0);
  lcd.clear();
  lcd.print("Max studentov!");
  delay(2500);
  kolichestvo = 0;
}
  lcd.clear();
}

Не получится. Так можно уточек на конвейере считать. Люди более сложный объект. Они парами могут ходить, зайти развернуться и уйти и много чего ещё.

1 лайк

Тут именно смысл в том, что заходит один человек. Как только он выходит, его должны убирать из подсчета

from YOLOv7 import YOLO

classes = YOLO.detect("cameraimg.jpg")
print(classes["person"])

3

mask

1 лайк

МДА, жестокий скетч )))

И что? Это учебный материал для нас, чтобы мы учились? Спасибо!

Попробовал запустить, чтобы изучить. Чёта компилятор обругался, не подскажете, что не так?

Ругань
...\kaka2.ino: In function 'void setup()':
kaka2:13:11: error: 'PIN_TRIG' was not declared in this scope
   pinMode(PIN_TRIG, OUTPUT);
           ^~~~~~~~
...\kaka2\kaka2.ino:13:11: note: suggested alternative: 'PIN_A3'
   pinMode(PIN_TRIG, OUTPUT);
           ^~~~~~~~
           PIN_A3
D:\GoogleD\Soft\Kaka\kaka2\kaka2.ino: In function 'void loop()':
kaka2:19:16: error: 'PIN_TRIG' was not declared in this scope
   digitalWrite(PIN_TRIG, LOW);
                ^~~~~~~~
...\kaka2\kaka2.ino:19:16: note: suggested alternative: 'PIN_A3'
   digitalWrite(PIN_TRIG, LOW);
                ^~~~~~~~
                PIN_A3
'PIN_TRIG' was not declared in this scope
1 лайк

Блин, а у меня по другому ругается. ((
Это же надо - какой талантливый код!!! ))

Ругань 2

C:\Users\1\AppData\Local\Temp\arduino_modified_sketch_366851\sketch_dec22a.ino: In function 'void setup()':
sketch_dec22a:13:9: error: 'PIN_TRIG' was not declared in this scope
 pinMode(PIN_TRIG, OUTPUT);
         ^~~~~~~~
C:\Users\1\AppData\Local\Temp\arduino_modified_sketch_366851\sketch_dec22a.ino:13:9: note: suggested alternative: 'PIN_PD7'
 pinMode(PIN_TRIG, OUTPUT);
         ^~~~~~~~
         PIN_PD7
C:\Users\1\AppData\Local\Temp\arduino_modified_sketch_366851\sketch_dec22a.ino: In function 'void loop()':
sketch_dec22a:19:14: error: 'PIN_TRIG' was not declared in this scope
 digitalWrite(PIN_TRIG, LOW);
              ^~~~~~~~
C:\Users\1\AppData\Local\Temp\arduino_modified_sketch_366851\sketch_dec22a.ino:19:14: note: suggested alternative: 'PIN_PD7'
 digitalWrite(PIN_TRIG, LOW);
              ^~~~~~~~
              PIN_PD7
exit status 1
'PIN_TRIG' was not declared in this scope

Сорян, случайно 3 переменных не прикрепились сюда.
Вот полный скетч

#define PIN_TRIGvhod 3
#define PIN_ECHOvhod 2
#define PIN_TRIGvihod 13
#define PIN_ECHOvihod 8
#include<LiquidCrystal.h>
// Есть идея добавить звук, чтобы, когда заходил человек, был звуковой сигнал //
int kolichestvo=0;
int rasstoyanie,cm;
int minrange = 50;
int maxrange = 250;
LiquidCrystal lcd(12, 11, 5, 4, 9, 10);
bool diapozon;
int count=5; // Учитель задаёт макс. кол-во студентов 
void setup()
{
Serial.begin (9600);
lcd.begin(16, 2); 
pinMode(PIN_TRIGvhod, OUTPUT);
pinMode(PIN_ECHOvihod, INPUT);
pinMode(PIN_TRIGvihod, OUTPUT);
pinMode(PIN_ECHOvhod, INPUT);
}
void loop()
{
digitalWrite(PIN_TRIGvhod, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIGvhod, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIGvhod, LOW);
rasstoyanie = pulseIn(PIN_ECHOvhod, HIGH);
cm = (rasstoyanie / 2) / 29.1;
if (cm < maxrange & cm > minrange) 
{ diapozon = true; }
else
{ diapozon = false; }
if (diapozon == true)
{ lcd.setCursor(0,0);   
  kolichestvo++; 
  lcd.print(kolichestvo); 
  analogWrite(6, 255);
   
}
else
{   analogWrite(6, 0);}
delay(1500);
if (kolichestvo == count)
{ lcd.setCursor(0,0);
  lcd.clear();
  lcd.print("Max studentov!");
  delay(2500);
  kolichestvo = 0;
}
if (cm>0)
{digitalWrite(PIN_TRIGvihod, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIGvihod, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIGvihod, LOW);
rasstoyanie = pulseIn(PIN_ECHOvihod, HIGH);
cm = (rasstoyanie / 2) / 29.1;
if (cm < maxrange & cm > minrange) 
{ lcd.setCursor(0,0);   
  kolichestvo--; 
  lcd.print(kolichestvo); }
}
}

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

Придумал, как реализовать это с 2 датчиками:
Срабатывает 1 датчик на вход .
Происходит задержка 5 секунд.
Второй датчик не успевает сработать.
Срабатывает датчик 2 на выход
Происходит задержка 5 секунд.
Первый датчик не успевает сработать.

#define PIN_TRIGvhod 3
#define PIN_ECHOvhod 2
#define PIN_TRIGvihod 13
#define PIN_ECHOvihod 8
#include<LiquidCrystal.h>
// Есть идея добавить звук, чтобы, когда заходил человек, был звуковой сигнал //
int kolichestvo=0;
int rasstoyanie,cm;
int minrange = 50;
int maxrange = 250;
LiquidCrystal lcd(12, 11, 5, 4, 9, 10);
bool diapozon;
int count=5; // Учитель задаёт макс. кол-во студентов 
void setup()
{
Serial.begin (9600);
lcd.begin(16, 2); 
pinMode(PIN_TRIGvhod, OUTPUT);
pinMode(PIN_ECHOvihod, INPUT);
pinMode(PIN_TRIGvihod, OUTPUT);
pinMode(PIN_ECHOvhod, INPUT);
}
void loop()
{
digitalWrite(PIN_TRIGvhod, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIGvhod, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIGvhod, LOW);
rasstoyanie = pulseIn(PIN_ECHOvhod, HIGH);
cm = (rasstoyanie / 2) / 29.1;
if (cm < maxrange & cm > minrange) 
{ diapozon = true; }
else
{ diapozon = false; }
if (diapozon == true)
{ lcd.setCursor(0,0);   
  kolichestvo++; 
  lcd.print(kolichestvo); 
  analogWrite(6, 255);
   
}
else
{   analogWrite(6, 0);}
delay(4000);
if (kolichestvo == count)
{ lcd.setCursor(0,0);
  lcd.clear();
  lcd.print("Max studentov!");
  delay(2500);
  kolichestvo = 0;
}
if (cm>0)
{digitalWrite(PIN_TRIGvihod, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIGvihod, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIGvihod, LOW);
rasstoyanie = pulseIn(PIN_ECHOvihod, HIGH);
cm = (rasstoyanie / 2) / 29.1;
if (cm < maxrange & cm > minrange) 
{ lcd.setCursor(0,0);   
  kolichestvo--; 
  lcd.print(kolichestvo);
  delay ( 5000) ; }
}
}

На старом форуме была тема подсчёта вошедших вышедших. Там всё подробно обсудили. Читали? Или каждый должен сам на свои грабли наступить?

кто-то даже умудрился такие девайсы в сетевой магазин продать, монтировали как-то