-
Управление дхо
добрый день форумчане ,я начинающий в этой сфере .Вот задумал себе сделать хитрые ходовые огни:когда стою не работают, поехал включились на полную,включил габариты (свет) ,дхо пригасли на 50%.Но вот не задача прописал все на сколько понял и получилась такая штука, когда на входе спидометра есть сигнал все в норме а как только подаю на вход габариты начинает моргать диод,что делать наверное еще мне не понять.Вот код:
PHP код:
int Speed = 11;
int vxod = 10;
int dxo = 9;
int ledLevel = false;
void setup()
{
pinMode(vxod, INPUT);
pinMode(Speed, INPUT);
pinMode(dxo, OUTPUT);
}
void loop()
{
if (digitalRead(Speed)==HIGH && digitalRead(vxod) == LOW);
{
analogWrite(dxo,250);
}
(digitalRead(vxod)==HIGH );
{
analogWrite(dxo,50);
}
}
-
Re: Управление дхо
А какой у Вас на спидометре сигнал?
-
Re: Управление дхо
Добрый вечер ,623 имп на 100 метров.
-
Re: Управление дхо
Ну так поэтому и моргает, У вас же считывает логический сигнал в неопределенном моменте
Он может считать как лог 1 так и лог 0
Считывайте спидометр через прерывания
-
Re: Управление дхо
Уважаемый чип я не знаю как суда добавить схему,смысл в том что прежде чем сигнал дойдет до входа 11 там на входе стоит емкость 22 мкф а перед ней 564ла7 которая сама считает до тех пор пока не будет логич 1 (правда это происходит сразу после 2-х оборотов датчика) и так как есть лог 1 то ардуина дает на выходе 9 лог 1 ,и все вроде норм, но как я подаю на ногу 10 лог 1 то на 9 выводе начинается бог знает что.
-
Re: Управление дхо
доброе утро ,никто так и не объяснит что делать?А в том что вы посоветовали я так и не разобрался куда чего бог знает.
-
Re: Управление дхо
maestro777, исходя из того, что было озвучено выше, я бы по-крайней мере сделал так:
PHP код:
int Speed = 11;
int vxod = 10;
int dxo = 9;
int ledLevel = false;
void setup()
{
pinMode(vxod, INPUT);
pinMode(Speed, INPUT);
pinMode(dxo, OUTPUT);
}
void loop()
{
if (digitalRead(vxod) ==LOW)
{
if(digitalRead(Speed)==HIGH)analogWrite(dxo,255);
}
else analogWrite(dxo,127);
}
без схемы сложно что-то конкретное подсказать.
-
Re: Управление дхо
Здравствуйте manu_245, я включил зажигание ,пошло питание на ардуину и дхо =ничего не происходит.Поехал ,после 2х км/ч появляется высокий уровень на speed=1, должен быть dxo=1.Но после того как я включил свет(vxod=1) независимо от того есть на speed 1 или нет дхо должен быть dxo=127 Спасибо большое за помощь ,ждем дальше.
-
Re: Управление дхо
тут смысл понять что, где, за чем писать, интересен сам процесс ,хочу научится ,я вообще радиолюбитель по жизни ,дхо у меня собран на 155ла3 но это же не интересно,хочу чтоб они плавно включались и плавно гасли как вот это работает ,может кто кусочком кода поделится плавного включения и выключения.
:D
-
Re: Управление дхо
Вложение 17463 : приблизительная схема для ознакомления,потом удалю
-
Re: Управление дхо
И так ребята спасибо,отдельное спасибо manu_245 с помощью его кода получилось как я и хотел (правда после небольшого редактирования),осталось только реализовать плавное гашение и плавное включение.Вот готовый код:
PHP код:
int Speed = 2;
int vxod = 4;
int dxo = 3;
void setup()
{
pinMode(vxod, INPUT);
pinMode(Speed, INPUT);
pinMode(dxo, OUTPUT);
}
void loop()
{
if (digitalRead(vxod) ==LOW)
{
if(digitalRead(Speed)==HIGH)analogWrite(dxo,245);
}
else analogWrite(dxo,127);
delay (500);
if (digitalRead(vxod) ==LOW)
{
if(digitalRead(Speed)==0)analogWrite(dxo,0);
}
else analogWrite(dxo,0);
}
-
Re: Управление дхо
Привет ребята подладовал код,теперь есть плавное включение и плавное выключение ,вот только опять проблема с входом света ? когда отключается speed есть как бы притухание ,а потом возвращается на analogWrite(dxo,27) ,что не так?Вот код:
PHP код:
int vxod = 2;
int dxo = 3;
int Speed = 4;
int ledI = 0;
boolean ledBon = false;
boolean ledBoff = false;
boolean motionDetLed = false;
void setup(){
pinMode(vxod, INPUT);
pinMode(dxo, OUTPUT);
pinMode(Speed,INPUT);
}
void loop(){
if (ledBon && motionDetLed)
{
if (ledI>=255)
{
ledBon = false;
} else {
ledI=ledI+1;
analogWrite(dxo,ledI);
delay(5);
}
}
else {
motionDetLed = false;
ledBon = false;
}
if ((ledBoff) && (motionDetLed == false))
{
if (ledI<=0)
{
ledBoff = false;
} else
{
ledI=ledI-1;
analogWrite(dxo,ledI);
delay(10);
}}
else {
ledBoff = false;
}
{
// Если обнаружено движение, то
if (digitalRead(Speed) == HIGH)
{
ledBon = true;
motionDetLed = true;
delay(5);
}
//Ели движения нет, то
if (digitalRead(Speed) == LOW)
{
ledBoff = true;
motionDetLed = false;
delay(5);
}
{
if (digitalRead(vxod) ==LOW);
else analogWrite(dxo,27);
}}}