ความรู้แน่น ฟรีสำหรับชุมชน ArduinoAll ที่นี่เท่านั้น

ฟรีและดีที่สุด คอร์สอบรม Arduino + NodeMCU
ทำเพื่อแบ่งปัน ห้ามนำไปจำหน่าย หรือเก็บเงินค่าเรียน
  !!!


  


AllNewStep รับประกันคุณภาพทุกชิ้น วันจันทร์-ศุกร์แจ้งชำระสินค้าก่อน 14.00 จัดส่งทันทีวันนี้ค่ะ

กรุงเทพ /ภาคกลาง ได้พรุ่งนี้


*** สินค้าทุกชิ้น ถ้าสามารถทำรายการสั่งซื้อได้ แสดงว่ามีครบทุกรายการค่ะ *** 

พิมพ์ค้นหาบทความ หัวข้อกระทู้ และสินค้าในเว็บ AllNewStep ได้ที่นี่
QUOTE 

ส่งค่า gyro ผ่าน nrf24l01

Santisuk Chompan SG

สวัสดีครับพี่ รบกวนสอบถามหน่อยครับ

ผมต้องการส่งข้อมูลของ gyro ไปยังอาดูโน่อีกตัวนึง โดยผ่าน nrf24l01 

เเต่เมื่อผมให้อาดูโน่อ่านค่า gyro อย่างเดียวสามารถอ่านเเละตอบสนองได้เร็ว เเล้วเมื่อนำโค๊ดของ nrf24l01 มาใส่ ปรากฏว่า gyro ตอบสนอง ช้าลงเเละอ่านช้าลงมากมันเกิดจากอะไรหรอครับ

ขอบคุณครับ

นี่คือ code ของผมครับ

#include <Wire.h>

#include <MPU6050.h>

#include <SPI.h>

#include <nRF24L01p.h>

nRF24L01p transmitter(7, 8); //CSN,CE

MPU6050 mpu;

 

// Timers

unsigned long timer = 0;

float timeStep = 0.1;

float new_roll = 0;

// Pitch, Roll and Yaw values

float pitch = 0;

float roll = 0;

float yaw = 0;

 

void setup() 

{

  Serial.begin(115200);// Initialize MPU6050

  SPI.begin();

  SPI.setBitOrder(MSBFIRST);

  transmitter.channel(90); // ตั้งช่องความถี่ให้ตรงกัน

  transmitter.TXaddress("ALL"); // ตั้งชื่อตำแหน่งให้ตรงกัน ชื่อตั้งได้สูงสุด 5 ตัวอักษร

  transmitter.init();

  while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))

  {

    Serial.println("Could not find a valid MPU6050 sensor, check wiring!");

    delay(500);

  }

   mpu.calibrateGyro();

  mpu.setThreshold(3);

  timer = millis();

  // Read normalized values

  Vector norm = mpu.readNormalizeGyro(); 

  roll = roll + norm.XAxis * timeStep;  

  new_roll=roll ;

 

}

String message;

int x;

void loop()

{

  timer = millis();  // Read normalized values

  Vector norm = mpu.readNormalizeGyro(); // Calculate Pitch, Roll and Yaw

  roll = roll + norm.XAxis * timeStep;// Output raw

 Serial.print(" Roll = ");

 Serial.println(new_roll-roll);   // Wait to full timeStep period

  delay((timeStep*1000) - (millis() - timer));

  delay(10);

  if (new_roll-roll>30&&new_roll-roll<40)

  {

     

      Serial.println("1");

      transmitter.txPL("1"); // ค่าที่ต้องการส่ง

      transmitter.send(FAST); // สั่งให้ส่งออก

  }

   

}

QUOTE 
ความคิดเห็นที่ #1
เจ้าของร้าน

gyro และ nrf24L01 ส่งค่าได้เร็วอยู่แล้ว สามารถทดลองแยกแต่ละส่วนเพื่อทดสอบผลลัพธ์ได้ครับ

สาเหตุที่ช้า เป็นที่โคดตรงคำสั่ง delay จะทำให้ทุกส่วนหยุดทำงาน จนกว่าจะ delay สำเร็จ

เช็คตรง delay นี้ครับ

แสดงความคิดเห็นที่ 1-1 จากทั้งหมด 1 ความคิดเห็น
ขาย ARDUINO
คุณภาพ อันดับ 1

ได้รับรางวัลร้านยอดเยี่ยม
ตั้งแต่ปี 2558
ขาย Arduino
วีดีโอสอน Arduino

สอน esp8266

สอน Arduino IoT
สอน Arduino แบบเร็ว

สอน NodeMCU

อุปกรณ์ Arduino

MEMBER ZONE

พูดคุย-สอบถาม