arduino и nrf24l01 нужна помощь с кодом

Тема в разделе "Arduino & Shields", создана пользователем vankenshtein, 16 апр 2014.

  1. zsm

    zsm Гик

    Вот рабочий код, управление 2 сервами + шим управление двигателем вперёд назад (естественно через драйвер) + одна дискретная кнопка.
    код корявый но рабочий) только что на столе проверял:)

    TX


    Код (Text):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #define CE_PIN  9
    #define CSN_PIN 10
    #define JOYSTICK_X A0
    #define JOYSTICK_Y A1
    #define JOYSTICK_Z A2
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    RF24 radio(CE_PIN, CSN_PIN);
    int joystick[4];
    void setup()

    {
      Serial.begin(9600);
      radio.begin();
      radio.openWritingPipe(pipe);
      pinMode(2, INPUT);
      digitalWrite(2, HIGH);
    }


    void loop()
    {
      joystick[0] = analogRead(JOYSTICK_X);
      joystick[0] = map(joystick[0],0,1023,1,180);
      joystick[1] = analogRead(JOYSTICK_Y);
      joystick[2] = analogRead(JOYSTICK_Z);
      joystick[2] = map(joystick[2],0,1023,1,180);
      joystick[3] = digitalRead(2);
     
      radio.write( joystick, sizeof(joystick) );
    }
    RX

    Код (Text):
    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Servo.h>
    Servo myservo;
    Servo myservo2;
    #define CE_PIN  9
    #define CSN_PIN 10
    int pwm = 0;
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    RF24 radio(CE_PIN, CSN_PIN);
    int joystick[4];
    void setup()
    {
     
      delay(1000);
     
      radio.begin();
      radio.openReadingPipe(1,pipe);
      radio.startListening();;
      myservo.attach(4);
      myservo2.attach(8);
      pinMode(2, OUTPUT);
    }


    void loop()
    {
      if ( radio.available() )
      {
       
        bool done = false;
        while (!done)
        {
          done = radio.read( joystick, sizeof(joystick) );
         
          myservo.write(joystick[0]);
          myservo2.write(joystick[2]);
          digitalWrite(2, !joystick[3]);
         
         
        if(joystick[1]==512)
    {    analogWrite(3,0);
        analogWrite(5,0);
    }

    if(joystick[1]>524)
    {  pwm = map(joystick[1], 524,1024,10,255);
        analogWrite(5,0);
        analogWrite(3,pwm);
    }
    if(joystick[1]<500)
    {  pwm = map(joystick[1],500,0,10,255);
        analogWrite(3,0);
        analogWrite(5,pwm);
    }
         
         
      }
      }
      else
      {  
       
      }

      }
     
  2. vankenshtein

    vankenshtein Нерд

    Огромное вам спасибо!!! Протестирую отпишусь.
     
  3. vankenshtein

    vankenshtein Нерд

    Чаво то не работает. Вы от чего запитывали? У меня БП на 700ма. Мне кажется маловато
     
  4. zsm

    zsm Гик

    передатчик от usb , приёмник от блока питания 200 mA, так что дело не в питании похоже..
    nrf24l01 надеюсь от 3.3 питаете?
     
  5. vankenshtein

    vankenshtein Нерд

    да конечно. а вы не могли бы фотку подключения выложить. заранее благодарен
     
  6. zsm

    zsm Гик

    Настоятельно не рекомендую питать сервы как у меня, от Arduino, особенно в готовом устройстве где нагрузка будет, убьёте стабилизатор дуни)

    1 - GND
    2 - VCC 3.3V !!! NOT 5V
    3 - CE to Arduino pin 9
    4 - CSN to Arduino pin 10
    5 - SCK to Arduino pin 13
    6 - MOSI to Arduino pin 11
    7 - MISO to Arduino pin

    [​IMG]


    [​IMG]

     
    Последнее редактирование: 18 апр 2014
  7. vankenshtein

    vankenshtein Нерд

    Спасибо большое за подробные инструкции. В процессе. Позже отпигусь
     
  8. vankenshtein

    vankenshtein Нерд

    Заработало!!! Оказолось все дело в стабилизаторе. Похоже во время экспериментов, всетаки убил его. Друг заменил теперь все работает. Жду пока приедет регуль L298N. Еще раз спасибо вам большое
     
  9. vankenshtein

    vankenshtein Нерд

    Не стал ждать пока доедут драйвера. Поставили электронику от сервы. Машинка гоняет))) Всем спасибо за помощь