เซ็นเซอร์ 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 ได้