Как изменить яркость светодиода в соответствии с цифрами?

Тема в разделе "Arduino & Shields", создана пользователем martin1987, 28 июл 2021.

Метки:
  1. Sergku

    Sergku Нерд

    нет, они хранятся как массив byte или string никаких преобразований в общем вот примерно так. Почему char - да все просто: человек, которому это делалось, в мониторе порта смотрел коды и потом сам дописывал условия.

    Код (C++):
    String inputString = "";
    byte currentMode = 0;
    boolean isReadComplete = false;

    void setup() {
      Serial.begin(115200);
      Serial3.begin(250000);
    }

    void loop() {
      while(Serial3.available()){
        char inChar = (char)Serial3.read();
        inputString += inChar;
        if(inChar == '\n'){isReadComplete = !isReadComplete; break;}
      }


      if(isReadComplete){
     
        if(inputString=="< d 1D8 110 0A00E05DF3008000000000\r\n" && currentMode != 1){
          currentMode = 1; Serial.println("<testkey:1>");}

        if(inputString=="< d 1D8 110 0A00E05DF3004000000000\r\n" && currentMode != 2){
          currentMode = 2; Serial.println("<testkey:2>");}

        // дальше остальные случаи..

        isReadComplete = !isReadComplete;
        inputString = "";
      }


    }
     
    Последнее редактирование: 3 авг 2021
  2. parovoZZ

    parovoZZ Гуру

    Я ещё раз повторяю - приходят БАЙТЫ. Приёмный буфер в МК имеет размерность 8 бит - это один БАЙТ. МК работает исключительно с БАЙТАМИ, а не со строками, символами или ещё с чем. Что непонятного?
     
  3. parovoZZ

    parovoZZ Гуру

    ещё одна бредятина. Монитору порта вообще до фонаря, что вы там гоняете. Он также ловит БАЙТЫ и отображает их. Вы можете в мониторе порта полученные байты переводить в символы через ASCII таблицу, но от этого БАЙТЫ символами не станут.
     
  4. Sergku

    Sergku Нерд

    вы внимательно читали? человек, для которого это делалось, не будет сидеть с таблицей ASCII и переводить увиденные символы в мониторе порта в байты в скетче. Не стоит флудить на эту тему. байт и чар занимают один байт. Вы бы лучше автору помогли, чем мне про байты рассказывать..
     
  5. parovoZZ

    parovoZZ Гуру

    если он не будет, так и я тоже не буду. Мне больше всех надо что ле?
     
  6. b707

    b707 Гуру

    Почему бы и не рассказать, если вы все не угомонитесь и продолжаете рекламировать свой кривой код?
    В коде из сообщения 41 вы снова храните и сравниваете огромные строки ради одного символа. Если вы не умеете по другому работать с текстовыми данными - это не повод советовать другим эту бредятину.

    А что до байтов - в коде. который вы предложили в сообщении 25 - у вас каждый байт из Сериал превращается в два чара.
     
  7. Sergku

    Sergku Нерд

    я это уже объяснял, хотя зачем непонятно
     
  8. martin1987

    martin1987 Нерд

    Позвольте мне объяснить, что означает A5 5A 06 83 00 01 01 00 01.

    A5 5A: указывает заголовок кадра
    06: указывает на шестибитную длину данных 83 00 01 01 01 00 01
    83: указывает инструкцию для чтения данных из памяти переменных
    00 01: указывает адрес памяти переменной
    01: указывает (00 01) 1-битную длину
    00 01: указывает значение

    Это набор предписанных инструкций.
     
  9. parovoZZ

    parovoZZ Гуру

    И что мешает положить это в массив байтов и после пройтись switch case по нему? На кой хер сюда затягиваются строки?


    Да даже это можно делать на лету. Ваш сериал мдленный, словно черепаха.
     
    martin1987 нравится это.
  10. martin1987

    martin1987 Нерд

    Я действительно использую switch case, так что мне просто нужно analogwrite (pin, Hex[7]), чтобы использовать его таким образом?
     
  11. Hummer

    Hummer Нуб

    Какой экран вы используете? это выглядит круто!

    Я нашел небольшой справочный материал на сайте arduino, надеюсь, он вам поможет.

    О том, как использовать pwm

    Код (C++):
    int ledPin = 9;      // LED connected to digital pin 9
    int analogPin = 3;   // potentiometer connected to analog pin 3
    int value = 0;         // variable to store the read value

    void setup() {
      pinMode(ledPin, OUTPUT);  // sets the pin as output
    }

    void loop() {
      value = analogRead(analogPin);  // read the input pin
      analogWrite(ledPin, value / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
    }
     
  12. b707

    b707 Гуру

    Hummer,

    что это было? пример использования analogWrite() ? :) что. серьезно? :)
     
  13. martin1987

    martin1987 Нерд

    Спасибо за ваш ответ, это сенсорный экран STONE.
    Я уже видел этот пример кода на сайте arduino. Я пока откладываю этот проект, я обновлю его позже, когда у меня будет время.