รบกวนสอบถามเกี่ยวกับ code Arduino ครับ (Joy PS2, 433Mhz wireless)

เรื่องมีอยู่ว่า ผมใช้ Joy PS2 เชื่อมต่อกับ Arduino uno และ 433Mhz transmitter ส่วนอีกด้านเป็น Servo เชื่อมต่อกับ Arduino และ 433Mhz Receiver
จากนั้นก็กด Joy PS2 ที่ฝั่ง Transmitter และให้ฝั่ง Receiver โชว์ Serial.println ซึ่งก็ทำได้ปกติ ไม่มีปัญหาอะไร (โดยฝั่งรับต่อแค่ Arduino กับ Receiver)
แต่พอผมต่อ Servo ที่ฝั่ง Receiver เพิ่มเข้าไปขณะเปิด Serial monitor    Serial monitor ก็หยุดรับข้อมูลและไม่สามารถควบคุม Servo ได้
ซึ่ง Code ฝั่ง Receiver เขียนประมาณนี้ครับ

#include <RCSwitch.h>
#include <avr/io.h>
#include <Servo.h>

RCSwitch mySwitch = RCSwitch();

int led = 13;
int pos = 0;

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;


void setup() {  
  Serial.begin(9600);  
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
  pinMode (led,OUTPUT);

  servo1.attach(12);
  servo1.write(90);

  servo2.attach(11);
  servo2.write(90);

  servo3.attach(10);
  servo3.write(90);

  servo4.attach(9);
  servo4.write(90);

  servo5.attach(8);
  servo5.write(90);

  servo6.attach(7);
  servo6.write(90);

  
}

void loop() {
  
  if (mySwitch.available()) //obj.available() ใช้ตรวจสอบว่ามีข้อมูลใหม่รับเข้ามาได้หรือไม่
  {

    int value = mySwitch.getReceivedValue(); //obj.getReceivedValue() อ่านค่าออกมาจากข้อมูลที่รับได้


    if (value == 1)
    {
      Serial.println( mySwitch.getReceivedValue() );
      //car forword
    }
    
    else if (value == 2)
    {
      Serial.println( mySwitch.getReceivedValue() );
      //car backword
    }

    else if (value == 3)
    {
      Serial.println( mySwitch.getReceivedValue() );
      //car turn left
    }

    else if (value == 4)
    {
      Serial.println( mySwitch.getReceivedValue() );
      //car turn right
    }

    else if (value == 5)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo5.write(pos+=10);
    }

    else if (value == 6)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo5.write(pos-=10);
    }

    else if (value == 7)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo4.write(pos+=10);
    }

    else if (value == 8)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo4.write(pos-=10);
    }

    else if (value == 9)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo3.write(pos+=10);
    }

    else if (value == 10)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo3.write(pos-=10);
    }

    else if (value == 11)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo1.write(pos+=10);
    }

    else if (value == 12)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo1.write(pos-=10);
    }

    else if (value == 13)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo2.write(pos+=10);
    }

    else if (value == 14)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo2.write(pos-=10);
    }

    else if (value == 15)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo6.write(pos+=10);
    }

    else if (value == 16)
    {
      Serial.println( mySwitch.getReceivedValue() );
      servo6.write(pos-=10);
    }

    else
    {
      Serial.println("PLS control JOY");}
      digitalWrite (led, HIGH);
    }

    //mySwitch.resetAvailable(); //obj.resetAvailable() ใช้เพื่อลบ และยกเลิกไม่ใช้มีการอ่านข้อมูลซ้ำ
}

มีการรับข้อมูล 16 ช่อง ดังนี้ (ซ้าย, ขวา, บน, ล่าง, สี่เหลี่ยม, วงกลม, สามเหลี่ยม, กากบาท, L1, L2, R1, R2, L3, R3, select, start)
ปล.1 ส่วนตัวอยากใช้ Joy PS2 ดูก่อน ยังไม่อยากใช้ Joy wireless เพราะถ้าจะทำโปรเจคถัดไป ที่ต้องใช้ตัวส่งข้อมูลแบบอื่น
เช่น ใช้ sensor อ่านค่า แล้วค่อยส่งข้อมูล จะนำความรู้ไปพัฒนาต่อไม่ได้
ปล.2 ที่ไม่ใช้ wireless ตัวที่นิยมอย่าง nRF24L01p เพราะว่าติดเงื่อนไข Joy PS2 กับ nRF24L01p ใช้ pin ร่วมกันที่ pin 11, 12, 13
(มี Wireless ตัวอื่นแนะนำไหมครับ)
ปล.3 Serial.println (1, 2, 3, 4) ปล่อยทิ้งไว้ก่อน กะจะต่อ Motor แต่ยังไม่มีของครับ 555
รบกวน แชร์ความคิดเห็น ครับ
แสดงความคิดเห็น
อ่านกระทู้อื่นที่พูดคุยเกี่ยวกับ  Arduino วิศวกรรมคอมพิวเตอร์ Microcontroller C++ C (ภาษาคอมพิวเตอร์)
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่