我应该用什么语言进行自动换档程序?

abh*_*nav 6 c microcontroller

我正在考虑编写一个自动更换自行车装备的程序.它可能需要一个微处理器,所以我想到的问题是:编程微处理器有什么不同的语言,还是可以用c和c ++来完成?

另一件事是,关于程序,一个switch声明可以做我的工作,还是我需要指针或链表,因为齿轮可以上下两种方式工作?我对switch陈述事情有点困惑!

Cur*_*urd 23

您不需要switch语句,只需使用shift运算符:

上移:

齿轮<< = 1;

降档:

齿轮>> = 1;

  • 您忘了提到链接列表有助于跟踪链的位置,仅在所有链接正确对齐时才会移动. (4认同)
  • 链表也需要是循环链表.确保您的垃圾收集器可以正确处理周期. (4认同)

pmg*_*pmg 8

我可能既不使用指针,链接列表或开关来写它很难.

您需要知道的第一件事是您拥有什么样的输入以及如何获得它们.
然后,您需要知道可以发送的输出以及输出方式.

假设您可以将rpm读作C变量,而另一个变量控制齿轮,这应该有效:

while (1) {
    if (rpm <= 3) chggear(-1);
    if (rpm >= 7.4) chggear(+1);
}
Run Code Online (Sandbox Code Playgroud)

功能chggear将改变档位并等待一段合适的时间,以确保下一个档位在返回环路之前接合.

int chggear(int direction) {
    gear += direction;
    sleep(10); /* wait for gear to engage */
    return gear; /* return currently engaged gear */
}
Run Code Online (Sandbox Code Playgroud)

编辑您也可以直接更改为特定档位,无论变速箱在做什么:

int jumptogear(int geartojump) {
    gear = geartojump;
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它

if (breaking) jumptogear(1); /* and possibly break gearbox */
Run Code Online (Sandbox Code Playgroud)

  • 自行车齿轮通常是顺序的.+1,-1就足够了.除非您有多个链环,否则您需要一些算法来按顺序进行更改.此外,还需要一种检测自由转动的方法.如果你停止兜售,你不一定要改变.事实上,如果你没有兜售,变速器就无法改变. (2认同)

Tom*_*enn 6

除了一个非常糟糕的想法和一个可能极其危险的"实验"试图编程自己的微处理器自动更换你的自行车上的齿轮,你可能会发现调查Arduino的东西很有用.

Arduino是一个"开源硬件"板,可以用C,C++或C#编程(取决于你买的那个).它通过USB直接插入您的计算机进行编程.您可以将任何您喜欢的东西连接起来 - 电机,伺服器,传感器等......