Почему ардуино не загружает скейтч с первого раза?

AlekSANIYder
Offline
Зарегистрирован: 20.11.2018

Помогите!Я новичек,с миру по нитки сделал скейтч градусника на d18b20 и олед дисплее в автомобиль,более менее меня все устраивало пока я включал ардуино от USB,встроил я это все в панель приборов запитав ардуино через VIN выход,и она не включается с перврго раза,а стоит на пол секунды выключить и включить питание она включается.Если опять отключить питание на несколько секунд она опять не включается!!!!Может кто поможет моему горю

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ардуина какая?

AlekSANIYder
Offline
Зарегистрирован: 20.11.2018

нано 328

AlekSANIYder
Offline
Зарегистрирован: 20.11.2018

китай

AlekSANIYder
Offline
Зарегистрирован: 20.11.2018

Если включаешь через USB она включается всегда но долго думает перед запуском

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. Долго думает - так и должно быть. Это плата за комфорт.

2. Вероятно, проблема не в самой Ардуине, а в блоке питания, к которому Вы ее подключаете.

AlekSANIYder
Offline
Зарегистрирован: 20.11.2018

Пробовал и от аккамулятора и от компьютерного блока эффект один!!!может что то я в скейтче намудрил

!!!

AlekSANIYder
Offline
Зарегистрирован: 20.11.2018
#include <OLED_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4 // номер пина к которому подключен DS18B20
#define OLED_RESET 4
 
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
OLED  myOLED(A4, A5, A4); // Подключение дисплея, 4pin - SDA , 5pin - SCL
extern uint8_t MinNumbers[]; // Подключение больших шрифтов
extern uint8_t term[];
extern uint8_t grad[];
extern uint8_t photo[];
void setup()
{
sensors.begin(); 
myOLED.begin();
myOLED.clrScr();// очищаем экран
myOLED.drawBitmap(0, 0, photo, 128, 64);
myOLED.update();
 
delay(1500);
 }
void loop()
{
// Выводим на экран показания температуры
sensors.requestTemperatures();
myOLED.clrScr(); // очищаем экран
myOLED.drawBitmap(0, 0, term, 18, 64);
myOLED.drawBitmap(106, 8, grad, 24, 48);
myOLED.setFont(MinNumbers);
myOLED.print(String(sensors.getTempCByIndex(0) , 0), RIGHT, 8 );   // Отображение значения температуры, с точностью до десятых
myOLED.update();
delay(10000);
 
}
b707
Offline
Зарегистрирован: 26.05.2017

Александер, что за фигня в скетче? - зачем вы Даллас и Дисплей к одному пину подключили? Зачем в инициализации дисплея еще один пин указан дважды? - вы что, в этом коде ни буквы не понимаете?

#define ONE_WIRE_BUS 4 // номер пина к которому подключен DS18B20
#define OLED_RESET 4
 
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
OLED  myOLED(A4, A5, A4); // Подключение дисплея, 4pin - SDA , 5pin - SCL

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

AlekSANIYder пишет:

Почему ардуино не загружает скейтч с первого раза?

Может, хочет, чтобы вежливо попросили?

AlekSANIYder
Offline
Зарегистрирован: 20.11.2018

Если честно то смутно,это первое что я делал,и вникнуть очень глубоко,самому без помощи,у меня плохо получается,поэтому я тут.:)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Так Вам для вникания нужен скетчик поменьше.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Мое мнение - это проблема DallasTemperature.h. Мутная библиотека.

AlekSANIYder
Offline
Зарегистрирован: 20.11.2018

Исправил названные ошибки,ничего не изменилось((((Кстати сегодня загрузил просто пример "График тест" и все тоже самое,также не грузит с первого раза,так что дело видимо в самой плате,буду выписывать новую!!!

Ребят а может кто нибудь подсказать,что нужно добавить в этом скейтче чтоб не отображалось показание температуры -0 или это не так просто??)))Я оставил только целые числа,но -0 мне не нравится! что показывает!!

bwn
Offline
Зарегистрирован: 25.08.2014

Раздербанить число и оставть только значащие разряды. Читаем оператор "остаток от деления", он же, символ процентика.