Отже, я ПОПОВНЕНИЙ і зовсім початківець у програмуванні. Я зробив деякі основні речі на Arduinos (буквально перемикаючи світлодіоди і щось показуючи на РК), і я намагаюся самостійно навчити себе програмувати в C. Я інженер-апаратник по торгівлі, але це турбує мене, що я не можу зробіть будь-яку сторону мікропрограмного забезпечення та програмного забезпечення, і немає вечірніх курсів, щоб викладати це, і я хотів би продовжити свої варіанти кар’єри. Я намагаюся зрозуміти, як деякі з цих команд поєднуються і виникли проблеми, які я просто не можу зрозуміти, чому це не працює.
Отже, у мене є вхід і вихід. Мій вихід перемикає ворота FET, який вмикає світлодіод. Вхід надходить з воріт І. Отже, мій світлодіод завжди вмикається, і коли я отримую вхідний сигнал із воріт AND (2 умови були виконані), я хочу, щоб вихід (тумблер світлодіода) йшов НИЗКО (вимкніть світлодіод. Оскільки вихід також підключений до один із входів AND, це також перетворить вхідний сигнал НИЗКО.
Що я хочу зробити: я просто хочу прочитати вхід як "умови, що виконуються" та вимкнути світлодіод. Потім він повинен вимкнутись на 1 секунду і знову увімкнути. Якщо вхід знову стає ВИСОКИМ, процес повторюється. Я використовую простий поштовх, щоб зробити перемикач, як інший вхід І-воріт, і виміряв, що вихід (MCU-вхід) стає високим при натисканні кнопки, але світлодіодне перемикання (вихід) не вимкнеться. Мій код (я думаю) досить чортово простий, але явно я щось неправильно не розумію, оскільки він просто не працює.
Отже, це код, який я використовую:
#include "mbed.h"
DigitalIn ip(D7);
DigitalOut op(D8);
int main() {
if (ip == 1){
op = 0;
wait (1.0);
op = 1;
}else{
op = 1;
}
}
І мені це здається логічним. У звичайному стані вихід є ВИСОКИМ. Якщо на вхід надходить сигнал із воріт І, світлодіод вимкнеться на 1 секунду, а потім знову увімкнеться.
Що це я зробив не так, як це виглядає як логічний спосіб зробити це, і я просто не можу зрозуміти, чому це не працює?
Якщо це допомагає, я використовую Nucleo F103RB. Коли я використовую код "блимати" і просто вмикаю світлодіод таким чином, він працює чудово, саме тоді, коли я додаю твердження "якщо", воно піде не так.
Це спрощена схема:
імітувати цю схему - Схематично створено за допомогою CircuitLab
PS Я знаю, що я не додав їх у схему, але на воротах AND є резистори, що випадають, на входах та виходах.
DigitalIn
вже включає volatile
.