#include <LiquidCrystal_I2C.h>
#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
byte mac_addr[] = { 0x10, 0x6f, 0xd9, 0xb0, 0x95, 0x2f };
IPAddress server_addr{192,168,1,5}; // IP of the MySQL *server* here
char user[] = "HOME-PC"; // MySQL user login username
char password[] = "null"; // MySQL user login password
// УУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУДДДДДДДААААААААААЛЛЛЛЛЛЛЛИИИИИИИИИИ
char query[] = "SELECT population FROM world.city WHERE name = 'New York'";
char INSERT_SQL[] = "SELECT name, population FROM world.city WHERE population > %lu ORDER BY population DESC;";
EthernetClient client;
MySQL_Connection conn((Client *)&client);
// Create an instance of the cursor passing in the connection
MySQL_Cursor cur = MySQL_Cursor(&conn);
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int ECHO_PIN1 = 3; // Подключение вывода Echo первого ультразвукового датчика к пину 2
const int TRIGGER_PIN1 = 2; // Подключение вывода Trig первого ультразвукового датчика к пину 3
const int ECHO_PIN2 = 5; // Подключение вывода Echo второго ультразвукового датчика к пину 4
const int TRIGGER_PIN2 = 4; // Подключение вывода Trig второго ультразвукового датчика к пину 5
float Length; // Длина объекта
float count = 0; // Счётчик времени движения предмета до второго датчика
float timed1 = 0; // Время активации первого датчика
float trigrange = 30; // расстояние в см с которого будут активны датчики
int k=0;
void setup() {
Serial.begin(14400); // Инициализация порта для вывода данных
pinMode(TRIGGER_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIGGER_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print ("object length:");
}
void loop() {
k++;
// Считаем расстояние с ультразвукового датчика
float duration1, distance1;
digitalWrite(TRIGGER_PIN1, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN1, HIGH);
delayMicroseconds(20);
digitalWrite(TRIGGER_PIN1, LOW);
duration1 = pulseIn(ECHO_PIN1, HIGH);
distance1 = duration1 * 0.0343 / 2.0;
float duration2, distance2;
digitalWrite(TRIGGER_PIN2, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN2, HIGH);
delayMicroseconds(20);
digitalWrite(TRIGGER_PIN2, LOW);
duration2 = pulseIn(ECHO_PIN2, HIGH);
distance2 = duration2 * 0.0343 / 2.0;
lcd.setCursor(0, 1);
lcd.print(Length);
lcd.print("cm");
// Проверяем если объект попал в поле действия датчика
if (distance1 < trigrange){
delay(1);
timed1++;
if (distance2 > trigrange){
count++;
}}
if ((distance1 > trigrange) & (distance2 < trigrange)){
Length = ((15/ count) * timed1);
}
// Если объект не проходит через датчики, то значение времени обнуляется
if ((distance1 > trigrange) & (distance2 > trigrange) & (k>=100)){
count = 0;
timed1 = 0;
//Небольшая задержка между чтением данных
delay(1);
}