Помогите разобраться с дополнительными заданиями!

Тема в разделе "Arduino & Shields", создана пользователем Гузей_Руслан, 11 сен 2018.

  1. Последнее редактирование: 11 сен 2018
  2. DetSimen

    DetSimen Guest

    Трудности мы, видимо, в наших мутных Хрустальных Шарах разглядеть должны?
     
  3. Я же прикрепил ссылки. Не совсем понимаю как решить эти задания. Вот и прошу о помощи
     
  4. parovoZZ

    parovoZZ Гуру

    Значит рано ещё. Подтяни теорию.
     
  5. А о чем почитать? Просто, как я понял, в 11.1 нужно написать функцию, которая будет возвращать то или иное значение, в зависимости от того, какая кнопка нажата. В том направлении думать?
     
  6. Mitrandir

    Mitrandir Гуру

    Отложить клавиатуру и блоксхему алгоритма
     
  7. Спасибо. Я уже пробовал.
     
  8. Код (C++):

    //Вот так решил 11.1 , не знаю верно ли согласно условию,
    // но я подумал что нужно именно так.

    #define PLUS_BUTTON_PIN    2
    #define MINUS_BUTTON_PIN   3
    #define LED_PIN            9

    int brightness = 100;
    int delta = 0;
    boolean plusUp = true;
    boolean minusUp = true;


    void setup()
    {
      pinMode(LED_PIN, OUTPUT);
      pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP);
      pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP);
    }

    void loop()
    {
      analogWrite(LED_PIN, brightness);
      plusUp = handleClick(PLUS_BUTTON_PIN, plusUp);
      minusUp = handleClick(MINUS_BUTTON_PIN, minusUp);
      brightness = bright(delta);
    }
    boolean handleClick(int buttonPin, boolean wasUp)
    {
      boolean isUp = digitalRead(buttonPin);
      if (wasUp && !isUp) {
        delay(10);
        isUp = digitalRead(buttonPin);
        return !isUp;
      }
    }

    int bright(int delta)
    {
    int value = brightness;
      if (!plusUp) {
        delta = +35;
        value = constrain(brightness + delta, 0, 255);
      }
      else if(!minusUp){
        delta = - 35;
        value = constrain(brightness + delta, 0, 255);
      }
      return value;
    }
     
  9. parovoZZ

    parovoZZ Гуру

    О цифровой технике, булевой алгебре, теория основ электрических цепей. На выбранном языке программирования необходимо учиться не на мк, а на простых примерах)
     
  10. parovoZZ

    parovoZZ Гуру

    И где блок-схема алгоритма?
     
  11. Из Булевой алгебры ведь только нужно знать и понимать таблицы истинности. Электроцепями проблем особо нет. А что значит на простых примерах? Решать математику на Си?
     
  12. parovoZZ

    parovoZZ Гуру

    А из всей математики надо знать только таблицу умножения, да, да, да....
     
  13. Из всей математике, я вряд ли знаю меньше Вашего. Я задал нормальный вопрос, на что не получил вразумительного ответа. Как говорит наш преподаватель: "Если вы не можете объяснить что-то "Чайнику", то вы сами этого не знаете и не понимаете".
     
  14. DetSimen

    DetSimen Guest

    Дак вопроса и не было, чайнег. Ты нас просто проинформировал, что у тебя возникли трудности с заданиями. Мы приняли к сведению. Всё.
     
    parovoZZ нравится это.
  15. Я попросил помочьразобраться с этими заданиями, а не список литературы к прочтению. В 11.1 не совсем понятно что требуется, а в 12.2 не знаю как это слелаиь
     
  16. DetSimen

    DetSimen Guest

    Забей.
     
    parovoZZ нравится это.
  17. parovoZZ

    parovoZZ Гуру

    Таблица истинности - это из теории конечных автоматов. Булева алгебра начинается гораздо раньше.
     
  18. parovoZZ

    parovoZZ Гуру

    Что такое 11.1, 12.2? Вопросы можешь озвучить внятно? На каком этапе не получается? Что сделано?
     
  19. Mitrandir

    Mitrandir Гуру

    Решение 11.1
    Код (C++):

    #define PLUS_BUTTON_PIN     2
    #define MINUS_BUTTON_PIN    3
    #define LED_PIN             9
    #define  DELTA 35

    int brightness = 100;
    boolean plusUp = true;
    boolean minusUp = true;

    void setup()
    {
      pinMode(LED_PIN, OUTPUT);
      pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP);
      pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP);
    }
    void loop()
    {
      analogWrite(LED_PIN, brightness);
      // реагируем на нажатия с помощью функции, написанной нами
      plusUp = handleClick(PLUS_BUTTON_PIN, plusUp, DELTA);
      minusUp = handleClick(MINUS_BUTTON_PIN, minusUp, -1* DELTA);
    }
    // Собственная функция с 3 параметрами: номером пина с кнопкой
    // (buttonPin), состоянием до проверки (wasUp) и градацией
    // яркости при клике на кнопку (delta). Функция возвращает
    // (англ. return) обратно новое, текущее состояние кнопки
    boolean handleClick(int buttonPin, boolean wasUp, int delta)
    {
      boolean isUp = digitalRead(buttonPin);
      if (wasUp && !isUp) {
        delay(10);
        isUp = digitalRead(buttonPin);
        // если был клик, меняем яркость в пределах от 0 до 255
        if (!isUp)  
          brightness = constrain(brightness + delta, 0, 255);
      }
      return isUp; // возвращаем значение обратно, в вызывающий код
    }
     

  20. Спасибо. Не до конца понял, что от меня требуется, а оказалось, что все элементарное просто.