Есть датчик расстояний TF mini plus
который определяет расстояние до 12м.
Есть для него стандартный рабочий код:
плата ESP8266 WeMos mini
SoftwareSerial swSer(2,3);
const int HEADER=0x59;
....
if (swSer.available())
{
if (swSer.read()==HEADER)
{
uart[0]=HEADER;
if (swSer.read()==HEADER)
{
uart[1]=HEADER;
for(i=2;i<9;i++)
{
uart=swSer.read();
}
check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7];
if (uart[8]==(check&0xff))
{
dist=uart[2]+uart[3]*256;
strength=uart[4]+uart[5]*256;
...
Serial.print("Distance= ");
Serial.print(dist);
Serial.print('\t');
Serial.print("Strength= ");
Serial.print(strength);
Serial.print('\n');
delay(50);
Как правильно реализовать этот код в программе FlProg ? или может просто вписать его после компиляции?
Полный тестовый скетч:
Определяем расстояние, и если оно меньше 1 м, то включается pin 'foto"
#include <SoftwareSerial.h>
#define BAUD_RATE 115200
SoftwareSerial swSer(2,3);
int uart[9];
int dist;
int strength;
int check;
int i;
const int HEADER=0x59;
int minimum;
int maximum;
int a;
int b;
int foto = 0;
void setup() {
pinMode(foto, OUTPUT);
Serial.begin(115200);
minimum = 0;
maximum = 100;
// Подключаем СофтСериал
swSer.begin(115200);
Serial.println("\nSoftware serial test started");
}
void loop() {
if (swSer.available())
{
if (swSer.read()==HEADER)
{
uart[0]=HEADER;
if (swSer.read()==HEADER)
{
uart[1]=HEADER;
for(i=2;i<9;i++)
{
uart=swSer.read();
}
check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7];
if (uart[8]==(check&0xff))
{
dist=uart[2]+uart[3]*256;
strength=uart[4]+uart[5]*256;
if (dist < minimum or dist > maximum){
Serial.println("ALARM");
digitalWrite(foto,HIGH);
}
else{
digitalWrite(foto,LOW);
Serial.print("Distance= ");
Serial.print(dist);
Serial.print('\t');
Serial.print("Strength= ");
Serial.print(strength);
Serial.print('\n');
delay(50);
}
}
}
}
}
}