แสดงบทความที่มีป้ายกำกับ Serial.print() แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Serial.print() แสดงบทความทั้งหมด

วันอังคารที่ 14 กรกฎาคม พ.ศ. 2558

ทำไม Serial.print() ไม่ทำงานในส่วนของ setup()

หลายวันมานี้ทดลองเขียนโปรแกรม เขียนคำสั่งอยู่แต่ Arduino UNO R3 จนแทบจะลืม Leonardo และคราวนี้ลองหยิบจับมาทดสอบเขียนโปรแกรมดูบ้าง งานแรกก็เจอปัญหาเสียแล้ว

คำสั่ง Serial.print() ในส่วนของ setup() ไม่ทำงาน แต่ในส่วนของ loop() กลับทำงานได้ปกติ ก็งงอยู่พักใหญ่ไปค้นหาในอินเตอร์เน็ตก็มีคนเป็นเหมือนกัน แล้วได้คำตอบว่า

Leonardo เป็นบอร์ดที่ใช้ Chip Atmega32U4 ไม่เหมือน UNO R3 ดังนั้นจึงต้องสั่งให้โปรแกรมรอให้ Serial พร้อมทำงานก่อน
ลองดูตัวอย่างแรกก่อน
โปรแกรมในส่วนของ setup() จะมีคำสั่งพิมพ์เลข 10 ถอยหลังไปจนถึง 1 แล้วพิมพ์คำว่า Begin ระหว่างคำสั่งจะรอ 1 วินาที แต่เมื่อรันคำสั่งแล้วพบว่า กว่าจะเปิด Serial Monitor ได้โปรแกรมก็รันไปถึงการสั่งพิมพ์ เลข 6 แล้ว ดูเหมือนระบบจะทำงานเร็วขึ้น (?)

เริ่มพิมพ์ที่เลข 6


ตัวอย่างที่สอง
หลังจากนั้นเพิ่มคำสั่ง while (!Serial){} ไว้หลังบรรทัด Serial.begin(9600); แล้วเมื่อเปิด Serial Monitor โปรแกรมจะทำงานปกติ เริ่มตั้งแต่คำสั่งพิมพ์เลข 10 ไปเรื่อยๆ

เริ่มพิมพ์ที่ 10 เพราะมีคำสั่งตรวจสอบให้รอจนกว่า Serial จะพร้อมทำงาน

ปัญหาหญ้าปากคอกนี่ก็ทำให้เหนื่อยได้เหมือนกัน เสร็จจากเขียนบล็อกแล้วก็ต้องขอตัวไปนอนก่อน เพราะโหมเขียนโปรแกรมมาหลายคืนแล้ว คืนนี้ของเป็นอีกสักวันหนึ่งที่จะได้นอนก่อนสี่ทุ่ม... ราตรีสวัสดิ์ครับ...

Gtk4 ตอนที่ 6 Defining a Child object

Defining a Child object A Very Simple Editor ในบทความที่ผ่านมาเราสร้างโปรแกรมอ่านไฟล์ชนิดข้อความ และในบทความนี้ก็จะมาปรับแต่งโปรแกรมกันสักหน...