เซ็นเซอร์ ev3 ทั้งหมดมีชื่อที่ถูกต้อง การเชื่อมต่ออิฐ EV3 สองก้อนขึ้นไป
ตามเนื้อผ้า หุ่นยนต์ที่สร้างขึ้นบนแพลตฟอร์ม เลโก้มายด์สตอร์ม EV3ได้รับการตั้งโปรแกรมโดยใช้สภาพแวดล้อมแบบกราฟิก LabVIEW ในกรณีนี้ โปรแกรมทำงานบนตัวควบคุม EV3 และหุ่นยนต์ทำงานโดยอัตโนมัติ ที่นี่ฉันจะพูดถึงอีกทางเลือกหนึ่งในการควบคุมหุ่นยนต์ - โดยใช้แพลตฟอร์ม .NET ที่ทำงานบนคอมพิวเตอร์
แต่ก่อนที่เราจะเข้าสู่การเขียนโปรแกรม เรามาดูบางกรณีที่สิ่งนี้อาจมีประโยชน์ก่อน:
- ต้องใช้การควบคุมระยะไกลของหุ่นยนต์จากแล็ปท็อป (เช่น โดยการกดปุ่ม)
- จำเป็นต้องรวบรวมข้อมูลจากตัวควบคุม EV3 และประมวลผลบนระบบภายนอก (เช่น สำหรับระบบ IoT)
- สถานการณ์อื่นๆ เมื่อคุณต้องการเขียนอัลกอริธึมควบคุมใน .NET และเรียกใช้จากคอมพิวเตอร์ที่เชื่อมต่อกับคอนโทรลเลอร์ EV3
LEGO MINDSTORMS EV3 API สำหรับ .NET
ตัวควบคุม EV3 ถูกควบคุมจากระบบภายนอกโดยการส่งคำสั่งไปยังพอร์ตอนุกรม รูปแบบคำสั่งนั้นอธิบายไว้ในชุดนักพัฒนาการสื่อสาร
แต่การใช้โปรโตคอลนี้ด้วยตนเองนั้นน่าเบื่อ ดังนั้นคุณสามารถใช้ wrapper .NET สำเร็จรูปซึ่ง Brian Peek เขียนอย่างระมัดระวัง ซอร์สโค้ดสำหรับไลบรารีนี้โฮสต์อยู่บน Github และสามารถดูแพ็คเกจที่พร้อมใช้งานบน Nuget
การเชื่อมต่อกับคอนโทรลเลอร์ EV3
คลาส Brick ใช้เพื่อสื่อสารกับคอนโทรลเลอร์ EV3 เมื่อสร้างอ็อบเจ็กต์นี้ คุณจะต้องส่งผ่านการใช้งานอินเทอร์เฟซ ICommunication ไปยังคอนสตรัคเตอร์ ซึ่งเป็นอ็อบเจ็กต์ที่อธิบายวิธีเชื่อมต่อกับคอนโทรลเลอร์ EV3 มีการใช้งานการสื่อสารผ่าน USB, การสื่อสาร Bluetooth และการสื่อสารเครือข่าย (การเชื่อมต่อ WiFi)
วิธีการเชื่อมต่อที่ได้รับความนิยมมากที่สุดคือผ่านบลูทูธ มาดูวิธีการเชื่อมต่อนี้ให้ละเอียดยิ่งขึ้น
ก่อนที่เราจะสามารถเชื่อมต่อกับคอนโทรลเลอร์ผ่าน Bluetooth โดยทางโปรแกรมได้ คอนโทรลเลอร์จะต้องเชื่อมต่อกับคอมพิวเตอร์โดยใช้การตั้งค่าระบบปฏิบัติการ
หลังจากเชื่อมต่อคอนโทรลเลอร์แล้ว ให้ไปที่การตั้งค่า Bluetooth และเลือกแท็บพอร์ต COM เราพบตัวควบคุมของเราแล้วเราต้องการ ขาออกท่าเรือ. เราจะระบุเมื่อสร้างวัตถุ BluetoothCommunication
รหัสสำหรับเชื่อมต่อกับคอนโทรลเลอร์จะมีลักษณะดังนี้:
การเชื่อมต่องาน async สาธารณะ (การสื่อสาร ICommunication) ( var communication = new BluetoothCommunication("COM9"); var Brick = _brick = new Brick(communication); await _brick.ConnectAsync(); )
หรือคุณสามารถระบุการหมดเวลาการเชื่อมต่อกับคอนโทรลเลอร์ได้:
รอ _brick.ConnectAsync(TimeSpan.FromSeconds(5));
การเชื่อมต่อกับเครื่องผ่าน USB หรือ WiFi ดำเนินการในลักษณะเดียวกัน ยกเว้นว่าจะใช้ออบเจ็กต์ UsbCommunication และ NetworkCommunication
การดำเนินการเพิ่มเติมทั้งหมดที่ดำเนินการบนคอนโทรลเลอร์จะดำเนินการผ่านวัตถุ Brick
มาหมุนเครื่องยนต์กันเถอะ
ในการรันคำสั่งบนคอนโทรลเลอร์ EV3 เราเข้าถึงคุณสมบัติ DirectCommand ของวัตถุ Brick ก่อนอื่นเรามาลองสตาร์ทเครื่องยนต์กันก่อน
สมมติว่ามอเตอร์ของเราเชื่อมต่อกับพอร์ต A ของคอนโทรลเลอร์ จากนั้นการทำงานมอเตอร์นี้ที่กำลังไฟ 50% จะมีลักษณะดังนี้:
รอ _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.A, 50);
มีวิธีอื่นในการควบคุมมอเตอร์ ตัวอย่างเช่น คุณสามารถหมุนมอเตอร์ไปยังมุมที่ระบุได้โดยใช้วิธี StepMotorAtPowerAsync() และ StepMotorAtSpeedAsync() มีหลายวิธีให้เลือก ได้แก่ โหมดการเปิดมอเตอร์ที่แตกต่างกัน - ตามเวลา, ความเร็ว, กำลัง ฯลฯ
การบังคับให้หยุดดำเนินการโดยใช้วิธี StopMotorAsync():
รอ _brick.DirectCommand.StopMotorAsync (OutputPort.A, จริง);
พารามิเตอร์ที่สองระบุถึงการใช้เบรก หากคุณตั้งค่าเป็นเท็จ มอเตอร์จะเคลื่อนที่จนหยุด
การอ่านค่าจากเซนเซอร์
คอนโทรลเลอร์ EV3 มีพอร์ตสี่พอร์ตสำหรับเชื่อมต่อเซ็นเซอร์ นอกจากนี้ มอเตอร์ยังมีตัวเข้ารหัสในตัวซึ่งช่วยให้สามารถใช้เป็นเซ็นเซอร์ได้ เป็นผลให้เรามี 8 พอร์ตที่สามารถอ่านค่าได้
พอร์ตสำหรับการอ่านค่าสามารถเข้าถึงได้ผ่านคุณสมบัติ Ports ของออบเจ็กต์ Brick พอร์ตคือชุดของพอร์ตที่มีอยู่บนคอนโทรลเลอร์ ดังนั้นในการทำงานกับพอร์ตเฉพาะคุณต้องเลือกพอร์ตนั้น InputPort.One ... InputPort.Four คือพอร์ตเซ็นเซอร์ และ InputPort.A ... InputPort.D คือตัวเข้ารหัสมอเตอร์
Var port1 = _brick.พอร์ต;
เซ็นเซอร์ใน EV3 สามารถทำงานในโหมดต่างๆ ได้ ตัวอย่างเช่น สามารถใช้เซ็นเซอร์สี EV3 เพื่อวัดแสงโดยรอบ วัดแสงสะท้อน หรือตรวจจับสีได้ ดังนั้นเพื่อที่จะ “บอก” เซ็นเซอร์อย่างชัดเจนว่าเราต้องการใช้งานอย่างไร เราจำเป็นต้องตั้งค่าโหมดของมัน:
Brick.Ports.SetMode (โหมดสีสะท้อนแสง);
เมื่อเชื่อมต่อเซ็นเซอร์แล้วและตั้งค่าโหมดการทำงานของเซ็นเซอร์แล้ว คุณสามารถอ่านข้อมูลจากเซ็นเซอร์ได้ คุณสามารถรับข้อมูล "ดิบ" ค่าที่ประมวลผล และค่าเปอร์เซ็นต์ได้
ลอย si = _brick.Ports.SIValue; int raw = _brick.Ports.RawValue; เปอร์เซ็นต์ไบต์ = _brick.Ports.PercentValue;
คุณสมบัติ SIValue ส่งคืนข้อมูลที่ประมวลผล ทุกอย่างขึ้นอยู่กับเซ็นเซอร์ที่ใช้และในโหมดใด เช่น เมื่อวัดแสงสะท้อน เราจะได้ค่าตั้งแต่ 0 ถึง 100 ขึ้นอยู่กับความเข้มของแสงสะท้อน (ดำ/ขาว)
คุณสมบัติ RawValue ส่งกลับค่าดิบที่ได้รับจาก ADC บางครั้งการใช้เพื่อการประมวลผลและการใช้งานในภายหลังจะสะดวกกว่า อย่างไรก็ตามในสภาพแวดล้อมการพัฒนา EV3 ก็สามารถรับค่า "ดิบ" ได้ - สำหรับสิ่งนี้คุณต้องใช้บล็อกจากแผงสีน้ำเงิน
หากเซ็นเซอร์ที่คุณใช้คาดว่าจะได้รับค่าเป็นเปอร์เซ็นต์ คุณก็สามารถใช้คุณสมบัติ PercentValue ได้เช่นกัน
การดำเนินการคำสั่งเป็นชุด
สมมติว่าเรามีรถเข็นหุ่นยนต์ที่มีสองล้อ และเราต้องการติดตั้งมันให้เข้าที่ ในกรณีนี้ล้อทั้งสองจะต้องหมุนไปในทิศทางตรงกันข้าม หากเราใช้ DirectCommand และส่งคำสั่งสองคำสั่งตามลำดับไปยังคอนโทรลเลอร์ บางเวลาอาจผ่านไประหว่างการดำเนินการ:
รอ _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.A, 50); รอ _brick.DirectCommand.TurnMotorAtPowerAsync (OutputPort.B, -50);
ในตัวอย่างนี้เราส่งคำสั่งให้หมุนมอเตอร์ A ด้วยความเร็ว 50 หลังจากส่งคำสั่งนี้สำเร็จเราก็ทำซ้ำเหมือนเดิมกับมอเตอร์ที่เชื่อมต่อกับพอร์ต B ปัญหาคือการส่งคำสั่งไม่เกิดขึ้นทันทีดังนั้นมอเตอร์ อาจเริ่มหมุนเวลาต่างกัน - ขณะกำลังส่งคำสั่งพอร์ต B มอเตอร์ A เรียบร้อยแล้วจะเริ่มหมุน
หากเป็นสิ่งสำคัญสำหรับเราที่จะต้องทำให้มอเตอร์หมุนในเวลาเดียวกัน เราสามารถส่งคำสั่งไปยังคอนโทรลเลอร์เป็น "ชุด" ได้ ในกรณีนี้ คุณควรใช้คุณสมบัติ BatchCommand แทน DirectCommand:
Brick.BatchCommand.TurnMotorAtPower (OutputPort.A, 50); _brick.BatchCommand.TurnMotorAtPower (OutputPort.B, -50); รอ _brick.BatchCommand.SendCommandAsync();
ขณะนี้มีการเตรียมคำสั่งสองคำสั่งพร้อมกันหลังจากนั้นจะถูกส่งไปยังคอนโทรลเลอร์ในแพ็กเก็ตเดียว เมื่อได้รับคำสั่งเหล่านี้แล้วผู้ควบคุมจะเริ่มหมุนมอเตอร์พร้อมกัน
คุณทำอะไรได้อีก
นอกจากการหมุนมอเตอร์และการอ่านค่าเซ็นเซอร์แล้ว คุณยังสามารถดำเนินการอื่นๆ ได้อีกหลายอย่างบนคอนโทรลเลอร์ EV3 ฉันจะไม่ลงรายละเอียดเกี่ยวกับแต่ละรายการ ฉันจะแสดงรายการเฉพาะสิ่งที่สามารถทำได้:
- CleanUIAsync(), DrawTextAsync(), DrawLineAsync() ฯลฯ - การจัดการหน้าจอในตัวของคอนโทรลเลอร์ EV3
- PlayToneAsync() และ PlaySoundAsync() - ใช้ลำโพงในตัวเพื่อเล่นเสียง
- WriteFileAsync() , CopyFileAsync() , DeleteFileAsync() (จาก SystemCommand) - ทำงานกับไฟล์
บทสรุป
การใช้ .NET เพื่อควบคุมหุ่นยนต์ Mindstorms EV3 แสดงให้เห็นอย่างดีว่าเทคโนโลยีจาก "โลกที่แตกต่าง" สามารถทำงานร่วมกันได้อย่างไร จากการวิจัย EV3 API สำหรับ .NET แอปพลิเคชันขนาดเล็กได้ถูกสร้างขึ้นซึ่งช่วยให้คุณสามารถควบคุมหุ่นยนต์ EV3 จากคอมพิวเตอร์ได้ น่าเสียดายที่มีแอปพลิเคชันที่คล้ายกันสำหรับ NXT แต่ EV3 ข้ามไป ในขณะเดียวกันก็มีประโยชน์ในการแข่งขันหุ่นยนต์ควบคุม เช่น หุ่นยนต์ฟุตบอล
สามารถดาวน์โหลดและติดตั้งแอปพลิเคชันได้จากลิงค์นี้:
หากคุณขาดความสามารถของเซ็นเซอร์ EV3 มาตรฐานเช่นเดียวกับเรา พอร์ต 4 พอร์ตสำหรับเซ็นเซอร์ในหุ่นยนต์ของคุณไม่เพียงพอ หรือคุณต้องการเชื่อมต่ออุปกรณ์ต่อพ่วงแปลกใหม่เข้ากับหุ่นยนต์ของคุณ - บทความนี้เหมาะสำหรับคุณ เชื่อฉันเถอะว่าเซ็นเซอร์แบบโฮมเมดสำหรับ EV3 นั้นง่ายกว่าที่คิด “ปุ่มปรับระดับเสียง” จากวิทยุเก่าๆ หรือตะปูสองสามตัวที่ติดอยู่กับพื้นในกระถางเนื่องจากเซ็นเซอร์ความชื้นในดินเหมาะสำหรับการทดลอง
น่าประหลาดใจที่พอร์ตเซ็นเซอร์ EV3 แต่ละพอร์ตซ่อนโปรโตคอลที่แตกต่างกันจำนวนหนึ่ง โดยส่วนใหญ่เพื่อความเข้ากันได้กับ NXT และเซ็นเซอร์ของบริษัทอื่น มาดูกันว่าสาย EV3 ทำงานอย่างไร
มันแปลก แต่สายสีแดงเป็นกราวด์ (GND) สายสีเขียวคือขั้วบวกของแหล่งจ่ายไฟ 4.3V สายสีน้ำเงินเป็นทั้ง SDA สำหรับบัส I2C และ TX สำหรับโปรโตคอล UART นอกจากนี้สายสีน้ำเงินยังเป็นอินพุตของตัวแปลงแอนะล็อกเป็นดิจิทัลสำหรับ EV3 สายสีเหลืองเป็นทั้ง SCL สำหรับบัส I2C และ RX สำหรับโปรโตคอล UART สายสีขาวคืออินพุตของตัวแปลงแอนะล็อกเป็นดิจิทัลสำหรับเซ็นเซอร์ NXT สีดำ - อินพุตดิจิตอลสำหรับเซ็นเซอร์ที่เข้ากันได้กับ NXT - จะทำซ้ำ GND ไม่ใช่เรื่องง่ายใช่ไหม? ไปตามลำดับกันเลย
อินพุตแบบอะนาล็อก EV3
พอร์ตเซ็นเซอร์แต่ละพอร์ตมีช่องตัวแปลงแอนะล็อกเป็นดิจิทัล ใช้สำหรับเซ็นเซอร์ต่างๆ เช่น เซ็นเซอร์สัมผัส (ปุ่ม), เซ็นเซอร์แสง NXT และเซ็นเซอร์สีในโหมดแสงสะท้อนและแสงโดยรอบ, เซ็นเซอร์เสียง NXT และเทอร์โมมิเตอร์ NXTความต้านทาน 910 โอห์มที่เชื่อมต่อตามแผนภาพ จะบอกคอนโทรลเลอร์ว่าต้องเปลี่ยนพอร์ตนี้เป็นโหมดอินพุตแบบอะนาล็อก ในโหมดนี้ คุณสามารถเชื่อมต่อเซ็นเซอร์แอนะล็อกกับ EV3 ได้ เช่น จาก Arduino อัตราแลกเปลี่ยนด้วยเซ็นเซอร์ดังกล่าวสามารถเข้าถึงหลายพันโพลต่อวินาที ซึ่งเป็นเซ็นเซอร์ประเภทที่เร็วที่สุด
เซ็นเซอร์วัดแสง
เทอร์โมมิเตอร์
เซ็นเซอร์ความชื้นในดิน
คุณยังสามารถเชื่อมต่อ: ไมโครโฟน ปุ่ม เครื่องวัดระยะ IR และเซ็นเซอร์ทั่วไปอื่นๆ อีกมากมาย หากพลังงาน 4.3V ไม่เพียงพอสำหรับเซ็นเซอร์ คุณสามารถจ่ายไฟด้วย 5V จากพอร์ต USB ที่อยู่ด้านข้างของคอนโทรลเลอร์ EV3
“ปุ่มปรับระดับเสียง” ที่กล่าวมาข้างต้น (หรือที่เรียกว่าตัวต้านทานแบบแปรผันหรือโพเทนชิออมิเตอร์) เป็นตัวอย่างที่ดีเยี่ยมของเซ็นเซอร์แบบอะนาล็อก โดยสามารถเชื่อมต่อได้ดังนี้:
หากต้องการอ่านค่าจากเซ็นเซอร์ดังกล่าวในสภาพแวดล้อมการเขียนโปรแกรม LEGO มาตรฐาน คุณต้องใช้บล็อก RAW สีน้ำเงิน
โปรโตคอล I2C
นี่เป็นโปรโตคอลดิจิทัล ตัวอย่างเช่น เซ็นเซอร์อัลตราโซนิก NXT และเซ็นเซอร์ไฮเทคนิคหลายตัว เช่น IR Seeker หรือเซ็นเซอร์สี V2 ก็ใช้งานได้ สำหรับแพลตฟอร์มอื่นๆ เช่น Arduino มีเซ็นเซอร์ i2c จำนวนมาก คุณสามารถเชื่อมต่อเซ็นเซอร์เหล่านั้นได้ด้วย โครงการมีดังนี้:
LEGO Group แนะนำให้ใช้ความต้านทาน 82 โอห์ม แต่แหล่งข้อมูลต่างๆ กล่าวถึง 43 โอห์มหรือน้อยกว่า ในความเป็นจริง เราพยายามที่จะละทิ้งการต่อต้านเหล่านี้โดยสิ้นเชิง และทุกอย่างได้ผล อย่างน้อยก็ "อยู่บนโต๊ะ" ในหุ่นยนต์จริงที่ทำงานในสภาวะที่มีการรบกวนประเภทต่างๆ สาย SCL และ SDA ควรยังคงเชื่อมต่อกับแหล่งจ่ายไฟผ่านความต้านทาน ดังที่ระบุไว้ในแผนภาพด้านบน ความเร็วการทำงานของ i2c ใน EV3 ค่อนข้างต่ำประมาณ 10,000 kbps ซึ่งเป็นสาเหตุที่ Hitechnic Color Sensor V2 ที่ทุกคนชื่นชอบจึงช้ามาก :)
น่าเสียดายที่สำหรับ EV3-G มาตรฐานจาก LEGO นั้นไม่มีบล็อกเต็มรูปแบบสำหรับการสื่อสารสองทางด้วยเซ็นเซอร์ i2c แต่การใช้สภาพแวดล้อมการเขียนโปรแกรมของบุคคลที่สาม เช่น RobotC, LeJOS หรือ EV3 Basic คุณสามารถโต้ตอบกับเซ็นเซอร์ i2c ได้เกือบทุกตัว .
ความสามารถของ EV3 ในการทำงานโดยใช้โปรโตคอล i2c เปิดความเป็นไปได้ที่น่าสนใจในการเชื่อมต่อเซ็นเซอร์หลายตัวเข้ากับพอร์ตเดียว โปรโตคอล I2C ช่วยให้คุณสามารถเชื่อมต่ออุปกรณ์ทาสได้ถึง 127 เครื่องในบัสเดียว คุณจินตนาการได้ไหม? เซ็นเซอร์ 127 ตัวสำหรับแต่ละพอร์ต EV3 :) ยิ่งไปกว่านั้น เซ็นเซอร์ i2c จำนวนมากรวมอยู่ในอุปกรณ์เครื่องเดียว เช่น ในภาพด้านล่างมีเซ็นเซอร์ 10 ใน 1 (ประกอบด้วยเข็มทิศ ไจโรสโคป มาตรความเร่ง บารอมิเตอร์ ฯลฯ)
ยูอาร์ที
เซ็นเซอร์ที่ไม่ใช่ EV3 มาตรฐานเกือบทั้งหมด ยกเว้น Touch Sensor ทำงานโดยใช้โปรโตคอล UART และนั่นคือสาเหตุที่ทำให้เซ็นเซอร์เหล่านี้เข้ากันไม่ได้กับคอนโทรลเลอร์ NXT ซึ่งถึงแม้จะมีตัวเชื่อมต่อเดียวกัน แต่ก็ไม่มี UART นำมาใช้กับเซ็นเซอร์ พอร์ต ดูแผนภาพ มันง่ายกว่าในกรณีก่อนหน้าเล็กน้อย:เซ็นเซอร์ UART จะจับคู่ความเร็วการทำงานกับ EV3 โดยอัตโนมัติ โดยเริ่มแรกเชื่อมต่อด้วยความเร็ว 2,400 กิโลบิต/วินาที โดยตกลงในโหมดการทำงานและอัตราแลกเปลี่ยน จากนั้นจึงเพิ่มความเร็ว อัตราแลกเปลี่ยนทั่วไปสำหรับเซ็นเซอร์ต่างๆ คือ 38400 และ 115200 kbit/s
LEGO ได้ใช้โปรโตคอลที่ค่อนข้างซับซ้อนในเซ็นเซอร์ UART ดังนั้นจึงไม่มีเซ็นเซอร์ของบุคคลที่สามที่ไม่ได้มีไว้สำหรับแพลตฟอร์มนี้ แต่เดิม แต่เข้ากันได้ อย่างไรก็ตามโปรโตคอลนี้สะดวกมากสำหรับการเชื่อมต่อแบบ "โฮมเมด"
เซ็นเซอร์ที่ใช้ไมโครคอนโทรลเลอร์
มีห้องสมุดที่ยอดเยี่ยมสำหรับ Arduino ชื่อ EV3UARTEmulation ซึ่งเขียนโดย Lawrie Griffiths ผู้พัฒนา LeJOS ที่มีชื่อเสียง ซึ่งช่วยให้บอร์ดนี้แกล้งทำเป็นเซ็นเซอร์ที่เข้ากันได้กับ UART-LEGO บล็อก LeJOS News ของเขามีตัวอย่างมากมายในการเชื่อมต่อเซ็นเซอร์ก๊าซ เซ็นเซอร์ IMU และเข็มทิศดิจิทัลโดยใช้ห้องสมุดนี้
ด้านล่างในวิดีโอเป็นตัวอย่างการใช้เซ็นเซอร์แบบโฮมเมด เรามีเซ็นเซอร์วัดระยะ LEGO ดั้งเดิมไม่เพียงพอ ดังนั้นเราจึงใช้เซ็นเซอร์แบบโฮมเมดกับหุ่นยนต์:
หน้าที่ของหุ่นยนต์คือเริ่มจากเซลล์สีเขียว หาทางออกจากเขาวงกต (เซลล์สีแดง) และกลับไปยังจุดเริ่มต้นด้วยเส้นทางที่สั้นที่สุด โดยไม่ไปสู่ทางตัน
เลือกโหมดหน้าจอ
การเลือกโหมด
บล็อกช่องข้อความ
อินพุต
ปุ่มแสดงตัวอย่าง
เลือกประเภทข้อความหรือกราฟิกที่คุณต้องการดูโดยใช้ตัวเลือกโหมด หลังจากเลือกโหมดแล้ว คุณสามารถเลือกค่าอินพุตได้ อินพุตที่ใช้ได้จะแตกต่างกันไปขึ้นอยู่กับโหมด โหมดและอินพุตอธิบายไว้ด้านล่าง
คุณสามารถคลิกปุ่มแสดงตัวอย่างเพื่อดูตัวอย่างสิ่งที่บล็อกการแสดงผลจะแสดงบนหน้าจอ EV3 คุณสามารถเปิดมุมมองทิ้งไว้ในขณะที่เลือกค่าอินพุตสำหรับบล็อก
พิกัดหน้าจอ
โหมดบล็อกหน้าจอหลายโหมดใช้พิกัด X และ Y เพื่อกำหนดตำแหน่งขององค์ประกอบ พิกัดจะกำหนดตำแหน่งของพิกเซลบนหน้าจอ EV3 Brick ตำแหน่ง (0, 0) อยู่ที่มุมซ้ายบนของหน้าจอตามที่แสดงในภาพด้านล่าง
ขนาดหน้าจอ: กว้าง 178 พิกเซลและสูง 128 พิกเซล ช่วงของค่าพิกัด X คือจาก 0 บนหน้าจอด้านซ้ายถึง 177 ทางด้านขวา ช่วงของค่าพิกัด Y คือตั้งแต่ 0 ที่ด้านบนถึง 127 ที่ด้านล่าง
เคล็ดลับและเทคนิค
คุณสามารถใช้ปุ่มแสดงตัวอย่างที่มุมซ้ายบนของบล็อกหน้าจอเพื่อช่วยคุณค้นหาพิกัดหน้าจอที่ถูกต้อง
ข้อความ - พิกเซล
ข้อความ - โหมดพิกเซลช่วยให้คุณแสดงข้อความได้ทุกที่บนหน้าจอ EV3 Brick
รีเซ็ตหน้าต่าง
โหมดรีเซ็ตหน้าต่างจะทำให้หน้าจอ EV3 Brick กลับไปเป็นหน้าจอข้อมูลมาตรฐานที่แสดงในขณะที่โปรแกรมกำลังทำงาน หน้าจอนี้แสดงชื่อโปรแกรมและข้อมูลคำติชมอื่นๆ เมื่อคุณรันโปรแกรมบน EV3 Brick หน้าจอนี้จะปรากฏขึ้นก่อนที่บล็อกหน้าจอแรกของโปรแกรมจะทำงาน
รับประกันการมองเห็นองค์ประกอบที่แสดง
เมื่อโปรแกรม EV3 เสร็จสิ้น หน้าจอ EV3 Brick จะถูกล้างและกลับสู่หน้าจอเมนู EV3 Brick ข้อความหรือกราฟิกใด ๆ ที่แสดงโดยโปรแกรมจะถูกลบ ตัวอย่างเช่น หากโปรแกรมของคุณมีบล็อก "หน้าจอ" หนึ่งบล็อกและไม่มีอะไรอื่นอีกเลย หน้าจอจะถูกล้างอย่างรวดเร็วทันทีหลังจากโปรแกรมสิ้นสุด ซึ่งคุณจะไม่เห็นผลลัพธ์ของบล็อก "หน้าจอ"
หากคุณต้องการให้หน้าจอยังคงมองเห็นได้หลังจากโปรแกรมเสร็จสิ้น คุณต้องเพิ่มบล็อกที่ส่วนท้ายของโปรแกรมเพื่อป้องกันไม่ให้โปรแกรมสิ้นสุดทันที ดังแสดงในตัวอย่างต่อไปนี้
แสดงรายการหลายรายการ
หากคุณต้องการแสดงองค์ประกอบข้อความหรือกราฟิกหลายรายการบนหน้าจอพร้อมกัน สิ่งสำคัญคือไม่ต้องล้างหน้าจอ EV3 Brick ระหว่างองค์ประกอบต่างๆ แต่ละโหมดของบล็อกหน้าจอมีอินพุตหน้าจอที่ชัดเจน หาก Clear Screen เป็นจริง หน้าจอทั้งหมดจะถูกล้างก่อนที่จะแสดงรายการ ซึ่งหมายความว่าหากต้องการแสดงหลายรายการ คุณต้องตั้งค่า Clear Screen เป็น False สำหรับทุกบล็อกหน้าจอ ยกเว้นบล็อกแรก
การแสดงตัวเลข
หากต้องการแสดงค่าตัวเลขในโปรแกรมของคุณ ให้เชื่อมต่อบัสข้อมูลเข้ากับช่องป้อนข้อความของบล็อกการแสดงข้อความ บัสข้อมูลตัวเลขจะถูกแปลงเป็นข้อความโดยอัตโนมัติโดยใช้การแปลงประเภทบัสข้อมูล (ดูหัวข้อ
คำอธิบายการนำเสนอเป็นรายสไลด์:
1 สไลด์
คำอธิบายสไลด์:
2 สไลด์
คำอธิบายสไลด์:
อินเทอร์เฟซ EV3 Brick EV3 Brick คือศูนย์ควบคุมที่ขับเคลื่อนหุ่นยนต์ของคุณ ด้วยหน้าจอ ปุ่มควบคุม Brick และอินเทอร์เฟซ EV3 Brick ซึ่งมีหน้าต่างหลักสี่หน้าต่าง คุณสามารถเข้าถึงคุณสมบัติ EV3 Brick ที่เป็นเอกลักษณ์อันน่าทึ่งที่หลากหลาย สิ่งเหล่านี้อาจเป็นฟังก์ชันง่ายๆ เช่น การเริ่มต้นและการหยุดโปรแกรม หรือฟังก์ชันที่ซับซ้อน เช่น การเขียนโปรแกรมเอง
3 สไลด์
คำอธิบายสไลด์:
อินเทอร์เฟซ: เมนู EV3 มีเมนูที่ประกอบด้วย 4 ส่วน: โปรแกรมล่าสุด การนำทางไฟล์ แอปพลิเคชันอิฐ การตั้งค่าอิฐ
4 สไลด์
คำอธิบายสไลด์:
โปรแกรมล่าสุด เปิดโปรแกรมที่เพิ่งดาวน์โหลดจากเดสก์ท็อปพีซีของคุณ หน้าต่างนี้จะยังคงว่างเปล่าจนกว่าคุณจะเริ่มดาวน์โหลดและรันโปรแกรม หน้าต่างนี้จะแสดงโปรแกรมที่คุณเพิ่งเปิดตัว โปรแกรมที่ด้านบนของรายการซึ่งถูกเลือกไว้ตามค่าเริ่มต้นคือโปรแกรมที่เปิดตัวครั้งล่าสุด
5 สไลด์
คำอธิบายสไลด์:
ตัวจัดการไฟล์ เข้าถึงและจัดการไฟล์ทั้งหมดที่จัดเก็บไว้ในหน่วยความจำไมโครคอมพิวเตอร์ รวมถึงในการ์ดหน่วยความจำ จากหน้าต่างนี้ คุณจะเข้าถึงและจัดการไฟล์ทั้งหมดใน EV3 Brick ของคุณ รวมถึงไฟล์ที่จัดเก็บไว้ในการ์ด SD ไฟล์ต่างๆ จะถูกจัดระเบียบเป็นโฟลเดอร์โปรเจ็กต์ ซึ่งนอกเหนือจากไฟล์โปรแกรมจริงแล้ว ยังมีเสียงและรูปภาพที่ใช้ในแต่ละโปรเจ็กต์อีกด้วย ไฟล์สามารถย้ายหรือลบได้โดยใช้ตัวนำทางไฟล์ โปรแกรมที่สร้างขึ้นโดยใช้สภาพแวดล้อมการเขียนโปรแกรมโมดูลและแอปพลิเคชันการบันทึกข้อมูลโมดูลจะถูกจัดเก็บแยกกันในโฟลเดอร์ BrkProg_SAVE และ BrkDL_SAVE
6 สไลด์
คำอธิบายสไลด์:
แอปพลิเคชันกล่องควบคุม EV3 มีแอปพลิเคชันที่ติดตั้งไว้ล่วงหน้า 4 รายการ: A. มุมมองพอร์ต ข. การควบคุมมอเตอร์ ข. การควบคุมอินฟราเรด D. สภาพแวดล้อมการเขียนโปรแกรมโมดูล
7 สไลด์
คำอธิบายสไลด์:
A. Port View ในหน้าต่างแรกของแอปพลิเคชัน Port View คุณสามารถดูได้อย่างรวดเร็วว่าพอร์ตใดมีเซ็นเซอร์หรือมอเตอร์เชื่อมต่ออยู่ ใช้ปุ่มควบคุม EV3 Brick เพื่อนำทางไปยังพอร์ตใดพอร์ตหนึ่งที่ถูกครอบครอง และคุณจะเห็นการอ่านค่าปัจจุบันจากเซ็นเซอร์หรือมอเตอร์ ติดตั้งเซ็นเซอร์และมอเตอร์หลายตัว และทดลองด้วยการตั้งค่าที่แตกต่างกัน หากต้องการดูหรือเปลี่ยนการตั้งค่าปัจจุบันสำหรับมอเตอร์และเซ็นเซอร์ที่ติดตั้ง ให้กดปุ่มกลาง หากต้องการกลับไปยังหน้าต่างแอปพลิเคชันหลักของโมดูล ให้คลิกปุ่ม "ย้อนกลับ"
8 สไลด์
คำอธิบายสไลด์:
B. การควบคุมมอเตอร์ ควบคุมการเคลื่อนที่ไปข้างหน้าหรือย้อนกลับของมอเตอร์ใดๆ ที่เชื่อมต่อกับพอร์ตเอาท์พุตพอร์ตใดพอร์ตหนึ่งจากสี่พอร์ต มีสองโหมดที่แตกต่างกัน ในโหมดหนึ่ง คุณจะสามารถควบคุมมอเตอร์ที่เชื่อมต่อกับพอร์ต A (โดยใช้ปุ่มขึ้นและลง) และพอร์ต D (โดยใช้ปุ่มซ้ายและขวา) ในโหมดอื่น คุณจะควบคุมมอเตอร์ที่เชื่อมต่อกับพอร์ต B (โดยใช้ปุ่มขึ้นและลง) และพอร์ต C (โดยใช้ปุ่มซ้ายและขวา) การสลับระหว่างสองโหมดนี้ทำได้โดยใช้ปุ่มกลาง หากต้องการกลับไปยังหน้าต่างแอปพลิเคชันหลักของโมดูล ให้คลิกปุ่ม "ย้อนกลับ"
สไลด์ 9
คำอธิบายสไลด์:
การควบคุม IR ควบคุมการเคลื่อนที่ไปข้างหน้าหรือย้อนกลับของมอเตอร์ที่เชื่อมต่อกับพอร์ตเอาต์พุตพอร์ตใดพอร์ตหนึ่งจากสี่พอร์ตโดยใช้บีคอนอินฟราเรดระยะไกลเป็นรีโมทคอนโทรลและเซ็นเซอร์อินฟราเรดเป็นตัวรับ (เซ็นเซอร์อินฟราเรดต้องเชื่อมต่อกับพอร์ต 4 บน EV3 Brick) . มีสองโหมดที่แตกต่างกัน ในโหมดเดียว คุณจะใช้ช่อง 1 และ 2 บนสัญญาณอินฟราเรดระยะไกล บนช่อง 1 คุณจะสามารถควบคุมมอเตอร์ที่เชื่อมต่อกับพอร์ต B (โดยใช้ปุ่ม 1 และ 2 บนบีคอน IR ระยะไกล) และพอร์ต C (โดยใช้ปุ่ม 3 และ 4 บนบีคอน IR ระยะไกล) บนช่อง 2 คุณจะสามารถควบคุมมอเตอร์ที่เชื่อมต่อกับพอร์ต A (โดยใช้ปุ่ม 1 และ 2) และกับพอร์ต D (โดยใช้ปุ่ม 3 และ 4) ในโหมดอื่นคุณสามารถควบคุมมอเตอร์ในลักษณะเดียวกันได้โดยใช้ช่อง 3 และ 4 บนสัญญาณอินฟราเรดระยะไกลแทน การสลับระหว่างสองโหมดนี้ทำได้โดยใช้ปุ่มกลาง หากต้องการกลับไปยังหน้าต่างแอปพลิเคชันหลักของโมดูล ให้คลิกปุ่ม "ย้อนกลับ"
10 สไลด์
คำอธิบายสไลด์:
สภาพแวดล้อมการเขียนโปรแกรม Brick EV3 Brick มาพร้อมกับซอฟต์แวร์ที่ติดตั้งอยู่ แอปพลิเคชันนี้คล้ายกับซอฟต์แวร์ที่ติดตั้งบนคอมพิวเตอร์ของคุณ คำแนะนำเหล่านี้ประกอบด้วยข้อมูลพื้นฐานที่คุณต้องใช้ในการเริ่มต้น
11 สไลด์
คำอธิบายสไลด์:
การตั้งค่าอิฐ EV3 หน้าต่างนี้ให้คุณดูและปรับการตั้งค่าทั่วไปต่างๆ ในอิฐ EV3
12 สไลด์
คำอธิบายสไลด์:
การปรับระดับเสียง คุณสามารถเพิ่มหรือลดระดับเสียงได้ในแท็บการตั้งค่าใน EV3
สไลด์ 13
การเชื่อมต่อยูเอสบี
LEGO Mindstorms EV3 สามารถเชื่อมต่อกับพีซีหรือ EV3 อื่นๆ ผ่านการเชื่อมต่อ USB ความเร็วและความเสถียรในการเชื่อมต่อในกรณีนี้ดีกว่าวิธีอื่นรวมถึงบลูทูธด้วย
LEGO Mindstorms EV3 มีพอร์ต USB สองพอร์ต
การสื่อสารระหว่าง LEGO EV3 และบล็อก LEGO EV3 อื่นๆ ในโหมดเดซี่เชน
โหมดเดซี่เชนใช้เพื่อเชื่อมต่อบล็อก LEGO EV3 สองบล็อกขึ้นไป
โหมดนี้:
- ออกแบบมาเพื่อเชื่อมต่อ LEGO Mindstorms EV3 มากกว่าหนึ่งตัว
- ทำหน้าที่เชื่อมต่อเซ็นเซอร์ มอเตอร์ และอุปกรณ์อื่นๆ มากขึ้น
- อนุญาตการสื่อสารระหว่าง LEGO Mindstorms EV3 หลายตัว (สูงสุด 4) ซึ่งให้พอร์ตภายนอกสูงสุด 16 พอร์ตและพอร์ตภายในจำนวนเท่ากัน
- ทำให้สามารถควบคุมห่วงโซ่ทั้งหมดจาก LEGO Mindstorms EV3 หลักได้
- ไม่สามารถทำงานได้เมื่อ Wi-Fi หรือ Bluetooth ทำงานอยู่
หากต้องการเปิดใช้งานโหมดการเชื่อมต่อแบบเดซี่เชน ให้ไปที่หน้าต่างการตั้งค่าโปรเจ็กต์แล้วทำเครื่องหมายที่ช่อง
เมื่อเลือกโหมดนี้ สำหรับมอเตอร์ใดๆ เราสามารถเลือกบล็อก EV3 ที่จะใช้และเซ็นเซอร์ที่จำเป็นได้
ตารางแสดงตัวเลือกสำหรับการใช้บล็อก EV3:
การกระทำ |
มอเตอร์ขนาดกลาง |
มอเตอร์ตัวใหญ่ |
|
พวงมาลัย |
|
การจัดการที่เป็นอิสระ |
|
ไจโรสโคปิก |
|
อินฟราเรด |
|
อัลตราโซนิก |
|
การหมุนของมอเตอร์ |
|
อุณหภูมิ |
|
เครื่องวัดพลังงาน |
|
เสียง |
การเชื่อมต่อผ่านบลูทูธ
บลูทูธช่วยให้ LEGO Mindstorms EV3 เชื่อมต่อกับพีซี, LEGO Mindstorms EV3 อื่นๆ, สมาร์ทโฟน และอุปกรณ์บลูทูธอื่นๆ ระยะการสื่อสารผ่าน Bluetooth สูงถึง 25 ม.
คุณสามารถเชื่อมต่อบล็อก LEGO Mindstorms EV3 ได้สูงสุด 7 บล็อก EV3 Master Brick ช่วยให้คุณสามารถส่งและรับข้อความไปยัง EV3 Slave แต่ละตัวได้ EV3 Slaves สามารถส่งข้อความไปยัง EV3 Master Brick เท่านั้น ไม่สามารถส่งข้อความถึงกันได้
ลำดับการเชื่อมต่อ EV3 ผ่าน Bluetooth
ในการเชื่อมต่อบล็อก EV3 สองบล็อกขึ้นไปเข้าด้วยกันผ่าน Bluetooth คุณต้องทำตามขั้นตอนต่อไปนี้:
1. เปิดแท็บ การตั้งค่า.
2. เลือก บลูทู ธและกดปุ่มตรงกลาง
3. เราใส่ ช่องทำเครื่องหมาย ทัศนวิสัยบลูทู ธ.
4. ตรวจสอบว่าสัญญาณ Bluetooth ("<") виден на верхней левой стороне.
5. ทำตามขั้นตอนข้างต้นสำหรับจำนวน EV3 Bricks ที่ต้องการ
6. ไปที่แท็บการเชื่อมต่อ:
7. คลิกที่ปุ่มค้นหา:
8. เลือก EV3 ที่คุณต้องการเชื่อมต่อ (หรือที่คุณต้องการเชื่อมต่อ) แล้วกดปุ่มกลาง
9. เราเชื่อมต่อบล็อกแรกและที่สองด้วยรหัสการเข้าถึง
หากคุณทำทุกอย่างถูกต้อง ไอคอน " จะปรากฏที่มุมซ้ายบน<>" ให้เชื่อมต่อบล็อก EV3 อื่นในลักษณะเดียวกันหากมีมากกว่าสองบล็อก
หากคุณปิด LEGO EV3 การเชื่อมต่อจะขาดหายไปและคุณจะต้องทำซ้ำขั้นตอนทั้งหมดอีกครั้ง
สำคัญ: แต่ละบล็อกจะต้องมีโปรแกรมของตัวเองเขียน
โปรแกรมตัวอย่าง:
บล็อกแรก: เมื่อกดเซ็นเซอร์สัมผัส EV3 บล็อกแรกจะส่งข้อความไปยังบล็อกที่สองโดยมีความล่าช้า 3 วินาที (บล็อกหลัก)
ตัวอย่างโปรแกรมสำหรับบล็อก 2:
บล็อกที่สองรอรับข้อความจากบล็อกแรก และเมื่อได้รับแล้ว จะแสดงคำ (ในตัวอย่างของเราคือคำว่า "Hello") เป็นเวลา 10 วินาที (บล็อกทาส)
เชื่อมต่อผ่าน Wi-Fi
การสื่อสารระยะไกลสามารถทำได้โดยการเชื่อมต่อ Wi-Fi Dongle เข้ากับพอร์ต USB บน EV3
หากต้องการใช้ Wi-Fi คุณต้องติดตั้งโมดูลพิเศษบนบล็อก EV3 โดยใช้ขั้วต่อ USB (อะแดปเตอร์ Wi-Fi (อะแดปเตอร์ไร้สาย Netgear N150 (WNA1100)) หรือคุณสามารถเชื่อมต่อ Wi-Fi Dongle ได้