Что у меня выходит для
arduino Nano v3
Уж насколько ненавижу "теоретическое" программирование... Устройства у меня нет, потому исхожу из предположений и документации.
Как я понял, в arduino сидит переходник USB-COM, и компьютер определяет устройство именно как "нечто на ком-порту". Также я понял, что если мы хотим использовать связь с компьютером, у нас пропадают цифровые входы-выходы D0 и D1.
У Carduino Nano цифровых входов маловато, потому отказываемся от индикации "Check Engine" и передачи трансмиссии. Увы.
Подключение аналоговых датчиков (см. схемы п.1 первого поста):
A0 - спидометр;
A1 - тахометр;
A2 - охлаждающая жидкость;
A3 - уровень топлива;
A4 - АКБ
A5 -
[в программе не отображается, но прием налажен]
Подключение дискретных цепей:
D2 - водительская дверь;
D3 - задняя левая дверь;
D4 - передняя правая дверь;
D5 - задняя правая дверь;
D6 - левый поворотник;
D7 - правый поворотник;
D8 - аварийка;
D9 - габариты/ближний свет;
D10 - ручной тормоз;
D11 - масло;
D12 - тормоза;
D13 - дальний свет.
Программа для arduino следующая:
Код:
// Массив значений по портам
char resultInput[8];
void setup()
{
char i;
// Обнуление массива значений
for(i=0; i<8; i++)
{
resultInput[i]=0;
}
// Инициализация цифровых портов
for(i=2; i<14; i++)
{
pinMode(i,INPUT);
}
// Инициализация порта
Serial.begin(9600);
}
void loop()
{
// Сбор данных по шести АЦП, диапазон значений [0, 255]
for(char i=0; i<6; i++)
{
resultInput[i]=analogRead(i)/4;
}
// Перевод состояний на цифровых входах в общее число
resultInput[6] = digitalRead(2) +
digitalRead(3)*2 +
digitalRead(4)*4 +
digitalRead(5)*8 +
digitalRead(6)*16 +
digitalRead(7)*32 +
digitalRead(8)*64;
resultInput[7] = digitalRead(9) +
digitalRead(10)*2 +
digitalRead(11)*4 +
digitalRead(12)*8 +
digitalRead(13)*16;
// Если на порт что-то пришло
if (Serial.available()>0)
{
int command = Serial.read();
// Команда - вывести значение одного из портов
if (command<=8)
{
Serial.print(resultInput[command-1])
}
// Если команда - вывести все сразу
else if (command==15)
{
Serial.print(resultInput);
}
}
}
Если программа и мои предположения верны, то в написанной мной приборке будут показываться подаваемые на arduino значения.