สารบัญ:

เชื่อมต่อการประมวลผลกับ Arduino และสร้าง 7 ส่วนและตัวควบคุม Servo GUI: 4 ขั้นตอน
เชื่อมต่อการประมวลผลกับ Arduino และสร้าง 7 ส่วนและตัวควบคุม Servo GUI: 4 ขั้นตอน

วีดีโอ: เชื่อมต่อการประมวลผลกับ Arduino และสร้าง 7 ส่วนและตัวควบคุม Servo GUI: 4 ขั้นตอน

วีดีโอ: เชื่อมต่อการประมวลผลกับ Arduino และสร้าง 7 ส่วนและตัวควบคุม Servo GUI: 4 ขั้นตอน
วีดีโอ: Arduino & Microcontroller การพัฒนาระบบอัตโนมัติด้วย Tinkercad ตอนที่ 4 ควบคุมความเร็วไฟวิ่งด้วย VR 2024, พฤศจิกายน
Anonim
เชื่อมต่อการประมวลผลและ Arduino และสร้าง 7 ส่วนและตัวควบคุม Servo GUI
เชื่อมต่อการประมวลผลและ Arduino และสร้าง 7 ส่วนและตัวควบคุม Servo GUI

สำหรับบางโครงการ คุณจำเป็นต้องใช้ Arduino เนื่องจากมีแพลตฟอร์มการสร้างต้นแบบที่ง่าย แต่การแสดงกราฟิกในจอภาพแบบอนุกรมของ Arduino อาจใช้เวลานานและยากต่อการทำ คุณสามารถแสดงกราฟบน Arduino Serial Monitor ได้ แต่กราฟไม่ใช่สิ่งเดียวที่คุณอาจต้องแสดง วัตถุแบบโต้ตอบทั้งหมด เช่น แถบเลื่อน ปุ่ม โปรแกรมที่มีเอาต์พุต 2D, 3D, PDF หรือ SVG และคุณยังสามารถสร้างภาพเคลื่อนไหวได้อย่างง่ายดายอีกด้วย โหมดการเขียนโปรแกรมเริ่มต้นสำหรับการประมวลผลคือ Java แต่คุณสามารถเปลี่ยนเป็น Android, p5.js, REPL, CoffeeScript และ JavaScript ในคำแนะนำนี้ เราจะใช้โหมดการเขียนโปรแกรม Java

เนื้อหาและรหัสทั้งหมดมีอยู่ใน GitHub ของฉันที่นี่

ขั้นตอนที่ 1: การใช้ Processing.serial

รหัสประมวลผล

โค้ดสองบรรทัดแรกจะเป็น

นำเข้าการประมวลผล.ซีเรียล.*; อนุกรม myPort;

ที่นี่ในบรรทัดแรก เรากำลังนำเข้าไลบรารี - กำลังประมวลผล และในบรรทัดที่สอง เรากำลังสร้างวัตถุของคลาส Serial ชื่อ myPort คุณสามารถตั้งชื่อมันตามที่คุณต้องการตามกฎของการตั้งชื่อตัวระบุ

ในการประมวลผล เรามี void setup() และ void draw() โดยที่ void เป็นประเภทการส่งคืนของฟังก์ชัน คุณสามารถเปลี่ยนเป็น int setup() และ int draw() หรือประเภทข้อมูลอื่น ๆ ที่คุณต้องการ แต่คุณจะต้องส่งคืน ค่าที่มีชนิดข้อมูลเดียวกับชนิดข้อมูลที่คุณใช้ก่อนฟังก์ชัน

ในการตั้งค่า () เราเขียนคำสั่งที่เราต้องดำเนินการหนึ่งครั้งในขณะที่วาด () เราเขียนคำสั่งที่เราต้องดำเนินการหลายครั้ง โค้ดสองบรรทัดที่กล่าวถึงข้างต้นควรเขียนไว้เหนือ void setup() เนื่องจากต้องมีการเข้าถึงทั่วโลก

ในการตั้งค่าเป็นโมฆะ () เราจะเริ่มต้นวัตถุ myPort

การตั้งค่าเป็นโมฆะ (){

ขนาด (800, 800);

myPort=new Serial (นี้ "COM18", 9600);

}

ขนาดเส้น (800, 800); กำหนดขนาดของหน้าจอที่มีขนาด 800 x 800 พิกเซล

คำหลักใหม่ในบรรทัดที่สองใช้เพื่อสำรองพื้นที่สำหรับวัตถุในหน่วยความจำ อาร์กิวเมนต์นี้เป็นตัวแปรอ้างอิงที่อ้างถึงวัตถุปัจจุบัน อาร์กิวเมนต์ COM18 คือพอร์ตของ Arduino ที่เชื่อมต่อ เราต้องการสิ่งนี้เนื่องจากเราจะส่งข้อมูลผ่านอินเทอร์เฟซแบบอนุกรม หมายเลข 18 อาจแตกต่างกันในกรณีของคุณ คุณสามารถค้นหาได้ในเครื่องมือ>พอร์ตใน Arduino IDE และ 9600 คืออัตราบอดที่คุณสามารถเปลี่ยนได้ทั้งใน Arduino และการประมวลผล

ขั้นตอนที่ 2: ทำความเข้าใจเกี่ยวกับ Serial Class

ตัวสร้างสำหรับ Serial

อนุกรม (พาเรนต์, ชื่อพอร์ต, baudRate, พาริตี้, dataBits, stopBits)

อาร์กิวเมนต์:

parent: ปกติจะใช้ "this"

baudRate (int): 9600 เป็นค่าเริ่มต้น

portName (String): ชื่อของพอร์ต (COM1 เป็นค่าเริ่มต้น)

ความเท่าเทียมกัน (อักขระ): 'N' สำหรับไม่มี 'E' สำหรับคู่ 'O' สำหรับคี่ 'M' สำหรับเครื่องหมาย 'S' สำหรับช่องว่าง ('N' เป็นค่าเริ่มต้น)

dataBits (int): 8 เป็นค่าเริ่มต้น

stopBits (ลอย): 1.0, 1.5 หรือ 2.0 (1.0 เป็นค่าเริ่มต้น)

วิธีการที่สำคัญ:

  1. myPort.available() - ส่งกลับจำนวนไบต์ที่พร้อมใช้งาน
  2. myPort.clear() - ล้างบัฟเฟอร์และลบข้อมูลทั้งหมดที่เก็บไว้ที่นั่น
  3. myPort.read() - ส่งกลับตัวเลขระหว่าง 0 ถึง 255 สำหรับไบต์ถัดไปที่รออยู่ในบัฟเฟอร์
  4. myPort.readString() - ส่งคืนข้อมูลทั้งหมดจากบัฟเฟอร์เป็นสตริงหรือ null หากไม่มีอะไรพร้อมใช้งาน
  5. myPort.write("test") - เขียนไบต์, อักขระ, ints, ไบต์, สตริงไปยังพอร์ตอนุกรม
  6. myPort.stop() - หยุดการสื่อสารข้อมูลบนพอร์ต

ขั้นตอนที่ 3: Arduino Serial Class

คุณไม่จำเป็นต้องนำเข้า Serial Class ใน Arduino ก่อนใช้งาน

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

ดังนั้น setup() จะมีลักษณะดังนี้:

การตั้งค่าเป็นโมฆะ (){

Serial.begin(9600); //เริ่มการสื่อสารแบบอนุกรม

}

9600 ที่นี่ระบุอัตราบอดที่เราได้กล่าวถึงในไฟล์การประมวลผลด้วย เพื่อการสื่อสารที่เหมาะสม อัตราบอดทั้งสองควรเท่ากัน หรือคุณอาจเห็นว่าเอาต์พุตแบบอนุกรมเป็นสิ่งที่พูดไม่ชัด

ทีนี้มาดูส่วน loop() กัน รหัสส่วนนี้ทำงานหลายครั้ง หากเราต้องการอ่านข้อมูลบางส่วนโดยใช้พอร์ต เราจะใช้วิธี Serial.read() ฟังก์ชันนี้จะคืนค่า null หากไม่มีข้อมูล ดังนั้นเราจะเรียกวิธีนี้ก็ต่อเมื่อเรามีข้อมูลบางส่วนในสตรีมแบบอนุกรมเท่านั้น

เพื่อตรวจสอบว่ามีข้อมูลอยู่หรือไม่ เราจะใช้วิธี Serial.available() หากส่งคืนค่าที่มากกว่า 0 - มีข้อมูลบางส่วน

ดังนั้นส่วน loop() จะมีลักษณะดังนี้:

วงเป็นโมฆะ (){

if(Serial.available() > 0){ //ถ้าข้อมูลบางอย่างมีอยู่ในพอร์ตอนุกรม

สถานะถ่าน = Serial.read(); //อ่านค่า

// if statement หรือ switch case

}

}

ตอนนี้เราสามารถใช้ if Ladder หรือหากมีผลลัพธ์ที่เป็นไปได้มากมาย เราก็สามารถใช้กรณีสวิตช์ได้เช่นกันสำหรับสถานะตัวแปร

ขั้นตอนที่ 4: สร้าง GUI 7 Segment Controller

สร้าง GUI 7 Segment Controller
สร้าง GUI 7 Segment Controller
สร้าง GUI 7 Segment Controller
สร้าง GUI 7 Segment Controller
สร้าง GUI 7 Segment Controller
สร้าง GUI 7 Segment Controller

ไฟล์แนบที่นี่ หมายเหตุ: สำหรับการประมวลผล คุณจะต้องติดตั้งไลบรารี่ control p5 ซึ่งฉันเคยใช้เพื่อสร้างปุ่มโต้ตอบ GUI

ปักหมุดหมายเลข

7 เซ็กเมนต์ (ตามลำดับตัวอักษร) ดูรูปภาพ

เอ - พินดิจิตอล2

b - พินดิจิตอล 3

c - พินดิจิตอล 4

d - พินดิจิตอล 5

อี - พินดิจิตอล 6

f - พินดิจิตอล 7

g - พินดิจิตอล 8

dp - พินดิจิตอล 9

เนื้อหาและรหัสทั้งหมดมีอยู่ใน GitHub ของฉันที่นี่

แนะนำ: