8

Помогите разобраться в чем проблема

Ребята помогите плиз. Есть скетч на Ардуино. Заключается в следующем: есть дальномер 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);

}

Arduino/Ардуино проекты

22 поста490 подписчиков

Правила сообщества

— Не оскорблять администрацию.

— Не оскорблять других участников.

— Не затрагивать тему политики.

— Не материться!

— Не допускаются расистские высказывания, сексизм, национализм.

— Запрещена реклама сторонних проектов, товаров, сайтов, блогов, ютуб каналов.

— Нельзя публиковать картинки и комментарии явно сексуального характера.

— Нет спаму и фишингу!

0
Автор поста оценил этот комментарий

Т.е. этот лоадер не приводит к бутлупу от вачдога и не сбрасывает флаг вачдога?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
По информации на форумах не должен
0
Автор поста оценил этот комментарий
Создай переменную bool. В начале скетча проверяй, если она равна 0, то перезагружай ( либо выходом через реле, которое на ресет нужно припаять, либо программно. Тут я хз). И после присваивай переменной 1. Больше перезагрузки не будет, до перезагрузки ардуинки.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Мне как раз перезагрузка нужна ))
0
Автор поста оценил этот комментарий

Можно в start прописать ресет

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
А как это сделать ? Можно ссылку или форум где это обсуждают ?
показать ответы
0
Автор поста оценил этот комментарий

ну а почему бы не циклиться, если вся программа начинает заново после перезагрузки?

#comment_313536637

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Перезагрузка программная , а не по питанию. На форумах пишут , что можно через пин и rest сделать, но у меня все зацикливается таким методом
0
Автор поста оценил этот комментарий

1. Поменять лоадер и использовать флаг вачдога.

2. Поставить транзистор и снимать питание с самого дальномера без перезагрузки ардуины.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Лоадер вроде норм, посмотрел у Алекс гайвера вроде, что данная модель arduino nano с новым p328
показать ответы
2
Автор поста оценил этот комментарий

Поищи среди мануалов Alexgyver. Может еще дальномер бракованный или по питанию чего-то не хватает. Или на tx rx плохо что-то запаял, может наводки.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Дальномер менял, питание 5v и тоже менял.
1
Автор поста оценил этот комментарий

я тут одну херню придумал, но она почему-то не работает, всю информацию я вам может и дам, но не сейчас, но вы все равно разберитесь

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
#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);

}

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества