Помогите разобраться в чем проблема
Ребята помогите плиз. Есть скетч на Ардуино. Заключается в следующем: есть дальномер us100 работающий по uart. Но при включении питания он не показывает верные данные (расстояние), если расстояние от стены до датчика больше 30 см.
Его ребутить на кнопку reset нужно, чтобы он показывал верные значения, либо чтобы расстояние перед ним было меньше 30 см.
Как сделать одну перезагрузку при включении питания? У меня либо зацикливается и перезагружается постоянно, либо не работает совсем перезагрузка (((
Спасибо всем заранее !
Выкладываю код:
#include <SoftwareSerial.h>
#include <U8g2lib.h>
#define RX_PIN 2
#define TX_PIN 3
#define RX_PIN_2 7
#define TX_PIN_2 6
#define LED_RED_PIN 9
#define LED_GREEN_PIN 10
#define LED_BLUE_PIN 11
U8G2_SSD1306_128X64_NONAME_F_HW_I2C display(U8G2_R0);
int distance = 0;
int initial_distance = 0;
SoftwareSerial us100(RX_PIN, TX_PIN);
void setup() {
Serial.begin(9600);
us100.begin(9600);
pinMode(LED_RED_PIN, OUTPUT);
pinMode(LED_GREEN_PIN, OUTPUT);
pinMode(LED_BLUE_PIN, OUTPUT);
display.begin();
display.clearBuffer();
display.setFont(u8g2_font_ncenB08_tr);
display.setCursor(0, 10);
display.print("Distance:");
display.sendBuffer();
}
void loop() {
delay(100);
us100.write(0x55);
delay(50);
while (us100.available() < 2) {}
byte highByte = us100.read();
byte lowByte = us100.read();
int inches = highByte * 256 + lowByte;
if (initial_distance == 0) {
initial_distance = inches;
}
distance = inches - initial_distance;
display.clearBuffer();
display.setCursor(0, 30);
display.print(distance);
display.sendBuffer();
if (distance >= -500) {
analogWrite(LED_RED_PIN, 255); // включаем красный цвет
analogWrite(LED_GREEN_PIN, 0); // выключаем зеленый цвет
analogWrite(LED_BLUE_PIN, 0); // выключаем синий цвет
} else {
analogWrite(LED_RED_PIN, 0); // выключаем красный цвет
analogWrite(LED_GREEN_PIN, 255); // включаем зеленый цвет
analogWrite(LED_BLUE_PIN, 0); // выключаем синий цвет
}
Serial.write(highByte);
Serial.write(lowByte);
}