HEEELP, помогите написать прошивку!!

Тема в разделе "Arduino & Shields", создана пользователем Dark Toha, 4 сен 2017.

  1. Dark Toha

    Dark Toha Нуб

    В общем решил собрать что-то типо модели истребителя танков, заказал всё необходимое но вот незадача, я не могу написать скетч для системы радиоуправления. От радиоуправления требуется: управление движением, отдельно каждой гусеницей, тоесть вперёд, назад для каждой гусеницы независимо; управление орудием подъём, опускание, повороты влево, вправо, всё это с изменением скорости, через драйвер L298N; ну и конечно выстрел на 2 кнопки, тоже через драйвер без изменения скорости.
    Вот я переделывал готовый скетч:

    приёмник:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h> //Скачиваем и устанавливаем библиотеку RF24 для радио модуля!!!!!!!!!
    #define CE_PIN 1
    #define CSN_PIN 2
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    RF24 radio(CE_PIN, CSN_PIN);
    int joystick[9];
    int pwm = 0;
    int pwm1 = 0;
    int pwm2 = 0;
    int pwm3 = 0;
    void setup()
    {
    delay(50);
    radio.begin();
    radio.setChannel(9);
    radio.setDataRate(RF24_250KBPS); // Установка минимальной скорости;
    radio.setPALevel(RF24_PA_HIGH); // Установка максимальной мощности;
    radio.openReadingPipe(1,pipe);
    radio.startListening();
    pinMode(3, OUTPUT); // ШИМ
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT); // ШИМ
    pinMode(6, OUTPUT); // ШИМ
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT); // ШИМ
    pinMode(10, OUTPUT); //ШИМ
    pinMode(A0,OUTPUT);
    pinMode(A1,OUTPUT);
    pinMode(A2,OUTPUT);
    pinMode(A3,OUTPUT);
    pinMode(A4,OUTPUT);
    pinMode(A5,OUTPUT);

    }
    void loop()
    {
    byte pipeNo, gotByte;
    while( radio.available(&pipeNo))
    radio.read( joystick, sizeof(joystick));

    if(joystick[0])
    pwm = map(joystick[0],0,63,127,255);

    if(joystick[1])
    pwm1 = map(joystick[1],0,63,127,255);

    if(joystick[2])
    pwm2 = map(joystick[2],0,63,127,255);

    if(joystick[3])
    pwm3 = map(joystick[3],0,63,127,255);

    digitalWrite(3,LOW);
    digitalWrite(3,HIGH);

    digitalWrite(4,LOW);
    digitalWrite(4,HIGH);

    digitalWrite(7,LOW);
    digitalWrite(7,HIGH);

    digitalWrite(8,LOW);
    digitalWrite(8,HIGH);

    digitalWrite(A0,LOW);
    digitalWrite(A0,HIGH);

    digitalWrite(A1,LOW);
    digitalWrite(A1,HIGH);

    digitalWrite(A2,LOW);
    digitalWrite(A2,HIGH);

    digitalWrite(A3,LOW);
    digitalWrite(A3,HIGH);

    digitalWrite(A4,LOW); // на кнапки
    digitalWrite(A4,HIGH); // на кнапки

    digitalWrite(A5,LOW); // на кнапки
    digitalWrite(A5,HIGH); // на кнапки
    analogWrite(5, pwm);

    analogWrite(6, pwm1);

    analogWrite(9, pwm2);

    analogWrite(10, pwm3);
    }


    передатчик:
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h> //Скачиваем и устанавливаем библиотеку RF24 для радио модуля!!!!!!
    #define CE_PIN 1
    #define CSN_PIN 2
    #define JOYSTICK_X A0
    #define JOYSTICK_1_Y A1
    #define JOYSTICK_Z A2
    #define JOYSTICK_2_Y A3
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    RF24 radio(CE_PIN, CSN_PIN);
    int joystick[9];
    void setup()
    {
    radio.begin();
    delay(2);
    radio.setChannel(9);
    radio.setDataRate(RF24_250KBPS); // Установка минимальной скорости;
    radio.setPALevel(RF24_PA_HIGH); // Установка максимальной мощности;
    radio.openWritingPipe(pipe);
    pinMode(0, INPUT);
    digitalWrite(0, HIGH);
    pinMode(1, INPUT);
    digitalWrite(1, HIGH);
    pinMode(2, INPUT);
    digitalWrite(2, HIGH);
    pinMode(3, INPUT);
    digitalWrite(3, HIGH);
    }
    void loop()
    {
    radio.write( joystick, sizeof(joystick) );
    joystick[0] = analogRead(JOYSTICK_X);
    joystick[0] = map(joystick[0],0,63,127,255);

    joystick[1] = analogRead(JOYSTICK_1_Y);
    joystick[1] = map(joystick[1],0,63,127,255);

    joystick[2] = analogRead(JOYSTICK_Z);
    joystick[2] = map(joystick[2],0,63,127,255);

    joystick[3] = analogRead(JOYSTICK_2_Y);
    joystick[3] = map(joystick[3],0,63,127,255);
    }
    вот архив со скетчами, которые я делал и которые скачал
     

    Вложения:

    • RC.zip
      Размер файла:
      4,7 КБ
      Просмотров:
      131
  2. b707

    b707 Гуру

    Пишите, что делали, что получилось и в чем проблемы. Если же вам надо, чтобы сделали все за Вас - для этого есть раздел платных проектов
     
  3. Dark Toha

    Dark Toha Нуб

    я переделал скаченную прошивку, т.к. мне нужно управление 3 драйверами L298N, но она не работает, пины на которых не ШИМ сигнал постоянно выдают сигнал не зависимо от передатчика
     
  4. b707

    b707 Гуру

    Скетч - тот который выше?
    "Пины, которые не ШИМ" - это 4, 7, 8, А0 - А5 ?
     
  5. Dark Toha

    Dark Toha Нуб

    Да этот скетч
    Пини эти, только 3 тоже должен использоваться не как шим
     
  6. ostrov

    ostrov Гуру

    Джойстики откалибруйте для начала, они редко бывают точно в центре в отпущенном положении. А вообще, надо в центральном положении сделать небольшую мертвую зону.
     
  7. Dark Toha

    Dark Toha Нуб

    Так джоистиков пока нет они ещё не пришли так же как и два регулятора, но это фигня я проверял на 10 килоомном резисторе. Прикол что приёмник не реагирует на сигналы передатчика. Поидее при повороте резистора на пине шим должен появляется сигнал,а его нет
     
  8. b707

    b707 Гуру

    Ну так что ж вы удивляетесь - вы сами эти пины все время в HIGH устанавливаете
    И как я вижу - в коде передатчика этих пинов вообще нет - так что неудивительно, что они от радиоуправления не зависят :)
     
  9. Dark Toha

    Dark Toha Нуб

    Ну как бы я вообще первый раз столкнулся с программированием и вообще хз как чо делать.
    Лучше бы сказали что нужно исправить чтобы пины приёмника работали по команде с джойстиков передатчика
     
  10. b707

    b707 Гуру

    У тебя пока и исправлять нечего - у тебя вообще кода передачи этих пинов в скетче нет. Зато ты наворотил какую-то околесицу с ШИМ.. Ты сейчас передаешь только 4 PWM сигнала. Причем передаешь неправильно. Не надо делать преобразование диапазона функцией map() дважды - и на передаче и на приеме - так оно работать не будет. Оставь где-нибудь в одном месте. (если оно вообще нужно)

    И вообще - лучше этот чужой код выкинуть и написать свой с нуля. Свой. Начни с передачи значения одного пина. Чтобы не запутаться. А как получится - уже несложно будет передавать хоть пять, хоть 25.

    Ну и немного не по делу : ардуина - это не утюг, который купил, воткнул в розетку и работает. Тут придется книжки читать и разбираться. иначе ничего не выйдет.
     
  11. Dark Toha

    Dark Toha Нуб

    Ну осталось только время найти чтобы заниматься ардуино.
    А так, раньше гинеальней система р/у стояла, только огромная, как слон....
     
  12. Dark Toha

    Dark Toha Нуб

    Хм, ради одной прошивки та дико заморачиваться!? Как минимум не круто.....
     
  13. Airbus

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

    От и я о том же!Проще купить в кетае сейчас любую систему р/у можно взять а я ваще готовый Танк взял бы.
     
  14. b707

    b707 Гуру

    Ты неправильно понимаешь, зачем нужна ардуина :) Она не для того, чтоб по быстрому сделать какую-нить хрень - типа радиоуправление для игрушки или термостат для котла. На самом деле она для изучения программирования МК. А всякие поделки, которые народ делает и выставляет в инете - это побочный результат обучения.
    Если тебе не в кайф зависнуть на полгода-год, изучая Си и регистры - купи готовую игрушку в магазине и успокойся.
     
    issaom и Airbus нравится это.
  15. Dark Toha

    Dark Toha Нуб

    "Готовкю игрушку" это не прикольно, интереснее сделать своими руками, для меня что-то механическое или по электрике сделать не проблема, а вот с программированием вообще труба.
    Я в начале думал куплю ардуино, соберу р/у, скачаю в неё прошивку и всё. А оказалось, что тут хрень полнейшая.
     
  16. b707

    b707 Гуру

    я понимаю, когда так пишет человек лет в 60, а тебе 18... в чем проблема научиться писать программы? это ж очень многое дает - и математику, и логику подтянешь, английский опять же придется знать не для школы. а чтобы реально читать с листа
     
  17. Dark Toha

    Dark Toha Нуб

    Проблема хотя бы в том, что нет времени "учится писать программы"
     
  18. b707

    b707 Гуру

    Если нет времени делать что-то самому - надо пойти в магазин и купить готовое. Впрочем. мы это уже обсуждали :)
     
    Airbus нравится это.
  19. Dark Toha

    Dark Toha Нуб

    Ахринеть ради одной прошивки покупать готовое..... ну ну.
     
  20. DetSimen

    DetSimen Guest

    Либо поменять свои деньги на чужое время.