
内部-接点の作成または切り替えとLEDのペア(オプションで、5、12、または24 Vから選択するための消光抵抗器が既に付いています)。 彼女には何も問題はありませんでしたが、車のダッシュボードにボタンを配置し、エンジンユニットにコントロールユニットを配置する予定でした。 そして、接触と表示のために別々のワイヤを引っ張りたくありませんでした。
それを解決する方法、およびこれに必要なもの-カットの下
その結果、次の解決策が思い浮かびました。

マイクロコントローラのBBポートで動作します。
a)双方向モード
b)出力電流の安全な制限(STM32 EMNIPではプログラムにより規制されています)
c)端末から信号を直接読み取ることができる仮想ポート(AVR PINx内)
アルゴリズムは次のとおりです。
1.ボタンが接続されているPINポートのビットを定期的に確認します(たとえば、20ミリ秒ごと)
1a。 テスト中に、出力PORTが0だった場合、1に設定します(テスト自体-数マイクロ秒-は目で確認できません)
2. PINで0が検出された場合、ボタンが押されます-プライマリ検出の事実を覚えています(アンチバウンスアルゴリズムの場合)
2a。 同時にPORTに高レベルがあり、クリックが検出された場合、アイテム1の定期的なチェックが安定したボタンリリース(3-5行のチェック)を表示するまで削除します-バイパスのためにLEDがとにかく点灯しないためボタンの接点、および出力段のみでボタンが押されたときに制限されるポートを通る出力電流を減らすことは、あらゆる意味で非常に便利です
3.数回のテストサイクルの間、押したり放したりすることを確認した場合-プログラムで処理し、それに応じてPORTを介してLEDを点灯します。
このインクルードの欠点は、人がボタンを押している間ずっとインジケーターがオフになることです。つまり、トグルスイッチがプログラムで実装されている場合、オンからオフへの移行は押す瞬間に視覚的に発生し、オフからオンへの移行はリリースの瞬間に行われますあまり快適ではない
これで、ポートピンのステータスを直接監視する方法がわからないMK、または出力電流を制限する手段がないMK(たとえば、古い8051ファミリとそのクローン):

ここでは、入力用に構成された別のBBラインを犠牲にし、クエンチング抵抗を2つの部分に分割する必要があります。 ボタンが押されている間ずっと出力ポートを0に変換する必要がないことを除いて、アルゴリズムは同じままです(ただし、消費電流を削減するという点でスタンドアロンシステムにとってはなお望ましい)。 抵抗器の割合もそれほど極端に選択することはできません(一部のMKではミリ秒単位でさえ、39オームを介してグランドへの出力に対して厳しいことが判明する可能性があります)-LED +高い出力ポートレベルでの制限抵抗器の下半分の電圧降下が重要ですVcc / 2以上
そして最後に、表示付きのいくつかのボタンの回路の変形-ここでは、すべての入力ラインを使用して、ダイオードを切り離すことができます:

デカップリングダイオードを介したボタンの弱い照明を除外するための入力ポートのプルアップ(右側の点線で描画)は、状態をスキャンする瞬間にのみオンにすることができます。 複数のボタンを一度に1つずつ自然にスキャンします。
ここにアイデアがあります-実際には、私はまだそれを確認する時間がありませんでした。