Re: Бортовой компьютер мотоцикла
	
	
		Oleg_33, если захочется кому то потом показать, то лучше этого не делать
	Цитата:
	
		
		
			RELAY_CURENT, flag_FAN_CYRENT, FUELPOMP_RELAY__DIGITAL_PIN, LOW_COLING_FAN, GEAR_NEITRAL__DIGITAL_PIN
			
		
	
 Блин, неужто так сложно словарик открыть и посмотреть как пишется правильно? Тем более, что сейчас словари онлайн.
Зачем писать вот так
	Цитата:
	
		
		
			#define LED_ERROR__DIGITAL_PIN 13 
#define FUEL_LEVEL__ANALOG_PIN 0
			
		
	
 Когда можно писать более кратко так
	Цитата:
	
		
		
			#define LED_ERROR_PIN 13 
#define FUEL_LEVEL_APIN 0
			
		
	
 ?
Если по файлам разносить не будешь, то скоро запутаешься. Arduino IDE хуже блокнота.
P.S. Я не профессиональный программист, но от такого кода шерсть шевелится.
	 
	
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		Да действительно о чем я думал, контролер ошибки проверяет в длииинных названиях временных!! "переменных", тратит процессорное время на перевод ... а у меня не оригинальный ардуино, он понимает даже с акцентом!
Запутаться в собственном коде это нонсенс, ну если кроме ошибок в четырёх словах сказать нечего ... !
	 
	
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		Кто подскажет как считывать температуру с двух датчиков DS18B20 ?
На температуру двигателя хотел подключить резистивный датчик от автозапуска, да характеристика подкачала  не линейная она и на разных датчиках отличается (не говоря уж о муках преобразования АЦП в температуру), чем грозит замена неисправного датчика думаю понятно :eek:
	 
	
	
		Вложений: 1
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		Внешнее прерывание эмуляция.
Для входа прерываний использую Pin 0 (RX). Pin 7 у меня почему-то не работает на прерывание, на Pin 2 и 3 вешать нельзя на них шина I2C и она мне нужна.
Для заливки скетча отключаем Pin 0 от схемы.
Эмулятором сигнала прерывания является Pin 13.
В режиме FALLING  подключаем вот так.
Вложение 18430
Видео:http://youtu.be/QZFZSx0Q_XU
Замучился снимать этот дисплей, пришлось без подсветки, он засвечивает камеру ...
	PHP код:
	
#include <TimerOne.h> 
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
volatile int state = !LOW;
volatile int in = 0;
volatile long time, time1; 
LiquidCrystal_I2C lcd(0x27,16,2);
//Плата             int.0   int.1    int.2    int.3    int.4
//UNO, Ethernet-Pin    2    3                    
//Leonardo-Pin      3    2    [0]    [1]    7
void setup()
{
  pinMode(13, OUTPUT);
  Timer1.initialize(100000); // Эмитируем внешний сигнал.
  Timer1.attachInterrupt(blinkLED);
  
  attachInterrupt(2, Interrupt_Func, FALLING); // Прерывание 0 пин
}
 
void loop(){
  lcd.init();
  lcd.backlight();
  lcd.print(in);
}
 
void Interrupt_Func(){
  in+=1;
}
void blinkLED(){
  state = !state;
  digitalWrite(13, state); 
} 
 
	 
	
	
		Вложений: 1
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		Добил схему, так выглядит по интереснее. Провода без прямых линий и углов (нарисованных про принципу кривых Безье) это внешние провода, они покидают блок с МК... а может и не покидают :),в общем схема наглядная для общего понимания происходящего.
Печатную плату делать не буду, тк напрочь отсутствует возможность добавить, что-либо, поэтому исходник Fritzing`a пока не выкладываю.
Вложение 18443
	 
	
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		Прирывания не работают на других пинах потому что ты используешь библиотеку TimerOne которая заточена на использование системного 16разрядного таймера (Timer1) который завязан аппаратно на пины 2 и 3 Для использования других пинов пользуй стандартные команды (почитай здесь) библиотека полезна в случае если нужно за действовать мощный 16 разрядный таймер, например ШИМ с высокой тактовой частотой до 1023 итд... А в твоем случае можно обойтись стандартными опираторами оброботки прирываний.
	 
	
	
		Вложений: 1
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		да, спасибо.
Не работает только пин 7 на прерывание, я уже исключил эту библиотеку.
Дело идёт потихоньку, застрял на таймере выключении микроконтроллера и защите аналогового входа (по нему измеряется напряжение)
Вот изобрел :) схему, ребята помогли с форума Паяльника, схему  не пробовал ещё.
Вложение 18469
	 
	
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		А что этот вход который ты защищаешь будет делать? Замер бортового питания? А какая проблема с таймером? Выложи последний код.
	 
	
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		Да верно с аналогового входа будет мерится напряжение, желательно защитить его от высоковольтных всплесков и прочих гадостей мотоциклетной ботр.сети.
С таймером всё хорошо, не могу дойти до магазина и купить детальки ... напомню он нужен, что бы записать в EPPROM данные при отключении питания.
Кодом уже месяц не занимался, он такой же как на 8 странице форума.
Единственное адаптировал пример для записи больших чисел в EPRROM.
	Код:
	
#include <EEPROM.h> 
#define UBOUND_EEPROM_ARRAY 9
int EEPROM_DATA[UBOUND_EEPROM_ARRAY] = {88,110,120,25,12000,6000,1000,20,20}; 
/*
0 - вентилятор отключение, 
1 - вентилятор включение 
2 - перегрев
3 - по температуре окр. воздуха
4 - TO2
5 - TO1 
6 - Chain
7 - коррекция ТОВ
8 - коррекция ТД
*/
int Expon[UBOUND_EEPROM_ARRAY] = {2,4,6,8,10,12,14,16,18};
void setup(){ 
  Serial.begin(9600);
  for (int i = 0; i <= (UBOUND_EEPROM_ARRAY - 1); i++)eeprom_write(EEPROM_DATA[i], Expon[i]);
} 
void loop(){ 
  for (int i = 0; i <= UBOUND_EEPROM_ARRAY - 1; i++)  Serial.println(eeprom_read(Expon[i]));  
  delay(1000);
}
unsigned int eeprom_read(int cell)//чтение из еепром 
{ 
  unsigned int res=0; 
  res=(EEPROM.read(cell)<<8)|EEPROM.read(cell-1);
  return res; 
} 
void eeprom_write(unsigned int val, int cell)//запись в еепром 
{ 
  EEPROM.write(cell - 1, (val & 0xFF)); //пишем младший байт 
  EEPROM.write(cell, ((val & 0xFF00) >> 8));//пишем старший байт 
}
 [
	 
	
	
	
		Re: Бортовой компьютер мотоцикла
	
	
		как-то непонятно. по схеме получается, что при включении зажигания идет питание на dc. что мешает запитать напрямую от 15 клеммы без оптопары и транзистора? для защиты АЦП входа неплохо бы минимум стабилитрон параллельно конденсатору C2. и еще защитный диод по входу до делителя. учти, что напряжение на vd1 повлияет на показания, это надо учесть программно. по питанию тоже не помешает диод и конденсторы.