大家好我曾经在黑暗中骑行,想出了一个主意,如果仪表灯的颜色从速度或发动机速度改变会很有趣。因为我没有整洁的转速表,于是决定实施第二种方法,因为一种方法可以大致确定速度。如果有人想重复一遍,我会立即说,您在汽车上与电工一起工作,风险自负。工匠们可以合理地谈论麻雀上的加农炮射击以及我出色的编程能力,但可以实现目标,可以实现计划,并且可以自己工作:)。通常,您将需要:Arduino,一对RGB LED,几个电阻器和几个稳压芯片,用于LED的安装座。有兴趣的请下猫。
在Internet上进行的快速搜索给出了转速计接收脉冲信息的信息。找不到有关脉冲形状和持续时间的准确信息。它的持续时间是变化的还是静态的,但是脉冲之间的时间是否变化。好吧,您必须教Arduin计算脉冲,并确定一次和同时在触点“ +”上和“ 0”上的时间。我们连接RGB二极管。不要忘记在每个LED上放置一个限流电阻。const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;
我们将使用attachInterrupt方法。当引脚上出现电压和/或消失时,该方法将调用一个函数。在我们的情况下,我们需要在两种情况下都做出反应,因为除了冲动的存在我们对脉冲一无所知。后来发现,随着速度的增加,持续时间+和持续时间0都会减小。long micro_prev=0;
long micro_now=0;
long razn;
long impulse;
long silence;
在安装程序中,我们连接将要连接脉冲线的引脚。这是代码中的数字引脚2。0。这是可以在此模式下工作的引脚编号。它与引脚2相匹配。 attachInterrupt(0, blink, CHANGE );
micro_now=micros();
razn=micro_now-micro_prev;
a++;
if(digitalRead(2)==LOW){
impulse=razn;
} else {
silence=razn;
}
if(a==2){
Serial.println(String(impulse)+" "+String(silence));
obr_v_min=30000000/(impulse+silence);
a=0;
接下来,我们检查数据是否足够:脉冲持续时间以及相应的转数符合物理规范,并开始控制光。速度将从蓝色变为绿色,从黄色变为红色。颜色与下面的转数的关系图。水平旋转刻度。在垂直方向上,亮度级别是从0到255。纯蓝色和红色无法充分照亮面板,因此我不得不将它们稀释一些。但是蓝色开始变成青铜色,非常漂亮:)
对于每个部分,您需要创建一个公式来计算亮度。实际上,该方程是在两个点上的一条直线。这被认为很容易。因此,例如对于800-1300的图,亮度将被视为g=0.21*obr_v_min-18;
b=-0.51*obr_v_min+663 ;
r=0;
如果没有足够的数据停止流动,请不要忘记考虑错误。超过100个连续的错误(经验,如果导线脱落,那么这100个瞬间飞过),那么我们将保持不变的颜色。当数据出现时,我们返回。 error++;
if(error>=100){
k = go_to_color(0,255,255);
}
最后,颜色的平滑度会发生变化。int go_to_color(int r, int g, int b){
while(r_current!=r || g_current!=g || b_current!=b)
{
if(r_current>r){
r_current=r_current-1;
}
if(r_current<r){
r_current=r_current+1;
}
....
delay(100);
analogWrite(RED_PIN, r_current);
analogWrite(GREEN_PIN, g_current);
analogWrite(BLUE_PIN, b_current);
}}
打开系统电源时,请轻轻点亮背光灯。为此,我们设置变量first_loop,y将告诉arduine尚未注意脉冲。 if(first_loop==1){
int i;
for(i=0;i<255;i++){
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, i);
delay(5);
}
b_current=255;
r_current=0;
g_current=0;
delay(500);
first_loop=0;
}
因此,一切都该测试了。一月份的大街上,寒冷的天气只是在汽车上测试,实在太冷了。需要一个模拟器。我们取第二个ardudinka,并从中制成一个脉冲发生器。总的来说,是这样。调试时,我在此处添加了COM控件以更改长度。digitalWrite(8, HIGH);
delay(10);
digitalWrite(8, LOW);
delay(10);
巧合的是,USB示波器竟然掌握在我的手中,这对开发起到了很大作用。我们连接并看到大约相同图片的输出。
玩完游戏后,我们确保一切似乎正常。现在我们去寻找汽车中的动力。展望未来,我会说我没有在仪表板中找到转速表的电线,因此必须连接到OBDII连接器。打开然后...
这是什么!我们加油。
嗯,他们根本不知道如何计算它们。我想我必须重做所有事情。过了一会儿,我注意到示波器探头的第二根导线从质量上掉落了。 gh
哇,一切都很好。那只是幅度不是5V Arduino。我们不会冒险。将不得不降低。顺便说一下该频率是发动机转速的两倍。我了解转速表会显示每分钟的循环数,即例如,气缸中的闪光次数。但是曲轴在一个周期内转过两次。从他身上得到了冲动。但是,我可能是错的。但是在闲置时,一辆小汽车冷却下来,我的振荡器显示34.4 Hz。对应于2000 rpm。即使是耳朵,也并非如此。但是是1000。计算转数时应考虑公式。在电源测试期间,Arduino 12V并非总是表现良好,因此我们将通过车载网络为其供电,但会将其降低至5V。系统的总体方案。通过稳定器L7805C,我们给arduino供料,并通过分频器减小脉冲幅度。在arduins的输出处,我们通过电阻并联连接一对LED。这恰好是我的仪表板中的背光灯数量。
因此,现在该制造二极管墨盒了。
右侧的原始墨盒。我在商店里没找到这样的东西,我不得不拿标准的。我们不会从墨盒中取出端子,因为我们不会从墨盒中取出食物。我们钻了一些孔,用于将电线从下面插入墨盒。我们将导线焊接到二极管上,使用热缩管将其隔离。
很长时间以来,我一直在寻找如何增加这种墨盒长度的方法;直径没有增加。结果,我使用了紧密的电缆绝缘层。我们从墨盒末端拧紧并固定一滴热胶。
我试图在单独的板上制作用于LED的稳定器和6个电阻器,但是由于某种原因,在此过程中,仅蚀刻了一半的文字沸石。在董事会的一部分,它只是保持不变,在下半年,它完全消失了。它们之间有一个平滑的边界,就像不同的金属一样。因此,其余的看起来不会很美,没有照片。但是一切都是按照上面的方案。在寻找如何增加墨盒的同时,我发现了一个几乎完美的案例:)。
为了将来删除仪表板,决定进行可分离的连接。烧毁的电源有助于找到芯片。一端连接到arduino,另一端连接到汽车的车载网络。
我们从面板的背面拧下机箱上的一颗螺丝,然后将其与用作机箱的计算机插座部分固定在一起。
我们扣紧箱子,收集电线,使其不会挂出,然后将所有物品放回原处。我从面板上的配线中取了沙丁鱼的食物。我对负责常规背光灯电源的触点进行了调整,并在芯片上找到了相应的导线。结果,在包含光的情况下,arduin会打开,但不能持续工作。我没有找到转速表,我不得不将电缆连接到OBDII连接器。
总的来说,一切就绪。视频作品。当然,在夜间拍摄夜光元素时,视频并不能传达所有的深度和对比度。我骑了一个星期。我以为会紧张。但是,不,我喜欢。好吧,到目前为止至少不厌倦:)。它不会急剧变化,有时侧视力的变化没有时间引起注意。只有当它变成红色时,它才引人注目,但是当汽车开始加速获得动力并在超车时进入红色区域时,这是非常令人印象深刻的。ArduinoUPDScheme的草图并不声称是正确和理想的。工匠不建议使用稳压器降低脉冲幅度,而应使用常规的分压器。可以在下面的评论中看到评论。UPD2更改了与评论有关的方案。旧链接方案好吧,我重复一遍,复制此方案的责任仅在于您。技术创造力祝您好运!:)