лёгкий вопрос

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Arduinщик, 21 июн 2014.

  1. acos

    acos Официальный гик Администратор

  2. ИгорьК

    ИгорьК Гуру

    Arduinщик, давайте-ка обратную связь! Видите как acos стремится помочь! В таком случае Вы просто обязаны как можно скорее отвечать, понятно Вам или нет происходящее.
    А за одно неплохо бы поведать, что Вы уже успели практически сделать: собрали схему со светодиодиком и она заработала, практически "играли" сервами, которые крутились, щелкали реле...
    ... хотел, как Мегакотейка, поставить "лайк", но... Чует мое сердце, что это объяснение для всех, кроме самого топикстартера :)
     
    acos нравится это.
  3. Arduinщик

    Arduinщик Нерд

    Курс прошёл.
    Скетч не компилируется.
    /**
    * A Mirf example to test the latency between two Ardunio.
    *
    * Pins:
    * Hardware SPI:
    * MISO -> 12
    * MOSI -> 11
    * SCK -> 13
    *
    * Configurable:
    * CE -> 8
    * CSN -> 7
    *
    * Note: To see best case latency comment out all Serial.println
    * statements not displaying the result and load
    * 'ping_server_interupt' on the server.
    */

    /*
    Там сверху написано, что этот пример просто показывает как
    проверить временную задержку при связи двух ардуин
    Пины для подключения:

    * встроенный SPI на Arduino Uno находится на этих пинах:
    * MISO -> 12
    * MOSI -> 11
    * SCK -> 13
    Тут нужно быть осторожным. Нпример на Arduino Leonardo
    SPI совсем не там. Единственное в чем можно быть уверенным
    SPI есть на ICSP пинах

    *
    Вот эти пины можно выбрать самостоятельно. Автор выбрал 7 и 8
    * Configurable:
    * CE -> 8
    * CSN -> 7


    */

    //вот эти все библиотеки нам понадобятся
    #include <SPI.h>
    #include <Mirf.h>
    #include <nRF24L01.h>
    #include <MirfHardwareSpiDriver.h>

    // Ну всё, далее стандартный setup()
    void setup(){

    //Включаем последовательный порт на 9600,
    // через него будем смотреть результаты работы ардуины на компьютере
    Serial.begin(9600);
    // сейчас будем конфигурировать SPI видимо
    /*
    * Setup pins / SPI.
    */
    //это похоже закладки автора для быстрой замены пинов в коде
    /* To change CE / CSN Pins:
    *
    * Mirf.csnPin = 9;
    * Mirf.cePin = 7;
    */
    /*
    Mirf.cePin = 7;
    Mirf.csnPin = 8;
    */
    //Инициализация SPI. Видимо библиотека очень старая (да и файл с расширением .pde намекает)
    Mirf.spi = &MirfHardwareSpi; //присваеваем какому-то объекту из библиотеки Mirf адрес объектаMirfHardwareSpi не компилируется эта строка. Наверное другие тоже.
    //Пока не очень хочется разбираться - что это, но нам и не всегда обязательно, библиотеки - для людей)
    Mirf.init(); // Пошла инициализация библиотеки

    /*
    * Configure reciving address.
    */

    Mirf.setRADDR((byte *)"clie1"); // тут мы обзываем себя клиентом и
    //выставляем это как адрес нашего приёмопередатчика

    /*
    * Set the payload length to sizeof(unsigned long) the
    * return type of millis().
    *
    * NB: payload on client and server must be the same.
    */

    Mirf.payload = sizeof(unsigned long); // Тут выставляется размер того, что будем передавать
    // на той стороне этот размер должен быть таким же

    /*
    * Write channel and payload config then power up reciver.
    */

    /*
    * To change channel:
    *
    * Mirf.channel = 10;
    *
    * NB: Make sure channel is legal in your area.
    */

    Mirf.config(); // пошла конфигурация NRF24L01

    Serial.println("Beginning ... "); // пишем в комп "Начинаем"
    }

    void loop(){
    unsigned long time = millis(); // берём текущее время в миллисекундах в переменную time
    // её размер не зря совпадает с Mirf.payload, эту переменную мы будем передавать

    Mirf.setTADDR((byte *)"serv1"); // установили адрес той стороны, куда слать

    Mirf.send((byte *)&time); // Mirf кушает ссылку на нашу переменную,
    //чтобы её потом выплюнуть в "ту сторону"

    while(Mirf.isSending()){ //тупо ждём пока NRF24 не отправит данные
    } // можно не ждать если использовать прерывания, но для них пока рано

    Serial.println("Finished sending"); //"Всё готово, Шеф!"
    delay(10); // обождём зачем-то

    while(!Mirf.dataReady()){ // тупо ждём ответа с той стороны
    //Serial.println("Waiting");
    if ( ( millis() - time ) > 1000 ) { //если ждем уже больше секунды
    Serial.println("Timeout on response from server!"); //то ждать вестей уже не имеет смысла
    return;
    }
    }

    Mirf.getData((byte *) &time); // а если данные пришли,
    //то запомним их обратно в переменную time (подсказка - в коде сервера можно увидеть
    //что тот просто передаёт нам обратно то же значение time, что мы ему отправляли ранее)

    Serial.print("Ping: "); //Хозяин!
    Serial.println((millis() - time)); //Задержка в передаче составила
    // текущее время минус значение текущего времени в тот момент, когда мы отправляли сообщение

    delay(1000); // Теперь можно передохнуть, увидимся через секунду на следующем витке функции loop()
    }

    /*Может быть это потому что у меня только библиотека Mirf? У меня нет библиотек
    <nRF24L01.h> и <MirfHardwareSpiDriver.h> .
    */
     
  4. Arduinщик

    Arduinщик Нерд

  5. Arduinщик

    Arduinщик Нерд

    Я это прекрасно понимаю я блогадарен acos за его старания мне помочь, я стараюсь давать обратную связь.
     
    Последнее редактирование: 5 июл 2014
  6. Arduinщик

    Arduinщик Нерд

  7. acos

    acos Официальный гик Администратор

    Нет. То что всё компилируется без ошибок я и сам проверил. Ваша задача - собрать схему и проверить работоспособность в железе. Начните изучать связь с простого - пока на Serial().
    По поводу Mirf. Вы должны скопировать себе весь проект с гитхаба. https://github.com/aaronds/arduino-nrf24l01
    На той страничке есть большая кнопка Download ZIP - нажмите её и скачайте. Библиотеки для людей часто строятся на других библиотеках.
     
  8. Arduinщик

    Arduinщик Нерд

    Сейчас скачал, знаете вы правы сейчас мне надо в изучать serial структуру, а потом только потихоньку к беспроводному подключению.
     
    acos нравится это.