มีวิธีการจำลองการทำงานของโปรแกรมก่อนเขียนลงบนบอร์ดหรือไม่?


24

บางครั้งโปรแกรมอาจมีข้อผิดพลาดรันไทม์ บางครั้งก็หายากและพลาดได้ง่าย มีวิธีทดสอบโปรแกรมก่อนที่จะเขียนลงบนกระดานหรือไม่?


อาจเกี่ยวข้องกับarduino.stackexchange.com/q/84/25
powtac

อาจเกี่ยวข้องกับarduino.stackexchange.com/questions/20/…

คุณอาจมีปัญหาข้อผิดพลาดเกิดขึ้นกับ Arduino จริงเท่านั้น (ฉันไม่สามารถยกตัวอย่างได้)
ขั้วโลก

@Polar ในแง่ของโปรแกรมตรรกะฉันไม่สามารถจินตนาการได้อย่างไร คุณอาจจะอาจจะโพสต์ใด ๆเช่น?
asheeshr

คำตอบ:


19

มีโปรเจ็กต์ Arduino Simulator อยู่สองสามตัว

บางทีอาจจะเป็นอีกคนหนึ่งที่เป็นผู้ใหญ่คนเป็นVirtronics จำลองสำหรับ Arduino , วิดีโอ YouTube ที่นี่

Virtronics Arduino Simulator

หน้า Virtronics ที่ลิงค์ด้านบนยังแสดงรายการตัวจำลอง Arduino อื่นอีกสองสามรายการทั้งแบบฟรีและมีค่าใช้จ่าย

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

สิ่งที่ควรทราบคือมีแอพArduino Simulator iPhone : นี่ยังไม่ใช่คำแนะนำที่ยังไม่ได้เปิดใช้งาน


ในหมายเหตุด้าน:

Arduino อยู่ในตัวเองคณะกรรมการการสร้างต้นแบบ / การทดลอง มันเหมาะสำหรับการเขียนโปรแกรมรหัสทดลองแก้จุดบกพร่องก็แก้ไขแล้วอีกครั้งกระพริบรหัสสดสวยมากหลาย ๆ ครั้งเป็นหนึ่งในสิ่งที่ชอบ หากรหัสแฮงค์ให้รีเซ็ตและ reflash เมื่อมีการเปลี่ยนแปลงใด ๆ

ดังนั้นข้อดีของการใช้โปรแกรมจำลองซึ่งไม่สามารถเลียนแบบจังหวะเวลาในโลกแห่งความจริงหรือปัญหาอื่น ๆ ที่แอพพลิเคชั่นเผชิญได้อย่างสมบูรณ์แบบ

หากค่าใช้จ่ายของ Arduino นั้นเป็นประเด็นที่กังวล

  • Arduino Nano ราคาไม่แพงโคลนอีเบย์ - ฉันมีแผงเพิ่มประสิทธิภาพ Meduino Nanoหลายอันพวกเขาทำงานได้อย่างยอดเยี่ยมและมีราคาต่ำกว่า $ 10รวมถึงการจัดส่งทั่วโลก: Meduino Nano Enhancement
  • สร้าง Arduino ของคุณเอง - เว็บไซต์ Arduino จะนำคุณเข้าสู่การทำเขียงหั่นขนมซึ่งคุณไม่จำเป็นต้องประสานอะไรเลย!

ขอบคุณที่แบ่งปันลิงก์ไปยัง Virtronics Simulator!
powtac

ใช่การ debug และ reflash นั้นง่ายกว่ามาก ATMega328 แฟลชได้รับการจัดอันดับที่ 10,000 รอบการเขียนใหม่ดังนั้นแม้ว่าคุณจะเขียนใหม่ 10 ครั้งทุกวันคุณมีความสนุกมากกว่าสองปีก่อน :-) ค่อนข้างสนุกสำหรับนักอดิเรก หากคุณเพิ่มเข้าไปอีกเล็กน้อยคุณสามารถใช้บอร์ดรุ่นใหม่เพื่อทำการดีบั๊กและเมื่อพวกเขาเริ่มเสื่อมสภาพ (พูดหลังจาก 5,000 รอบ?) คุณสามารถใช้พวกมันสำหรับแอปพลิเคชั่นที่เสถียรและซื้อใหม่สำหรับการดีบัก
Lorenzo Donati สนับสนุน Monica

8

คุณสามารถค้นหาข้อผิดพลาดรันไทม์หากคุณสามารถก้าวผ่านโปรแกรมของคุณด้วยตนเองด้วยการเชื่อมต่อ Arduino และการดีบัก ( หลังจากดาวน์โหลดรหัสไปยัง Arduino) มีให้ในVisual Microแม้ว่าจะต้องใช้ Visual Studio คุณสามารถตั้งค่าเบรกพอยต์ประเมินตัวแปรและเปลี่ยนค่าตัวแปร นอกจากนี้คุณยังสามารถสร้างภาพของหน่วยความจำเมื่อเวลาผ่านไป:

ป้อนคำอธิบายรูปภาพที่นี่


เรียบร้อยมาก โครงการนี้มีความเป็นผู้ใหญ่มากน้อยเพียงใด IDE ยังคงทำงานได้อย่างราบรื่นในประสบการณ์ของคุณ
boardbite

ฉันไม่ได้ใช้มันเพื่อทำโปรไฟล์และฉันใช้มันเพียงชั่วครู่ แต่มันรวมเข้าด้วยกันและทำงานได้ดีสำหรับฉัน ฉันซาบซึ้งในความสามารถในการดีบักโดยไม่ต้องหันไปใช้ Serial.print

4

วิธีหนึ่งในการทำเช่นนี้คือการสร้างโปรแกรม wrapper สำหรับรหัสจริงซึ่งจำลองอินพุตทั้งหมดและรับเอาท์พุท (ดังนั้นการสร้างลูปข้อเสนอแนะ) ตามสภาพแวดล้อมจริง สิ่งนี้จะใช้ความพยายามผันแปรตามประเภทของโปรแกรมระดับการทดสอบและจำนวนอินพุต

โปรดทราบว่าในขณะที่เขียนโปรแกรมกระดาษห่อคุณควรเป็นไปตามกล่องดำ วิธี

ป้อนคำอธิบายรูปภาพที่นี่

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


คุณรู้ตัวอย่างหรือไม่ รหัส Arduino ส่วนใหญ่ที่ฉันเคยเห็นไม่มีการทดสอบหน่วยที่เหมาะสมแม้แต่กับชิ้นส่วนที่ไม่ต้องการอินพุต / เอาต์พุต
Jakob

@ Jakob ฉันมักจะเขียนรหัสของตัวเองสำหรับการทดสอบ มันเป็นประโยชน์สำหรับโครงการขนาดเล็ก
asheeshr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.