История одного общения с Arduino Stm Avr FPGA.Заказ электроники и скетчей

Тема в разделе "Флудилка", создана пользователем dokTR, 18 июл 2017.

  1. dokTR

    dokTR Нерд

    Всем доброго времени суток!
    В самом начале моего повествования хочу сказать, что я полный профан в программировании, совершенно не понимаю в этом. Но речь не об этом. Задумал я как-то проект камеры заднего вида на свой автомобиль замутить на основе Ардуино. И, соответственно, понадобился мне скетч для управления сервомашинкой. По совету одного товарища, тоже, кстати далёкого от "программных языков", обратился к "Ардуино Заказы", а именно к Звягинцеву Сергею, он же Никита Ильич Л. (так, по крайней мере, он в "Сбербанке" отображается). Договорились с этим "профессионале" об оплате в 1500 р. Предоплату отправил в 500 р. (не такие уж и деньги большие...) Через, примерно неделю присылает он мне скетч, загружаю с горем по полам (я тогда вообще в первые в руки взял Ардуинку), не работает... Присылает другой код, не работает... Напомню человек позиционирует себя как профессионал, а скетч на управление сервой (!). В общем открываем мы Тим Вивер и в режиме он-лайн пишет он мне скетч примерно 4 часа... ну да ладно. (Я тут сигналку на машину ставил с автозапуском, тоже 3 дня делал, но только у меня медицинское образование, и профессиональной установкой доп.оборудования не занимаюсь). Ну вроде написал он код мне, всё вроде хорошо. Всё, жмём виртуальные руки, спасибо, вот вам остальные денЮжки... "А вы мне позже сможете подправить скетч, а то я пока на машину не поставлю не смогу некоторые нюансы учесть" "Да, конечно, обращайтесь!!!" А когда я попросил дописать, мне объявили сумму в 3500!!! Дописать скетч, ранее написанный этим чудо мастером))))
    Вот первоначальный код
    Код (C++):
    #include <Servo.h>
    #define start 5 // Начальный угол  https://vk.com/topic-120032212_35266139?offset=20
    #define rotate 90 // Угол открытия
    Servo s;
    int input = 2;
    int pot = A0;
    int event, pob = 0;
    int a, i;
    void setup() {
    pinMode(input, INPUT);
    Serial.begin(9600);
    s.attach(9);
    s.write(start);
    }

    void loop() {
    int x = digitalRead(input);


    /*if (x == 1) {
    event = 1;
    } else if (!x && pob) {
      pob = 0;
    }
    if (pob) {
    a = map(a, 0, 1023, 0, 180);
    s.write(a);
    delay(10);
    }*/

    if (x && !i) {
    Serial.println("OPEN");
    a = analogRead(pot);
    a = map(a, 0, 1023, 5, 175);
    //rotate = a;
    s.write(a);
    Serial.print(rotate);Serial.println(" ");
    delay(500);
    i++;
    while (x) {
      x = digitalRead(input);
      a = analogRead(pot);
      a = map(a, 0, 1023, -85, 85);
      s.write(rotate + a);
      Serial.print(rotate + a);Serial.println(" ");
      delay(1);
    }
    s.write(start);
    } else if (x == 0) {
      i = 0;
    }
    Serial.print(x);Serial.print(" ");
    Serial.print(a);Serial.print(" ");
    Serial.print(pob);Serial.print(" ");
    Serial.println(event);
    }
    Вот код после "доработки" (хотел добавить отключение сервы если она, после получения команды "открыться", не двигалась в течении 0.5 сек.)
    Код (C++):
    #include <Servo.h>
    #define A_MAX 1024
    #define A_VREF 5
    #define A_VMIN 0.43
    #define A_VMAX 2.56
    int lastHitAngle = 0;
    int hitAngleMatches = 0;
    bool jobDone = false;
    int realAngle () {
    return map(
    analogRead(A5),
    A_MAX * A_VMIN / A_VREF,
    A_MAX * A_VMAX / A_VREF,
    0, 180);
    }
    #define start 5 // Начальный угол https://vk.com/topic-120032212_35266139?offset=20
    #define rotate 90 // Угол открытия
    Servo s;
    int input = 2;
    int pot = A0;
    int event, pob = 0;
    int a, i;

    void setup() {
    pinMode(input, INPUT);
    Serial.begin(9600);
    servoWrite(start);
    }

    void loop() {
    int x = digitalRead(input);
    /*if (x == 1) {
    event = 1;
    } else if (!x && pob) {
    pob = 0;
    }
    if (pob) {
    a = map(a, 0, 1023, 0, 180);
    s.write(a);
    delay(10);
    }*/

    if (x && !i) {
    Serial.println("OPEN");
    a = analogRead(pot);
    a = map(a, 0, 1023, 5, 90);
    //rotate = a;
    servoWrite(a);
    Serial.print(rotate);Serial.println(" ");
    delay(500);
    i++;
    while (x) {
    x = digitalRead(input);
    a = analogRead(pot);
    a = map(a, 0, 1023, -89, 0);
    servoWrite(rotate + a);
    Serial.print(rotate + a);Serial.println(" ");
    delay(1);
    }
    servoWrite(start);
    } else if (x == 0) {
    i = 0;
    }
    Serial.print(x);Serial.print(" ");
    Serial.print(a);Serial.print(" ");
    Serial.print(pob);Serial.print(" ");
    Serial.println(event);
    }

    void servoWrite (int angle) {
    if (jobDone)
    return;

    // включаем серву и просим повернуться до положения 70°
    s.attach(9);
    s.write(angle);

    // ждём поворота. 5° запаса на всякие погрешности
    while (realAngle() < 65)
    ;

    // бросаем молоток и ждём немного пока он успокоится
    s.detach();
    delay(100);

    // запоминаем угол после падения и сопоставляем его с
    // предыдущим
    int hitAngle = realAngle();
    if (hitAngle == lastHitAngle)
    ++hitAngleMatches;
    else {
    lastHitAngle = hitAngle;
    hitAngleMatches = 0;
    }

    // если угол не менялся 5 раз — мы закончили
    if (hitAngleMatches >= 5)
    jobDone = true;
    }

    Уважаемые форумчане, скажите мне, как люди понимающие в написании кодов, скетчей и т.д., это нормально?
    Но речь вовсе не о коде и КАК он написан. Речь о человеке его написавший.

    Вот http://arduino.ru/forum/ishchu-ispolnitelya/sergei-zvyagintsev-i-ko-moshenniki здесь можно ещё почитать за него.

    Прошу прощение за оформление данного поста, как смог, так и написал))
    Да, совсем забыл выразить огромную благодарность человеку с ником ostrov который всё таки ДОПИСАЛ мне этот скетч. Спасибо большое ещё раз!!!

    А что Вы думаете по этому поводу, уважаемые члены данного сообщества?
    Ну вот и вся история!
    Всем мира, и интересных скетчей (если можно так сказать)
     

    Вложения:

    • 2.png
      2.png
      Размер файла:
      125,8 КБ
      Просмотров:
      817
    • 3.png
      3.png
      Размер файла:
      100,4 КБ
      Просмотров:
      570
    • 4.png
      4.png
      Размер файла:
      139,2 КБ
      Просмотров:
      592
    • 5.png
      5.png
      Размер файла:
      106,7 КБ
      Просмотров:
      569
    • 6.png
      6.png
      Размер файла:
      150,4 КБ
      Просмотров:
      590
    • 7.png
      7.png
      Размер файла:
      90,2 КБ
      Просмотров:
      557
    • 8.png
      8.png
      Размер файла:
      82,7 КБ
      Просмотров:
      573
    • 9.png
      9.png
      Размер файла:
      139,3 КБ
      Просмотров:
      549
    • 10.png
      10.png
      Размер файла:
      28,1 КБ
      Просмотров:
      579
    • 11.png
      11.png
      Размер файла:
      85,2 КБ
      Просмотров:
      579
    Последнее редактирование: 18 июл 2017
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    После доработки не лучше.
    Функция map() оперирует целыми числами. Дробная часть не округляется по правилами, а просто отбрасывается.
    А в коде дробные.
    Дальше лень смотреть.
     
  3. dokTR

    dokTR Нерд

    :):):) Я НИЧЕГО не понял из вышесказанного)) Суть в том, что он не работал. Дело не в коде, а в отношении. Почитайте вложения, там скриншоты переписки.)))
    (да и текст немного подправил)
     
  4. ostrov

    ostrov Гуру

    Речь не о том, что скетч кривой, это и так понятно. Там многое сделано через одно место, как обычно делают школьники и непрофильные студенты. Речь о том, что человек называет себя профессионалом и хватает задачи на всех возможных форумах и соцсетях, при этом не обеспечивая баланс цены и качества. А зачастую и просто пропадая, когда заходит в тупик. Персонаж это известный, на Ардуино.ру ему целая ветка посвящена.
     
    Последнее редактирование: 18 июл 2017
  5. Airbus

    Airbus Радиохулиган Модератор

    Ну и нафига таким деньги платить за кривые коды?Для тех кто хочет но не умеет есть Ебай и Али там все есть.
     
  6. Tomasina

    Tomasina Сушитель лампочек Модератор

    нифига. То, что мне хочется, тама нету. Приходится самому делать.
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Позавчера ставил дочке на девятку камеру заднего вида.Нету там Ардуино.И не надо туда его совать!А если и надо сделать то что не делают в Кетае то прошивки для AVR в инете можно найти бесплатные почти для любого использования.Гугл в помощь!
     
  8. Tomasina

    Tomasina Сушитель лампочек Модератор

    зря камеру поставил. Теперь так и не научится чувствовать габариты, полагаясь на помощника.
     
  9. ostrov

    ostrov Гуру

    Купили вот готовый шлагбаум со светофором на предприятие. Чуть ли не каждый день там аварии теперь. Приходится переделывать по уму.
     
  10. koteika

    koteika Гик

    Все как обычно. Школьник дегенерат вообразил себя гуру. Создал себе воображаемых подруг разработчиков, создал им страниц в контактике и т.д. Наверное еще создал групповую переписку для своей воображаемой команды и там все они пишут.. Попахивает шизофренией однако... Но это не мешает кричать ему о том, что они крутые разработчики.
     
  11. dokTR

    dokTR Нерд

    Не все там есть… вот камеры выдвижной с регулировкой и защитой на Авенсис нет(
     
  12. Airbus

    Airbus Радиохулиган Модератор

    А она реально там нужна?А простая как на Прадо не?
     
  13. dokTR

    dokTR Нерд

    В дождь, минут за 15 по трассе её грязью так тонирует, что отпадает весь смысл установки). И приехал на парковку, сходи, почисть камеру а потом паркуйся))
     
  14. Airbus

    Airbus Радиохулиган Модератор

    И простым переключателем не управляется только Ардуиной?
     
  15. dokTR

    dokTR Нерд

    А как заставить микро сервопривод повернуться на (предположим) 43°, с помощью выключателя?
     
  16. Airbus

    Airbus Радиохулиган Модератор

    А как Вы пользуетесь стеклоподьемниками на Авенсисе?Примерно также.А может и правда проще камеру на парковке протереть спасибо за совет!
     
  17. dokTR

    dokTR Нерд

    ) да это не совет был)), это я описал свои действия, которые надоело выполнять. Кнопку, может быть, и проще поставить… только скучно как-то.
     
  18. Airbus

    Airbus Радиохулиган Модератор

    Не ну так то хорошая идея камеру протереть. Правда я как старый ПЕР редко смотрю в "телек" что впереди. Я по стариковски через плечо.Так то оно надёжнее както.У меня Крузер Прадо 2011
    [​IMG]
     
  19. dokTR

    dokTR Нерд

    Да, согласен на 100%, через плечо надёжней + зеркала, и тогда вообще нахрен ничего не надо…)) НО есть одно НО! На Авике 85% времени жена гоняет… нет, она очень хорошо ездит, для девчонки (я серьезно). Но очень просит меня затонировать задние стекла ( в два слоя (!)), и камеру чтоб видеть все. Не могу перечить)))
    П.С. а прадик хорош. На Драйве нет случайно?
     
  20. dokTR

    dokTR Нерд

    Вот так серьёзные люди и профессионалы относятся к своим клиентам (довольным и особенно НЕ довольным).
    Конечно извинился. Как и у многих нормальных людей, у меня есть чувство стыда. Подумал тогда: "Зря сорвался на человека, нужно было просто перестать отвечать по мылу и всё. Надо извиниться и расход..."
    Вот только сейчас понимаю, что зря я это сделал.