Acos и сложные математические вычисления на ардуино

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Dan Dan, 13 июн 2021.

  1. Dan Dan

    Dan Dan Нерд

    Да, в точку, спасибо большое! Как раз то что надо!
     
  2. b707

    b707 Гуру

    ошибаетесь. По вашим вопросам видно, что вы просто не в зуб ногой в этом, даже последовательность "49 13 10" для вас выглядит "магическим шифром", в то время как это просто символ '1' с переводом строки после.
    Поэтому для вас самое лучшее не выпендриваться. а слушать тех, кто понимает в этом больше.
    не надо там ничего расшифровывать, функция atof() сделает это за вас... и судя по всему значительно лучше вас...
     
  3. Dan Dan

    Dan Dan Нерд

    Вот это панч. Давайте по-другому скажу - мне ваши грубые "профессиональные" правдивые факты не нужны, если хотели сказать что-то - говорите без грубостей, потому что от себя грубостей не замечал, если можете только с грубостями, то другого от меня и не ждите.
     
  4. b707

    b707 Гуру

    ок, разбирайтеся сами....
     
  5. Dan Dan

    Dan Dan Нерд

    ок, уже разобрался, осталось в код вставить
     
  6. Dan Dan

    Dan Dan Нерд

    Пока что получается отдельно арккосинус находить по данным из ввода монитора порта:
    Код (C++):
    #include <Math.h>
    String a;
    char d = '1310';
    void setup() {
    Serial.begin(9600);
    }
    void loop() {
      if(Serial.available() >0){
        a = Serial.readStringUntil(d);
    char myStr1[10];
    a.toCharArray(myStr1, a.length());
    float x = atof(myStr1);
    x = acos(x);
    float m = 180.0/3.14;
    float n = round(m * x);
    Serial.println(n);
          }
    }
     
  7. Igor68

    Igor68 Гуру

    Доброго времени суток!
    Вот это немножко из "math.h":
    Код (C++):
    # define M_PI           3.14159265358979323846  /* pi */
     
    Это для того, что бы Вы не стеснялись применять определения из используемых Вами же заголовочных файлов.
    Если что не так сказал, то простите!
     
  8. b707

    b707 Гуру

    а вот это, простите, что? :)
    Код (C++):
    char d = '1310';
    сам и отвечу - бредятина
    Переменная d описана как символ. ОДИН символ. А вы в нее 4 штуки пихаете.
    Компилятор, наверно, оборался. что в этой строке переполнение...
    но у вас, скорее всего, в ардуино предупреждения выключены
     
    Igor68 нравится это.
  9. Igor68

    Igor68 Гуру

    Вот блин, а я и не увидел что в 8-ми битное значение пихают 16-ти битное... а может хотели и более... аж целых 4 символа. Может пьяный? Да вроде как праздники прогремели уже. Хотя после футбола такого наверное и не то может быть.
     
  10. akl

    akl Гуру

    вот такие варианты могут быть. это все одно и то же по сути.
    Код (C++):

    char d = 10;
    char d = 0x0A;
    char d = '\n';
     
    но '\n' конечно нагляднее.

    а 13 (0x0d) это '\r'
     
  11. b707

    b707 Гуру

    ну нафига так сразу подсказывать? :) пусть бы помучился, раз гордый :)
     
    Daniil нравится это.
  12. akl

    akl Гуру

    ваще это довольно серьезная ошибка - по крайней мере мой компилятор из
    char d = '1310'
    матерясь делает d = '0'
    то есть принимаемая строка будет обрываться на первом же символе нуля.
    а потом еще и все что после нуля примется в следующем цикле.
    то есть глючить будет неистово
     
  13. Dan Dan

    Dan Dan Нерд

    Да кстати, у меня именно это и произошло, спасибо за подсказку!
     
  14. Dan Dan

    Dan Dan Нерд

    Чо еще расскажешь?
    Могу сам рассказать кстати, спасибо, что поругался со мной, без тебя правда долго бы эту фигню разбирал.
    Можем еще поругаться, было довольно весело, как смотришь на такое предложение? Я обычно к восьми вечера точно свободен, надеюсь и ты тоже, можем словесные баталии устроить, что думаешь по этому поводу?
     
  15. b707

    b707 Гуру

    я разве с тобой уже ругался? :) Я пока только на ошибки указываю.
    А что не очень церемонюсь - так уважение еще заработать надо.
     
  16. Dan Dan

    Dan Dan Нерд

    Ты не тот человек, уважение которого мне важно
     
  17. Igor68

    Igor68 Гуру

    Мужики! Не переходите на личности!
    Один опытный и пытается объяснить, другой хвост задравши (в простонародье сопляк гордый)... не надоело?
    Меритесь уж!
    Да, и простите если что не так!
     
    Feofan нравится это.
  18. Dan Dan

    Dan Dan Нерд

    Ты из себя миротворца не строй, не нравится - не читай, а мое отношение к человеку, который пытается поднять свою самооценку за счёт унижения тех, кто мало знает в области, не изменится.
     
  19. akl

    akl Гуру

    мало знать в области это одно, а не уметь пользоваться гуглом - немного другое, и оное нередко раздражает особо чувствительных гур.
     
  20. b707

    b707 Гуру

    я уже помирился :)
    Но если будет повод еще носом ткнуть - вряд ли удержусь :)