Вечером делать было нечего, голова была забито своими мыслями. И вдруг ко мне обратился мой товарищ: "Адель, ты же шаришь в ардуино, помоги"
Сказать что я шарю в Ардуино это прям преувеличение всего и вся, я просто сталкивался с этим и могу погуглить и собрать скетч в кучку. Товарищ обратился, а значит надо помочь.
Лямбда NGK OZA624-E1 простая сама по себе простая, идет 1 провод с нее и без подогрева. показания тоже идут простые от 0 до 1 В идет на ЭБУ.
Выход три светодиода по значениям 0.4, 0.5, 0.6 В
Предположил что все просто.
Объявляем пин под которым будет вход:
int sensorPin = A0 ; // вход лямбдыОбъявляем пины под светодиоды:
int inPin2 = 2; //подключение к пину 2Объявляем переменную для хранения значения:
int inPin3 = 3; //подключение к пину 3
int inPin4 = 4; //подключение к пину 4
int sensorValue = 0.0;Теперь надо вызывать функцию определения setup и расписать кому что делать:
void setup() {а теперь запускаем функцию loop - петля, она так и несет смысл в себе, выполнять код программы по кругу:
pinMode(inPin2, OUTPUT); // Устанавливает цифровой вывод 2 в качестве светодиода менее 0,4 pinMode(inPin3, OUTPUT); // Устанавливает цифровой вывод 3 в качестве светодиода 0,4 < X < 0.6 pinMode(inPin4, OUTPUT); // Устанавливает цифровой вывод 4 в качестве светодиода более 0,6
}
void loop()
{
sensorValue = analogRead(sensorPin); ; //читаем лямбду
if (sensorValue >= 122)
{
digitalWrite(2, HIGH); // зажигаем светодиод более менее 0,4
digitalWrite(3, HIGH); // зажигаем светодиод 0,4 < X < 0.6
digitalWrite(4, HIGH); // зажигаем светодиод более 0,6
}
else if (sensorValue > 102)
{
digitalWrite(2, HIGH); // зажигаем светодиод более менее 0,4
digitalWrite(3, HIGH); // зажигаем светодиод 0,4 < X < 0.6
}
else if (sensorValue > 82)
{
digitalWrite(2, HIGH); // зажигаем светодиод более менее 0,4
}
delay (100) ;
}
Значение 122, 102 и 82
analogRead - это оператор чтения данных из указанного аналогового входа. Оператор преобразовывает входящее напряжение от 0 до 5 вольт в целые значения от 0 до 1023. 5В = 1024 (ну или 1 единица значения равна 0,0049В) пересчитываем наши значения и получаем
0.4 ~ 82
0.5 ~ 102
0.6 ~ 122
ну и весь скетч выглядит вот так вот
_________________________________________________________________________________
int sensorPin = A0 ; // вход лямбды
int inPin2 = 2; //подключение к пину 2
int inPin3 = 3; //подключение к пину 3
int inPin4 = 4; //подключение к пину 4
int sensorValue = 0.0;
void setup()
void setup()
{
pinMode(inPin2, OUTPUT); // Устанавливает цифровой вывод 2 в качестве светодиода менее 0,4
pinMode(inPin3, OUTPUT); // Устанавливает цифровой вывод 3 в качестве светодиода 0,4 < X < 0.6
pinMode(inPin4, OUTPUT); // Устанавливает цифровой вывод 4 в качестве светодиода более 0,6
}
}
void loop()
{
sensorValue = analogRead(sensorPin); ; //читаем лямбду
if (sensorValue >= 122)
if (sensorValue >= 122)
{
digitalWrite(2, HIGH); // зажигаем светодиод более менее 0,4
digitalWrite(3, HIGH); // зажигаем светодиод 0,4 < X < 0.6
digitalWrite(4, HIGH); // зажигаем светодиод более 0,6
}
else if (sensorValue > 102)
{
digitalWrite(2, HIGH); // зажигаем светодиод более менее 0,4
digitalWrite(3, HIGH); // зажигаем светодиод 0,4 < X < 0.6
}
else if (sensorValue > 82)
{
digitalWrite(2, HIGH); // зажигаем светодиод более менее 0,4
}
delay (100);
Комментариев нет:
Отправить комментарий