그래서 저는 완전하고 프로그래밍에 초보자입니다. Arduinos (문자 그대로 LED를 토글하고 LCD에 무언가를 표시)에 대한 몇 가지 기본 작업을 수행했으며 C에서 프로그래밍하는 방법을 스스로 가르치려고 노력하고 있습니다. 무역으로 하드웨어 엔지니어입니다. 펌웨어 / 소프트웨어 측면 중 하나를 수행하고이를 가르치는 저녁 코스가 없으며, 커리어 옵션을 추가하고 싶습니다. 이러한 명령 중 일부가 어떻게 함께 진행되는지 이해하고 어려움을 겪고있는 이유를 이해하지 못했습니다.
그래서 입력과 출력이 있습니다. 내 출력은 LED를 켜는 FET의 게이트를 토글합니다. 입력은 AND 게이트에서옵니다. 따라서 LED가 항상 켜져 있고 AND 게이트에서 입력 신호를 받으면 (2 가지 조건이 충족 됨) 출력 (LED 토글)이 LOW로 전환되고 싶습니다 (LED를 끄십시오. 출력도 연결됨) AND 입력 중 하나 인 경우 입력 신호를 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을 사용하여 작성된 회로도
추신 : 회로도에 추가하지 않았지만 AND 게이트에는 입력 및 출력에 풀 다운 저항이 있습니다.
DigitalIn
이미 포함되어 있기를 바랍니다 volatile
.