wdt_enable (WDTO_500MS); // настраиваем собаку на срабатывание через 0,5 сек
Вид для печати
wdt_enable (WDTO_500MS); // настраиваем собаку на срабатывание через 0,5 сек
в loop его нужно вставлять ?
Для чего нужен wdt_reset() ?
wdt_enable (WDTO_500MS); в секции setup
wdt_reset() - это для обнуления счетчика, вставляется везде где время выполнения может превышать заданное в wdt_enable
С датчиком топлива всё решилось, считываю напрямую (раз в две секунды) без всяких фильтров и математических вычислений, при езде по прямой показывает правильно.
Образовался другой косяк, иногда зависает контроллер, связанно скорее всего с тем что провод 12Вольт (по нему измеряется напряжение бортовой сети) заходит в контроллер "напрямую" через диод и делитель, высоковольтных помех в бортовой сети хватает проверял осциллографом. Что бы избавится от помех нужен фильтр, такое подойдет ?
Вложение 18926
Что за делитель?Цитата:
заходит в контроллер "напрямую" через диод и делитель
Фильтр подойдет, но выходная емкость для контроллера очень сильно завышенаЦитата:
Что бы избавится от помех нужен фильтр, такое подойдет ?
Резистивный делитель :D
Так, а между входом в микроконтроллер и землёй нужен резистор 1 мОм, что бы при выключении питания разрядить ёмкости?диод?
Зависания скорее всего по питанию, фильтровать питание нужно
Питание вот такой стабилизатор
Вложение 18933
Посмотри тему про питание http://cyber-place.ru/showthread.php?t=2252
Помогите опознать, дисплей LCD128x64, два дня мучаюсь не могу подключить, на каком контроллере он сделан?
Хочу подключить к Mega.
Вложение 18956
Вложение 18957
На рисунке же указано S6B0108. Библиотеки KS0108 должны работать.
До меня только дошло, что нужно смотреть последние 4цифры.:D
Библиотека GLCD больше не подерживается, нашёл openGLCD, в ней пин на дисплее называется D/I, а у меня RS, не могу найти расшифровку я так понял они идентичные?
Вложение 18958
Дисплей 128х64 заработал, походу все библиотеки рассчитаны на НЕ инверсные дисплеи а я с дуру купил инверсионный дисплей, с некоторыми доработками примеры заработали. Дисплей оказался огромен, у него маленький объем полезной площади и на солнце его не видно инверсионная шляпа :D
Мои ясный взор возвращается к дисплею от нокии 5110 + ардуино мега
Купил MEGA на ATmega 2560 ( чип USB порта CH340G), на ней прекрасно работает сторожевой таймер почти идеально :rolleyes:
вот так получается, пока только меню делаю тк остальной код у меня есть.
Вложение 18968
Провел длительные испытания Бортового компьютера.
Вот список бесполезных функций которые мне не так и не пригодились
Часы (на мотоцикле есть часы)
Trip пробег одной поездки (так же есть на панели)
Давление и температура масла - мне так и не удалось нагреть масло до 100 градусов , и соответственно не нужны аварийные предупреждения по маслу.
Задержка выключения
Коррекция температуры - три позиции, из меню (при программировании задаем нужные значения)
Список всех функций
Показывать температуру - двигателя, масла, наружного воздуха, напряжение сети
Предупреждать о превышении температуры : масла, двигателя и о перезаряде или не до заряде АКБ, всплывает сообщение на дисплее и горит светодиод.
Включать и выключать вентилятор охлажения по заданной температуре через РЕЗИСТОР на 30% скорости (выключить раньше чем заложено в штатный датчик не может, что бы не вторгаться в штатную проводку)
Показывать литраж в баке в процентах или литрах, датчик в баке поплавковый собственного изготовления.
Считает пробег одной поездки, при выключении зажигания остаётся включеным на заданное время,что бы счётчик не сбрасывался. (дабы не мучить EEPROM!)
Из меню можно принудительно включить вентилятор охлаждения
В панели приборов установлена PRO MINI которая управляет восьми сегментным индикатором это датчик включенной скорости, связь с основным блоком через I2C шину
Индикатор включенной скорости снабжен блинкером, что бы не забыть переключить скорость на повышенную (дался мне тяжело, затык с таймерами)
Плюс много полезных функций, для исключения ложных срабатываний меню и устройств
Всем привет, нынче купил 4х сегментный LED модуль, подключил его, но вод беда с выводом информации,
дело в том, что функция за один вызов принимает адрес только для конкретного сегмента дисплея.
Например у меня есть показания с датчика температуры (от 0 до 99 градусов), как мне их выводить на дисплей ?
Вложение 19079Код:#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4();
int TEMP = 45; // показания датчика темпиратуры, как мне их разделить на две части и преобразовать в "строку" ?
void setup() {
alpha4.begin(0x70);
alpha4.clear();
alpha4.writeDisplay();
}
void loop() {
char Str2[8] = {'1', '2', '3', '4', '8', 'n', 'o'};
alpha4.writeDigitAscii(0, Str2[0]); // первый сегмент, зажигаем цифру 1 :)
alpha4.writeDigitAscii(1, Str2[4]); // второй сегмент, зажигаем цифру 8
alpha4.writeDigitAscii(2, TEMP); // третий сегмент , int указывать нельзя
alpha4.writeDisplay();
delay(100);
}
Индикатор 0.54" Ht16k33
Решение нашлось, этот код запускает счетчик от 0 до 99 в первом и втором сегменте индикатора, легко можно сделать и 9999
Для приведения к нормальному виду цифр 3 - 5 - 0 правим файл Adafruit_LEDBackpack.cpp в библиотекеPHP код:
#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4();
int z = 0;
void setup() {
Serial.begin(9700);
alpha4.begin(0x70);
alpha4.clear();
alpha4.writeDisplay();
}
void loop() {
int n = z++;
char* c;
c = (char *)malloc(10 * sizeof(char));
int v = 0;
while (n > 4)
{
c[v++] = (n % 10) + '0';
n = n / 10;
}
c[v++] = n + '0';
if (c[1] == '0' || c[1] == 0) { // убираем глюк когда первая цифра ноль
alpha4.writeDigitRaw(0, 0x0); // убираем первый ноль
}
else {
alpha4.writeDigitAscii(0, c[1]); // первый сегмент
}
alpha4.writeDigitAscii(1, c[0]); // второй сегмент
alpha4.writeDisplay();
free(c);
if (z > 99) z = 0;
delay(100);
}
Код:0b0000000000111111, // 0
0b0000000011001111, // 3
0b0000000011101101, // 5
независимо начал делать свой БК и тут наткнулся на эту тему, ну и возникло несколько вопросов
1. датчик топлива через для стабилизации показаний через RC-цепь подключили?
2. стабильность работы/зависания от помех из бортовой сети ?
3. защита схемы питания от помех на конденсаторе?
4. датчик скорости на таймере насколько точно работает?
5. по какому принципу меню реализовали?
ну и ещё чтобы голову поломали предложение :) если есть контроль пробега,то почему бы не добавить релейный выход на управление скоттойлером(автосмазчик цепи) с несколькими режимами работы (трасса/город/дождь/грязь/МОНГОЛИЯ)