だから、私は完全でプログラミングの初心者です。私はArduinosで基本的なことをいくつか行いました(文字通りLEDを切り替えてLCDに何かを表示します)Cでプログラミングする方法を独学しようとしています。私はハードウェアエンジニアであるが、ファームウェア/ソフトウェア側のいずれかを実行し、それを教えるための夜のコースはありません、そして私は私のキャリアオプションを促進したいと思います。これらのコマンドのいくつかがどのように連携するかを理解しようと努力していますが、なぜそれが機能しないのか頭を悩ませることができないという問題に遭遇しました。
したがって、入力と出力があります。私の出力は、LEDをオンにするFETのゲートを切り替えています。入力はANDゲートから来ています。だから、私のLEDは常にオンであり、ANDゲートから入力信号を取得するとき(2つの条件が満たされたとき)、出力(LEDトグル)をLOWにしたい(LEDをオフにします。 AND入力の1つである場合、これは入力信号をLOWにします。
やりたいこと:入力を「条件が満たされた」と読み、LEDをオフにしたいだけです。その後、1秒間オフになり、再びオンになります。入力が再びHIGHになると、プロセスが繰り返されます。単純なプッシュを使用して他のANDゲート入力としてスイッチを作成し、ボタンを押したときに出力(MCU入力)が高くなるが、LEDトグル(出力)がオフにならないことを測定しました。私のコードは(私は)非常に単純ですが、明らかに、それが機能していないので、正しく理解できません。
したがって、これは私が使用しているコードです:
#include "mbed.h"
DigitalIn ip(D7);
DigitalOut op(D8);
int main() {
if (ip == 1){
op = 0;
wait (1.0);
op = 1;
}else{
op = 1;
}
}
そして私には、それは論理的に思えます。通常の状態では、出力はHIGHです。入力がANDゲートから信号を受け取ると、LEDは1秒間オフになり、再びオンになります。
それは論理的な方法のように見えますが、なぜそれがうまくいかないのか理解できないので、私は間違っていますか?
それが役立つ場合は、Nucleo F103RBを使用しています。「点滅」コードを使用し、そのようにLEDをオン/オフするだけで問題なく動作します。「if」ステートメントを追加したときに問題が発生します。
これは簡略化された回路です。
この回路のシミュレーション – CircuitLabを使用して作成された回路図
PS回路図には追加していませんが、ANDゲートの入力と出力にはプルダウン抵抗があります。
DigitalIn
既にincludeが含まれていることを望みますvolatile
。