Arduino + LRF(Laser RangeFinder)

คือผมเรียนสาขาไฟฟ้าระบบราง รุ่นแรกเลยครับ ตอนนี้ ปวส.2
จะทำโปรเจคเลเซอร์วัดระยะด้วยเลเซอร์ครับ เอาไปวัดสาย Contact wire(สายส่ง) โดยใช้stepping motor ควบคุมการเล็งเลเซอร์ไปที่สายส่งครับ ชื่อเต็มๆคือ เครื่องตรวจวัดความสูงจากรางถึงสายคอนแทคไวร์ในระบบรถไฟฟ้า

รูปภาพ1
รูปภาพ2
รูปภาพ3
รูปภาพ4
รูปภาพ5
รูปภาพ6

แต่ตอนนี้ติดปัญหาที่ โค้ดตัวเลเซอร์ครับ ด้านการส่งและรับสัญญาณทางพอร์ต RX TX ครับ






ผมลองๆเขียนโค้ดก็เหมือนจะได้แต่ไม่แน่ใจเลยมาตั้งกระทู็ถามครับ
คลิปทดสอบเขียนโค้ด

เว็บข้อมูลและตัวอย่างจากต่างประเทศ
LRF 701A&5020A
LRF V2

แล้วตอนนี้อ่านค่าเป็นไงบ้าง คลิปที่ลงมาต้องเปิดเป็นสาธารณะนะครับ ดูไม่ได้

1 Likes

https://drive.google.com/file/d/1jA69UTrTWpe9WT8Ia73QXh7K3cXPpJ2m/view?usp=drivesdk

เปิดให้แล้วครับผม ก็ให้ส่งข้อมูลครับ คำสั่งรับข้อมูลยังไม่ทันได้ลองครับผม กำลังศึกษาทำความเข้าใจอยู่คับ

1 Likes

เอาโค้ตมาวางในนี้ด้วยสิ

1 Likes

แก้ไขเรียบร้อยครับ

1 Likes
String receive_buffer;
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(19200);
 
}

// the loop routine runs over and over again forever:
void loop() {
  Serial.write('D'); 
  delay (2000);
    if(Serial.available()>0)  
      {    receive_buffer = Serial.readString();     
           Serial.println(receive_buffer); 
  }
  
}

คลิปทดลองครับ

ตอนนี้ให้ป้อน+รับข้อมูลอัตโนมัติครับ แต่อยากให้กด push button แต่ละปุ่มแล้วให้รันตามคอมมานครับ ช่วยแนะนำทีครับ

คือลองเขียนให้พิมพ์ ตัวอักษรใน seria; monitor แล้วก็ มันก็ไม่ทำงานครับ ผมอาจจะเขียนผิดด้วยแหละครับ :sweat_smile:

ประมาณนี้ครับ

String receive_buffer;
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(19200);
 
}

// the loop routine runs over and over again forever:
void loop() {
if(digitalRead(Buttton1) == HIGH){

Serial.write('D'); 
  delay (2000);
    if(Serial.available()>0)  
      {    receive_buffer = Serial.readString();     
           Serial.println(receive_buffer); 
  }

}

if(digitalRead(Buttton2) == HIGH){

Serial.write('M'); 
  delay (2000);
    if(Serial.available()>0)  
      {    receive_buffer = Serial.readString();     
           Serial.println(receive_buffer); 
  }

}
  
  
}

โทษทีนะครับตอบช้าช่วงนี้ผมติดงานเยอะมาก ยังไงถึงไหนมาอัพเดทกันหน่อยนะครับ