Wpis z mikrobloga

#elektronika #arduino #programowanie #esp32

Jak zrobić odczyt odległości co zadany czas i wysyłać go na Serial? 100 ms to zdecydowanie zbyt często.
Chciałbym co np. minutę.
Mam czujnik ultradźwiękowy A02YYUW
https://wiki.dfrobot.com/_A02YYUW_Waterproof_Ultrasonic_Sensor_SKU_SEN0311
Ktoś jest w stanie pomóc?

Kod:

_#include _

_SoftwareSerial mySerial(11,10); // RX, TX_
_unsigned char data[4]={};_
_float distance;_

_void setup()_
_{
Serial.begin(57600);
mySerial.begin(9600);
}_

_void loop()_
_{
do{
for(int i=0;i<4;i++)
{
data[i]=mySerial.read();
}
}while(mySerial.read()==0xff);

mySerial.flush();

if(data[0]==0xff)
{
int sum;
sum=(data[0]+data[1]+data[2])&0x00FF;
if(sum==data[3])
{
distance=(data[1]<<8)+data[2];
if(distance>30)
{
Serial.print("distance=");
Serial.print(distance/10);
Serial.println("cm");
}else
{
Serial.println("Below the lower limit");
}
}else Serial.println("ERROR");
}
delay(100);_
_}_
PieknyWojciech - #elektronika #arduino #programowanie #esp32 

Jak zrobić odczyt od...

źródło: comment_1635281977QdcYKWnZCqs3KdEbuAL4GX.jpg

Pobierz
  • 14
do{

for(int i=0;i<4;i++)

{

data[i]=mySerial.read();

}

}while(mySerial.read()==0xff);


@PieknyWojciech wysyłasz coś na początku pracy programu? Z tego co rozumiem to tutaj czeka na odebranie wartosci, może tego etapu nie przechodzi.
@Dioddy: czujnik z tego co rozumiem cyklicznie wysyła dane na Serial2 co 100 ms. Kod jest niemal 1:1 z tym co podałem wyżej - akurat używam ESP stąd nie ma tylko softwarowego Serial do odbierania danych.
Odbieram dane, przetwarzam je, wysyłam na Seria - całość co 100 ms. Chciałbym jakoś zmniejszyć tą częstotliwość.
@PieknyWojciech: zmiana wartości w delay powinna działać, możesz równiez sprobować wykonać te oczekiwanie w petli ileś razy co powinno zadzialac tak samo jak bezposrednia zmiana czasu. Przykładowa petla:
for (int i=0;i<600;i++)
{ delay(100);
}