Showing posts with label symaarduino.. Show all posts
Showing posts with label symaarduino.. Show all posts

Sunday, May 23, 2021

PENERIMA UNTUK ALAT KAWALAN JAUH SYMA X5C.

SYMA X5C dengan NRF24L01

 

Litar yang kawe bina.

Sambungan :

NRF24L01               UNO

Vcc               >           3.3V dari regulator luar.
Gnd               >           Gnd
CE                 >           D10
CSN              >           D9
SCK              >           D13
MISO                      D12
MOSI            >           D11

Servo                          UNO

Vcc                >               5v atau dari bateri 
Gnd                >               Gnd
Signal             >               D8

Motor                          UNO

+                    >            5v atau dari bateri         
-                     >            D3

LED                            UNO

led1              >             D7  
led2              >             D6
led3              >             D5


Kod yang telah kawe ubah untuk ujian.

[code]

/* symax_rx.ino -- An arduino sketch to test the protocol symax

 *

 */


#include <SPI.h>

#include <symax_protocol.h>

#include <Servo.h>


Servo myservo;  // create servo object to control a servo


nrf24l01p wireless; 

symaxProtocol protocol;


unsigned long time = 0;

int outputValue = 0;

 int outputValue2 =0;

void setup() {


 Serial.begin(57600);

  pinMode(7,OUTPUT);

   pinMode(6,OUTPUT);

    pinMode(5,OUTPUT);

    pinMode(3,OUTPUT);


  myservo.attach(8);  // attaches the servo on pin 8 to the servo object



  // SS pin must be set as output to set SPI to master !

  pinMode(SS, OUTPUT);


  // Set CE pin to 10 and CS pin to 9

  wireless.setPins(10,9);

  

  // Set power (PWRLOW,PWRMEDIUM,PWRHIGH,PWRMAX)

  wireless.setPwr(PWRLOW);

  

  protocol.init(&wireless);

  

  time = micros();

  Serial.println("Start");

  

}


rx_values_t rxValues;


unsigned long newTime;


void loop() 

{

  time = micros();

  uint8_t value = protocol.run(&rxValues); 

  newTime = micros();

   

  switch( value )

  {

    case  NOT_BOUND:

        Serial.println("Not bound");

        digitalWrite(5,LOW);

        digitalWrite(7,HIGH);

        delay(500);

          digitalWrite(7,LOW);

          delay(500);

          digitalWrite(7,HIGH);

         delay(500);

          digitalWrite(7,LOW);

         delay(500);

          digitalWrite(7,HIGH);

          delay(500);

          digitalWrite(7,LOW);

        delay(500);

    break;


    case  BIND_IN_PROGRESS:

        Serial.println("Bind in progress");

         digitalWrite(6,HIGH);

         delay(500);

          digitalWrite(6,LOW);

          delay(500);

          digitalWrite(6,HIGH);

         delay(500);

          digitalWrite(6,LOW);

         delay(500);

          digitalWrite(6,HIGH);

          delay(500);

          digitalWrite(6,LOW);

         delay(500);

    break;

    

    case BOUND_NEW_VALUES:

     digitalWrite(6,LOW);

    digitalWrite(5,HIGH);

      Serial.print(newTime - time);

      Serial.print(" :\t");Serial.print(rxValues.throttle);

      Serial.print("\t"); Serial.print(rxValues.yaw);

      Serial.print("\t"); Serial.print(rxValues.pitch);

      Serial.print("\t"); Serial.print(rxValues.roll);

      Serial.print("\t"); Serial.print(rxValues.trim_yaw);

      Serial.print("\t"); Serial.print(rxValues.trim_pitch);

      Serial.print("\t"); Serial.print(rxValues.trim_roll);

      Serial.print("\t"); Serial.print(rxValues.video);

      Serial.print("\t"); Serial.print(rxValues.picture);

      Serial.print("\t"); Serial.print(rxValues.highspeed);

      Serial.print("\t"); Serial.println(rxValues.flip);

      //time = newTime;


      myservo.write(map(rxValues.roll, -127, 127, 0, 180));  // tell servo to go to position

    //  outputValue = map(rxValues.yaw,0,127,0,255);

       //outputValue2 = map(rxValues.yaw,0,-127,0,255);

      analogWrite(3,rxValues.throttle);

     // analogWrite(5,rxValues.pitch);

      //analogWrite(6,outputValue);

       //analogWrite(6,outputValue2);

      analogWrite(6,rxValues.yaw);

    break;


    case BOUND_NO_VALUES:

      //Serial.print(newTime - time); Serial.println(" : ----");

    break;


    default:

    break;


  }


}

[/code]


Video ujian :

https://youtu.be/nL16P1-xNtc




Terima kasih kepada penulis kod yang asal,anda boleh rujuk akaun github beliau di pautan dibawah.


Kod asal:

https://github.com/Suxsem/symaxrx