พอดีผมเขียนให้ arduino ส่งค่าไปให้ c# ผ่าน serialport
แล้วพอเสียบ NRF24L01 ให้ arduino การส่งค่าของ arduino ก็เริ่มเพี้ยนน่ะครับ
กลายเป็นส่งไม่ครบตามคำที่ตั้งไว้ บางทีก็ตัดแยกคำแล้วส่งสองครั้ง
แต่พอดึง NRF24L01 ก็กลับมาส่งค่าตามปกติครบทุกคำ
พอจะมีอะไรแนะนำผมได้มั้ยครับ
ปล. ผมลองไล่ pin ที่เสียบดูแล้วมันจะเริ่มมีปัญหาเมื่อเสียบ MOSI หรือ MISO
จากข้อมูล ไม่น่าจะใช้กับอุปกรณ์ เพราะการส่งข้อมูลมีการเข้ารหัสและเช็คซัม ถ้าส่งไม่หมดจะถอดข้อความไม่ได้
ทดสอบได้โดยใช้โปรแกรม Arduino IDE เช็คใน Serial Monitor
สำหรับอาการนี้ สาเหตุเป็นเพราะ Serial Monitor ใน C# อ่านมาไม่หมด หลักฐานคือที่บอกว่า C# มีการตัดระหว่างคำ วิธีแก้ง่าย ๆ ให้หน่วงเวลาใน event ตอน SerialPort รับข้อมูล ใช้คำสั่ง Thread.sleep(100); เพื่อรอให้อ่านมาทั้งหมดครับ
เข้าใจแล้วครับดูเหมือนจะเป็นที่สายหรือไม่ก็อาดูโน่แล้วน่ะครับ
ลองเปลียนไปใช้อีกตัวก็ส่งค่าไปc#ได้ปกติ
อีกคำถามครับ
ผมใช้ ldr รับค่าแสงโดยให้เลเซอยิงตรงใส่เซ็นเซอน์เลย
ตอนอ่านค่ามันมีช่วงที่อ่านได้เป็น0ยาวติดกันประมาณ5-7ค่าได้ก่อนจะกลับมาอ่านค่าได้ปกติ วนไปเรื่อยๆน่ะครับ
พอจะรู้วิธีแก้มั้ยครับ
ใส่ C ค่า 0.1uf คร่อมขา VCC กับ GND ของ NRF24L01 เพื่อป้องกันสัญญาณรบกวนครับ
แต่สาเหตุหลักตามที่แนะนำไปแล้ว ตรงโคดใน C# อาการนี้จะสุ่มเกิด เปลี่ยนตัวใหม่ก็ไม่หาย ถ้าไม่แก้ที่โคด
ldr ให้ทดลองกับ arduino ide ดูค่าใน serial monitor ก่อนนะครับ ดีบั๊กทีละจุด จะได้รู้ว่าผิดตรงไหน
1 ส่วนของ ldr เป็นอีกงานนะครับผมลืมบอกไม่ได้เชื่อมต่อะไรกับ c#
อาการที่ผมบอกว่ามันอ่านค่าได้ช่วง0สลับกบัค่าที่อ่านได้จริง
เป็นการอ่านจาก arduino ide ครับ
ปล. ตัวบอร์ดผมที่ที่พูดถึงมี NRF24L01 ส่วนของdigital port
มี led RGB ติดตั้งสามขาแสดงสี ขาละ port อีก 7หลอด
ส่วนของ arnalog port เป็น ldr 9 port
คิดว่ามีส่วนไหนที่ทำให้เกิดการอ่านค่าช่วง 0 รึเปล่าครับ ผมพยายามหาวิธีแก้อยุ่
2 ส่วนตัวที่c#อ่านไม่ครบผมลองเติมโค้ตที่ให้รอแล้วก็ไม่หายน่ะครับ
เลยลองเปลียน arduno ดูน่ะครับ แต่เดียวผมลองเช็คโคดอีกรอบ ขอบคุณที่ให้คำแนะนำนะครับ
ตอบเท่าที่ได้ไปหมดแล้ว ตรงนี้ต้องลองดีบั๊กหน้างาน เพิ่มเติมครับ