汽车转向信号 控制LED-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4143|回复: 7

[未解决] 汽车转向信号 控制LED

[复制链接]
发表于 2020-11-21 20:40 | 显示全部楼层 |阅读模式
112金币


如视频  汽车转向信号 接板子 数字2 口   有转向信号是   高电平  1   没有转向信号  低电平  0    我的功能是 高电平的时候 流水灯  然后 低电平的 时候  常亮  问题的  这个转向有规律的 大概 0.5秒闪一次  不闪 的 时候  是 低电平 信号 000   这个时候 就有问题了  高电平的 流水灯  和  低电平的 常亮  一起执行了!  我也尝试过用 延迟 卡 这个信号 发现没用了! 根本卡不中! 10~~1000 都试过~   都同步不上! 乱套了! 为什么会这样!   还有其他方法 判断 这个  一会   11111  一会  0000 的信号吗?  
#include "FastLED.h"      

#define NUM_LEDS 66         

#define DATA_PIN 3              

#define LED_TYPE WS2812        

#define COLOR_ORDER GRB        


CRGB leds[NUM_LEDS];        

void setup() {  

Serial.begin(9600);         

  pinMode(2, INPUT);     //2 接口接受转向信号

delay(1000);              

LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);  

  FastLED.setBrightness(255);                          

}

void loop() {  

  int zhuanxiang = digitalRead(2);

//------------------------检测低频信号  就常亮

if(zhuanxiang == 0 ){                 

  fill_solid(leds, 66, CRGB::White);

FastLED.show();

}

//------------------------高频流水单

if(zhuanxiang == 1 ){

for (int i = 0; i <= NUM_LEDS; i++) {   

    leds = CRGB::Orange;

   FastLED.show();   

  }

   fill_solid(leds, 66, CRGB::Black);

FastLED.show();  

  }

delay(200);   //  这里 我延迟  卡着检测!  基本没用 对不上! 循环执行下来同步不上

}

最佳答案

查看完整内容

應該這麼說吧,與其去"同步"你原來的閃爍頻率, 不如直接取代掉它,由你來主控流水燈的頻率, 業界一般閃爍頻率是 75±15 次/分鐘,也就是 差不多0.8秒一個週期,ON 0.4秒、OFF 0.4秒, 如果你的流水燈在 0.8秒跑完一週期就很標準了 我的經驗是停車有時看到前車閃燈跟我的車同步, 但隨著時間越久同步率會越差,你用 delay() 去試著同步原頻率, 100% 也會逐漸不同步 而且依我提議的做法,用 delay() 是做不到的喔, 試著運用 millis() 記 ...
发表于 2020-11-21 20:40 | 显示全部楼层
11047646 发表于 2020-11-23 06:58
明白! 就是比方  这只一个 2秒流水灯  这个过程一直判断 接口是否还有 高频信号~ 如果有就继续流水灯~  ...

應該這麼說吧,與其去"同步"你原來的閃爍頻率,
不如直接取代掉它,由你來主控流水燈的頻率,
業界一般閃爍頻率是 75±15 次/分鐘,也就是
差不多0.8秒一個週期,ON 0.4秒、OFF 0.4秒,
如果你的流水燈在 0.8秒跑完一週期就很標準了

我的經驗是停車有時看到前車閃燈跟我的車同步,
但隨著時間越久同步率會越差,你用 delay()
去試著同步原頻率, 100% 也會逐漸不同步

而且依我提議的做法,用 delay() 是做不到的喔,
試著運用 millis() 記錄時間並判斷已經過的時間值,
才能夠達到一邊流水燈運作一邊判斷電壓準位,
不然系統會停在 delay0 指令處,其他工作也都停了
发表于 2020-11-22 09:22 | 显示全部楼层
汽车的话,不应该是读取can信号或者是Lin信号,找到转向灯的变量值,再实现功能吗?
发表于 2020-11-22 12:53 | 显示全部楼层
你所遇到的問題,是必然的結果,要解決也很簡單

假設方向燈正常閃爍的頻率是 1次/秒,ON/OFF
DUTY 各50%,等於是方向燈亮 0.5秒、熄0.5秒、
亮0.5秒、熄0.5秒...

以錯誤的做法來做的話,你的方向燈就會流水燈
0.5秒、常亮0.5秒、流水燈0.5秒、常亮0.5秒,
這應該是你目前遇到的狀況

你的需求應該是打方向燈時流水燈1秒、流水燈
1秒、流水燈1秒...關方向燈時才恢復常亮,對吧?

給你一個解決的訣竅:延遲 2 秒 判斷

比方說現在打方向燈了,輸入信號接收到了高電位,
此時啟動流水燈控制(雖然上面說跑一次1秒,但實際
上你可以依喜好調整),在流水燈進行的期間持續
判讀輸入信號是否變成低電位,若變成低電位時,
記錄下當前時間,流水燈繼續正常跑、輸入信號
繼續判讀

若輸入信號低電位不到 2 秒的時間內又轉成高電位了,
表示方向燈機能持續進行中,無視這次的時間記錄,
下次再轉成低電位時重新記錄時間,期間流水燈照跑

若輸入信號低電位已達 2秒 時間但都沒偵測到
高電位出現,表示方向燈機能已被停止無誤,這時再
切斷流水燈運作,改成常亮(建議亮度降低一些)


當然,2秒只是一個建議值,要說後遺症嘛...只是當你
關掉方向燈時它會多跑 2秒 才切斷方向燈,記得坊間
甚至還有人拿這種東西(方向燈延遲OFF)出來賣,
說可以增加安全性什麼的,剛好順便又多了這個功能,
摸蛤仔兼洗褲,一舉兩得

发表于 2020-11-22 18:03 | 显示全部楼层
取的是输出口的电压么?要是能取出转向开关的信号就OK了。
 楼主| 发表于 2020-11-23 06:58 | 显示全部楼层
shouzama 发表于 2020-11-22 12:53
你所遇到的問題,是必然的結果,要解決也很簡單

假設方向燈正常閃爍的頻率是 1次/秒,ON/OFF

明白! 就是比方  这只一个 2秒流水灯  这个过程一直判断 接口是否还有 高频信号~ 如果有就继续流水灯~  我之前 用卡延迟的方法和你这个类似差不过~  但是转向流水灯 和 信号 不同步~  我待会去试试~
 楼主| 发表于 2020-11-23 06:59 | 显示全部楼层
wwwusr 发表于 2020-11-22 18:03
取的是输出口的电压么?要是能取出转向开关的信号就OK了。

可以接模拟口取电压  也可以接数字接口 取  0 和  1
发表于 2020-11-23 08:59 | 显示全部楼层
11047646 发表于 2020-11-23 06:59
可以接模拟口取电压  也可以接数字接口 取  0 和  1

EN,貌似(方向盘那 )转向开关是常开闭的开关,输出到转向继电器或是电脑板,才转成脉冲的 控制灯 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 18:27 , Processed in 0.093640 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表