查看: 320|回复: 7

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

[复制链接]
  • TA的每日心情
    开心
    2016-1-21 21:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 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);   //  这里 我延迟  卡着检测!  基本没用 对不上! 循环执行下来同步不上

    }

    该用户从未签到

    发表于 2020-11-22 09:22 | 显示全部楼层
    汽车的话,不应该是读取can信号或者是Lin信号,找到转向灯的变量值,再实现功能吗?
  • TA的每日心情
    奋斗
    2020-12-3 07:08
  • 签到天数: 125 天

    [LV.7]常住居民III

    发表于 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)出來賣,
    說可以增加安全性什麼的,剛好順便又多了這個功能,
    摸蛤仔兼洗褲,一舉兩得

  • TA的每日心情
    擦汗
    2019-11-1 21:03
  • 签到天数: 101 天

    [LV.6]常住居民II

    发表于 2020-11-22 18:03 | 显示全部楼层
    取的是输出口的电压么?要是能取出转向开关的信号就OK了。
  • TA的每日心情
    开心
    2016-1-21 21:17
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-11-23 06:58 | 显示全部楼层
    shouzama 发表于 2020-11-22 12:53
    你所遇到的問題,是必然的結果,要解決也很簡單

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

    明白! 就是比方  这只一个 2秒流水灯  这个过程一直判断 接口是否还有 高频信号~ 如果有就继续流水灯~  我之前 用卡延迟的方法和你这个类似差不过~  但是转向流水灯 和 信号 不同步~  我待会去试试~
  • TA的每日心情
    开心
    2016-1-21 21:17
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-11-23 06:59 | 显示全部楼层
    wwwusr 发表于 2020-11-22 18:03
    取的是输出口的电压么?要是能取出转向开关的信号就OK了。

    可以接模拟口取电压  也可以接数字接口 取  0 和  1
  • TA的每日心情
    擦汗
    2019-11-1 21:03
  • 签到天数: 101 天

    [LV.6]常住居民II

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

    EN,貌似(方向盘那 )转向开关是常开闭的开关,输出到转向继电器或是电脑板,才转成脉冲的 控制灯 。
  • TA的每日心情
    奋斗
    2020-12-3 07:08
  • 签到天数: 125 天

    [LV.7]常住居民III

    发表于 2020-11-23 22:19 | 显示全部楼层
    11047646 发表于 2020-11-23 06:58
    明白! 就是比方  这只一个 2秒流水灯  这个过程一直判断 接口是否还有 高频信号~ 如果有就继续流水灯~  ...

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

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

    而且依我提議的做法,用 delay() 是做不到的喔,
    試著運用 millis() 記錄時間並判斷已經過的時間值,
    才能夠達到一邊流水燈運作一邊判斷電壓準位,
    不然系統會停在 delay0 指令處,其他工作也都停了
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    【Arduino】108种传感器模块系列实验(27)---BMP280气压传感器
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【干货分享】mega2560原理图PCB图纸altium designer18
    【干货分享】mega2560原理
    分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
    教你让OLED动起来!多重字符串版!
    教你让OLED动起来!多重字
    大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
    土壤湿度计的原件组成与安装,求大神帮忙
    土壤湿度计的原件组成与安
    最好能帮忙将安装步奏写出来,一位小白的在线求助
    新手入门必读:51单片机和arduino哪个好?怎么选?
    新手入门必读:51单片机和
    声明:本文内容转载自DF创客社区Arduino学习板块。 很多刚入门的电子爱好者刚开始学
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表