ในบทช่วยสอนก่อนหน้านี้ คุณได้เรียนรู้วิธีเพิ่มบลูทูธในแอปพลิเคชัน Particle Xenon ด้วยวิธีนี้ คุณจะสามารถควบคุมไฟ LED RGB ออนบอร์ดจากแอปทดสอบ เช่น nRF Connect หรือ Light Blue Explorer
ในบทความนี้ เราจะก้าวไปอีกขั้นหนึ่ง เราจะพัฒนาแอพ Swift เพื่อควบคุม LED Particle Mesh RGB หากทุกอย่างเป็นไปด้วยดี คุณควรมีแอปที่ใช้งานได้ภายใน 20 นาที!
มาเริ่มกันเลย
ไม่มีเวลาอ่านบทความเต็มตอนนี้ใช่หรือไม่
ดาวน์โหลดเวอร์ชัน PDF ที่นี่
กำลังตั้งค่า
- ติดตั้ง Xcode. คุณสามารถดาวน์โหลดได้จาก App Store ที่นี่
- คุณจะต้องเข้าสู่ระบบของ Apple ด้วย ฉันใช้อีเมล iCloud ของฉัน คุณสามารถสร้างบัญชีใหม่ภายใน Xcode หากยังไม่มี
- ติดตั้งโค้ดตัวอย่าง RGB บนบอร์ด Particle Mesh
สร้างโครงการ
เมื่อทุกอย่างพร้อมแล้ว ไปต่อกันเลย!
เปิด Xcode แล้วไปที่ ไฟล์ → โครงการใหม่
เลือก แอปมุมมองเดียว
จากนั้นอัปเดต ชื่อโครงการ ให้เป็นที่ชื่นชอบของคุณ ฉันยังเปลี่ยนตัวระบุองค์กรเป็น com.jaredwolff
. ปรับเปลี่ยนตามที่เห็นสมควร!
เลือกตำแหน่งที่จะบันทึก
ต่อไปหา Info.plist
อัพเดท info.plist
โดยเพิ่ม Privacy - Bluetooth Peripheral Usage Description
คำอธิบายที่ฉันใช้คือ App uses Bluetooth to connect to the Particle Xenon RGB Example
วิธีนี้ช่วยให้คุณใช้บลูทูธในแอปได้หากต้องการเปิดตัว
ตอนนี้ มาทำให้ทุกอย่างทำงานได้น้อยที่สุด!
ใช้งานได้น้อยที่สุด
ต่อไป เราจะมีแอปที่ใช้งานได้น้อยที่สุดเพื่อเชื่อมต่อและค้นหาบริการ การกระทำส่วนใหญ่จะเกิดขึ้นใน ViewController.swift
.
ก่อนอื่นให้นำเข้า CoreBluetooth
import CoreBluetooth
ซึ่งช่วยให้เราควบคุมฟังก์ชัน Bluetooth Low Energy ใน iOS ได้ จากนั้นมาเพิ่มทั้ง CBPeripheralDelegate
และ CBCentralManagerDelegate
ไปที่ ViewController
ชั้นเรียน
class ViewController: UIViewController, CBPeripheralDelegate, CBCentralManagerDelegate {
ตอนนี้เรามาสร้างตัวแปรส่วนตัวในพื้นที่เพื่อจัดเก็บตัวจัดการส่วนกลางและอุปกรณ์ต่อพ่วงที่แท้จริง เราจะตั้งค่าเพิ่มเติมในไม่ช้านี้
// Properties
private var centralManager: CBCentralManager!
private var peripheral: CBPeripheral!
ใน viewDidLoad
. ของคุณ ฟังก์ชัน มาเริ่ม centralManager
. กัน
centralManager = CBCentralManager(delegate: self, queue: nil)
การตั้งค่า delegate: self
เป็นสิ่งสำคัญ มิฉะนั้นสถานะส่วนกลางจะไม่เปลี่ยนแปลงเมื่อเริ่มต้น
ก่อนที่เราจะไปต่อ เรามาสร้างไฟล์แยกกันและเรียกมันว่า ParticlePeripheral.swift
. สามารถวางไว้ที่ใดก็ได้ แต่ฉันวางไว้ใน 'กลุ่ม' แยกต่างหากที่เรียกว่า รุ่น สำหรับภายหลัง
ภายในเราจะสร้างตัวแปรสาธารณะที่มี UUID สำหรับบอร์ดอนุภาคของเรา พวกเขาน่าจะคุ้นเคย!
import UIKit
import CoreBluetooth
class ParticlePeripheral: NSObject {
/// MARK: - Particle LED services and charcteristics Identifiers
public static let particleLEDServiceUUID = CBUUID.init(string: "b4250400-fb4b-4746-b2b0-93f0e61122c6")
public static let redLEDCharacteristicUUID = CBUUID.init(string: "b4250401-fb4b-4746-b2b0-93f0e61122c6")
public static let greenLEDCharacteristicUUID = CBUUID.init(string: "b4250402-fb4b-4746-b2b0-93f0e61122c6")
public static let blueLEDCharacteristicUUID = CBUUID.init(string: "b4250403-fb4b-4746-b2b0-93f0e61122c6")
}
ย้อนกลับไปใน ViewController.swift
มาประกอบบิตบลูทูธเข้าด้วยกัน
บิตบลูทูธ
ทุกสิ่งที่เกี่ยวข้องกับ Bluetooth เป็นไปตามเหตุการณ์ เราจะกำหนดฟังก์ชันหลายอย่างที่จัดการเหตุการณ์เหล่านี้ นี่คือสิ่งสำคัญ:
centralManagerDidUpdateState
อัปเดตเมื่อเปิดหรือปิดอุปกรณ์ต่อพ่วง Bluetooth มันจะเริ่มทำงานเมื่อแอปเริ่มทำงานครั้งแรก เพื่อให้คุณทราบสถานะของบลูทูธ เรายังเริ่มสแกนที่นี่
centralManager
didDiscover
เหตุการณ์เกิดขึ้นเมื่อคุณได้รับผลการสแกน เราจะใช้สิ่งนี้เพื่อเริ่มการเชื่อมต่อ
centralManager
didConnect
เหตุการณ์จะเริ่มทำงานเมื่อเชื่อมต่ออุปกรณ์แล้ว เราจะเริ่มการค้นพบอุปกรณ์ที่นี่ หมายเหตุ: การค้นพบอุปกรณ์เป็นวิธีที่เรากำหนดว่าบริการและคุณลักษณะใดที่พร้อมใช้งาน นี่เป็นวิธีที่ดีในการยืนยันว่าเราเชื่อมต่อกับอุปกรณ์ประเภทใด
The peripheral
didDiscoverServices
เหตุการณ์ครั้งแรกเมื่อมีการค้นพบบริการทั้งหมด สังเกตว่าเราได้เปลี่ยนจาก centralManager
ถึง peripheral
ตอนนี้เราเชื่อมต่อกันแล้ว เราจะเริ่มการค้นพบลักษณะเฉพาะที่นี่ เราจะใช้บริการ RGB UUID เป็นเป้าหมาย
peripheral
didDiscoverCharacteristicsFor
เหตุการณ์จะให้คุณสมบัติทั้งหมดโดยใช้บริการ UUID ที่ให้มา นี่เป็นขั้นตอนสุดท้ายในห่วงโซ่ของการค้นหาอุปกรณ์เต็มรูปแบบ ถึงมีขนดกแต่ต้องทำเพียงครั้งเดียวในช่วงการเชื่อมต่อ!
การกำหนดฟังก์ชันบลูทูธทั้งหมด
ตอนนี้เรารู้แล้วว่าเหตุการณ์ของฟังก์ชันที่ทริกเกอร์คืออะไร เราจะกำหนดตามลำดับตรรกะที่เกิดขึ้นระหว่างรอบการเชื่อมต่อ
อันดับแรก เราจะกำหนด centralManagerDidUpdateState
เพื่อเริ่มสแกนหาอุปกรณ์ด้วย Particle RGB LED Service ของเรา หากไม่ได้เปิดใช้งาน Bluetooth จะไม่ทำอะไรเลย
// If we're powered on, start scanning
func centralManagerDidUpdateState(_ central: CBCentralManager) {
print("Central state update")
if central.state != .poweredOn {
print("Central is not powered on")
} else {
print("Central scanning for", ParticlePeripheral.particleLEDServiceUUID);
centralManager.scanForPeripherals(withServices: [ParticlePeripheral.particleLEDServiceUUID],
options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
}
}
การกำหนด centralManager
didDiscover
เป็นขั้นตอนต่อไปในกระบวนการนี้ เรารู้ว่าเราพบอุปกรณ์แล้วหากเกิดเหตุการณ์นี้ขึ้น
// Handles the result of the scan
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
// We've found it so stop scan
self.centralManager.stopScan()
// Copy the peripheral instance
self.peripheral = peripheral
self.peripheral.delegate = self
// Connect!
self.centralManager.connect(self.peripheral, options: nil)
}
ดังนั้นเราจึงหยุดการสแกนโดยใช้ self.centralManager.stopScan()
. เราตั้งค่า peripheral
ดังนั้นมันจึงยังคงอยู่ผ่านแอพ จากนั้นเราก็เชื่อมต่อกับอุปกรณ์นั้นโดยใช้ self.centralManager.connect
เมื่อเชื่อมต่อแล้ว เราต้องตรวจสอบอีกครั้งว่าเรากำลังทำงานกับอุปกรณ์ที่ถูกต้องหรือไม่
// The handler if we do connect succesfully
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
if peripheral == self.peripheral {
print("Connected to your Particle Board")
peripheral.discoverServices([ParticlePeripheral.particleLEDServiceUUID])
}
}
เมื่อเปรียบเทียบอุปกรณ์ต่อพ่วงทั้งสอง เราจะรู้ว่าเป็นอุปกรณ์ที่เราพบก่อนหน้านี้ เราจะเริ่มการค้นพบบริการโดยใช้ peripheral.discoverService
. เราสามารถใช้ ParticlePeripheral.particleLEDServiceUUID
เป็นพารามิเตอร์ ด้วยวิธีนี้เราจะไม่รับบริการใด ๆ ที่เราไม่สนใจ
เมื่อเราค้นหาบริการเสร็จแล้ว เราจะได้ didDiscoverServices
เหตุการณ์. เราทำซ้ำผ่านบริการที่ "ใช้ได้" ทั้งหมด (ถึงจะมีที่เดียวเท่านั้น!)
// Handles discovery event
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
if let services = peripheral.services {
for service in services {
if service.uuid == ParticlePeripheral.particleLEDServiceUUID {
print("LED service found")
//Now kick off discovery of characteristics
peripheral.discoverCharacteristics([ParticlePeripheral.redLEDCharacteristicUUID,
ParticlePeripheral.greenLEDCharacteristicUUID,
ParticlePeripheral.blueLEDCharacteristicUUID], for: service)
return
}
}
}
}
เมื่อมาถึงจุดนี้ เรากำลังตรวจสอบเป็นครั้งที่สามเพื่อให้แน่ใจว่ามีบริการที่ถูกต้อง สิ่งนี้จะสะดวกยิ่งขึ้นในภายหลังเมื่อมีคุณสมบัติและบริการมากมาย
เราเรียก peripheral.discoverCharacteristics
ด้วยอาร์เรย์ UUID สำหรับคุณลักษณะที่เรากำลังมองหา เป็น UUID ทั้งหมดที่เรากำหนดใน ParticlePeripheral.swift
.
สุดท้าย เราจัดการ didDiscoverCharacteriscsFor
เหตุการณ์. เราทำซ้ำผ่านคุณสมบัติที่มีอยู่ทั้งหมด ขณะที่เราทำซ้ำ เราจะเปรียบเทียบกับสิ่งที่เรากำลังมองหา
// Handling discovery of characteristics
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
if let characteristics = service.characteristics {
for characteristic in characteristics {
if characteristic.uuid == ParticlePeripheral.redLEDCharacteristicUUID {
print("Red LED characteristic found")
} else if characteristic.uuid == ParticlePeripheral.greenLEDCharacteristicUUID {
print("Green LED characteristic found")
} else if characteristic.uuid == ParticlePeripheral.blueLEDCharacteristicUUID {
print("Blue LED characteristic found");
}
}
}
}
ณ จุดนี้ เราพร้อมที่จะทำการค้นหาอุปกรณ์แบบเต็มรูปแบบของอุปกรณ์ Particle Mesh ของเราแล้ว ในส่วนถัดไป เราจะทดสอบสิ่งที่เราต้องทำเพื่อให้แน่ใจว่าทุกอย่างเรียบร้อยดี
การทดสอบตัวอย่างขั้นต่ำของเรา
ก่อนที่เราจะเริ่มต้น หากคุณประสบปัญหา ฉันได้ระบุขั้นตอนการแก้ปัญหาไว้ในเชิงอรรถแล้ว
ในการทดสอบ คุณจะต้องมี iPhone ที่มีบลูทูธพลังงานต่ำ iPhones ที่ทันสมัยส่วนใหญ่มีมัน iPhone ตัวสุดท้ายที่ไม่มีฉันเชื่อว่าเป็น iPhone 4 หรือ 3Gs (ดังนั้นคุณน่าจะดี)
ขั้นแรก ให้เสียบเข้ากับคอมพิวเตอร์ของคุณ
ไปที่ด้านบนโดยปุ่มเล่นและหยุด เลือกอุปกรณ์เป้าหมายของคุณ ในกรณีของฉัน ฉันเลือกโทรศัพท์ของฉัน (iPhone ของ Jared ). คุณยังสามารถใช้ iPad ได้อีกด้วย
จากนั้นคุณสามารถกด Command + R หรือกดปุ่มเล่น เพื่อโหลดแอปลงในโทรศัพท์ของคุณ
ตรวจสอบให้แน่ใจว่าคุณได้เปิดแท็บบันทึกของคุณ เปิดใช้งานโดยคลิกปุ่มบานหน้าต่างด้านล่างที่มุมบนขวา
ตรวจสอบให้แน่ใจว่าคุณมีการตั้งค่าอุปกรณ์ตาข่ายและเรียกใช้โค้ดตัวอย่าง คุณสามารถไปที่โพสต์นี้เพื่อรับมัน อย่าลืมว่าบอร์ด Particle Mesh ของคุณต้องใช้งานอุปกรณ์ OS 1.3.0 ขึ้นไปเพื่อให้ Bluetooth ทำงานได้!
เมื่อโหลดทั้งเฟิร์มแวร์และแอปแล้ว ให้ตรวจสอบเอาต์พุตบันทึก
ควรมีลักษณะดังนี้:
View loaded
Central state update
Central scanning for B4250400-FB4B-4746-B2B0-93F0E61122C6
Connected to your Particle Board
LED service found
Red LED characteristic found
Green LED characteristic found
Blue LED characteristic found
ซึ่งหมายความว่าโทรศัพท์ของคุณเชื่อมต่อแล้ว พบบริการ LED! ลักษณะที่ค้นพบก็มีความสำคัญเช่นกัน ถ้าไม่มีอุปกรณ์เหล่านี้ เราก็ไม่สามารถส่งข้อมูลไปยังอุปกรณ์ตาข่ายได้
ขั้นตอนต่อไปคือการสร้างแถบเลื่อนเพื่อให้เราสามารถอัปเดตค่า RGB ได้ทันที
เลื่อนไปทางซ้าย เลื่อนไปทางขวา
ต่อไปเราจะเพิ่มองค์ประกอบบางอย่างใน Main.storyboard
. ของเรา . เปิด Main.storyboard
และคลิกที่ ดู ข้างใต้ ดูตัวควบคุม
จากนั้นคลิกที่ ห้องสมุด ปุ่ม. (ดูเหมือนอาร์ตแบบเก่าที่ Apple ใช้สำหรับปุ่มโฮม)
คุณจะได้รับป๊อปอัปพร้อมตัวเลือกทั้งหมดที่คุณสามารถแทรกลงในแอปของคุณได้
ลากป้ายกำกับสามรายการ และคัดลอก ตัวเลื่อน three สามตัว ในมุมมองของคุณ
คุณสามารถดับเบิลคลิกที่ป้ายกำกับและเปลี่ยนชื่อได้ทันที
หากคุณคลิกค้างไว้ เครื่องมือจัดตำแหน่งที่มีประโยชน์บางอย่างจะปรากฏขึ้น พวกมันจะชิดตรงกลาง!
คุณยังสามารถเลือกทั้งหมดและย้ายเข้าด้วยกัน เราจะจัดแนวพวกมันในแนวตั้งและแนวนอน
เพื่อให้อยู่ตรงกลาง ให้เอาคุณสมบัติการปรับขนาดอัตโนมัติออก คลิก ไอคอนไม้บรรทัด ที่ด้านบนขวา จากนั้นคลิกแต่ละ แถบสีแดง . เพื่อให้แน่ใจว่าป้ายกำกับและตัวเลื่อนของคุณอยู่บนหน้าจอ!
ต่อไป ให้คลิก แสดงตัวแก้ไขผู้ช่วย ปุ่ม. (ดูเหมือนแผนภาพเวนน์)
หมายเหตุ: ตรวจสอบให้แน่ใจว่า ViewController.swift เปิดอยู่ใน Assistant Editor
แล้วอยู่ใต้ /properties
ส่วน ควบคุมแล้วคลิกแล้วลาก ตัวเลื่อนสีแดง ลงในรหัสของคุณ
ทำซ้ำกับอย่างอื่นทั้งหมด ตรวจสอบให้แน่ใจว่าคุณตั้งชื่อพวกเขาเป็นอย่างอื่น รหัสของคุณควรมีลักษณะดังนี้:
// Properties
private var centralManager: CBCentralManager!
private var peripheral: CBPeripheral!
// Sliders
@IBOutlet weak var redSlider: UISlider!
@IBOutlet weak var greenSlider: UISlider!
@IBOutlet weak var blueSlider: UISlider!
ทำให้เราสามารถเข้าถึงค่าของแถบเลื่อนได้
ต่อไป มาแนบ ค่าที่เปลี่ยนแปลง เหตุการณ์สำหรับตัวเลื่อนแต่ละอัน คลิกขวา บน แถบเลื่อนสีแดงในมุมมองโฟลเดอร์
ควรให้ตัวเลือกบางอย่างแก่คุณสำหรับกิจกรรม คลิกและลาก ค่าที่เปลี่ยนแปลง เหตุการณ์ไปยังรหัสของคุณ ตรวจสอบให้แน่ใจว่าคุณตั้งชื่อสิ่งที่สมเหตุสมผล ฉันใช้ RedSliderChanged สำหรับสไลเดอร์สีแดง
ทำซ้ำอีกสองครั้ง รหัสของคุณควรมีลักษณะดังนี้เมื่อสิ้นสุดขั้นตอนนี้:
@IBAction func RedSliderChanged(_ sender: Any) {
}
@IBAction func GreenSliderChanged(_ sender: Any) {
}
@IBAction func BlueSliderChanged(_ sender: Any) {
}
ฉันยังเลือกแต่ละแถบเลื่อนและ ยกเลิกการเลือก เปิดใช้งาน . ด้วยวิธีนี้คุณจะไม่สามารถเคลื่อนย้ายได้ เราจะเปิดใช้งานในภายหลังในโค้ด
นอกจากนี้ นี่เป็นเวลาที่ดีในการเปลี่ยน ค่าสูงสุดเป็น 255 . ตั้งค่า ค่าดีฟอลต์จาก 0.5 เป็น 0
กลับมาที่ด้านบนของไฟล์ มาสร้างตัวแปรโลคัลสำหรับคุณลักษณะแต่ละอย่างกัน เราจะใช้สิ่งเหล่านี้เพื่อเขียนตัวแปรตัวเลื่อนไปที่บอร์ด Particle Mesh
// Characteristics
private var redChar: CBCharacteristic?
private var greenChar: CBCharacteristic?
private var blueChar: CBCharacteristic?
มาผูกทุกอย่างเข้าด้วยกัน!
ใน didDiscoverCharacteristicsFor
ฟังก์ชั่นโทรกลับ มากำหนดลักษณะเหล่านั้นกัน ตัวอย่างเช่น
if characteristic.uuid == ParticlePeripheral.redLEDCharacteristicUUID {
print("Red LED characteristic found")
redChar = characteristic
ขณะที่เราพบคุณลักษณะแต่ละอย่าง เรายังสามารถเปิดใช้งานตัวเลื่อนแต่ละตัวในจุดเดียวกันได้
// Unmask red slider
redSlider.isEnabled = true
ในที่สุด didDiscoverCharacteristicsFor
. ของคุณ ควรมีลักษณะดังนี้:
// Handling discovery of characteristics
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
if let characteristics = service.characteristics {
for characteristic in characteristics {
if characteristic.uuid == ParticlePeripheral.redLEDCharacteristicUUID {
print("Red LED characteristic found")
redChar = characteristic
redSlider.isEnabled = true
} else if characteristic.uuid == ParticlePeripheral.greenLEDCharacteristicUUID {
print("Green LED characteristic found")
greenChar = characteristic
greenSlider.isEnabled = true
} else if characteristic.uuid == ParticlePeripheral.blueLEDCharacteristicUUID {
print("Blue LED characteristic found");
blueChar = characteristic
blueSlider.isEnabled = true
}
}
}
}
ตอนนี้ มาอัปเดต RedSliderChanged
. กัน GreenSliderChanged
และ BlueSliderChanged
ฟังก์ชั่น. สิ่งที่เราต้องการทำที่นี่คือการอัปเดตคุณสมบัติที่เกี่ยวข้องกับ Changed
การทำงาน. ฉันสร้างฟังก์ชันแยกต่างหากที่เรียกว่า writeLEDValueToChar
. เราจะส่งต่อคุณสมบัติและข้อมูล
private func writeLEDValueToChar( withCharacteristic characteristic: CBCharacteristic, withValue value: Data) {
// Check if it has the write property
if characteristic.properties.contains(.writeWithoutResponse) && peripheral != nil {
peripheral.writeValue(value, for: characteristic, type: .withoutResponse)
}
}
ตอนนี้เพิ่มการโทรไปที่ writeLEDValueToChar
ไปยังแต่ละ Changed
ฟังก์ชั่น. คุณจะต้องแปลงค่าเป็น Uint8
. (อุปกรณ์ Particle Mesh ต้องการหมายเลข 8 บิตที่ไม่ได้ลงนาม)
@IBAction func RedSliderChanged(_ sender: Any) {
print("red:",redSlider.value);
let slider:UInt8 = UInt8(redSlider.value)
writeLEDValueToChar( withCharacteristic: redChar!, withValue: Data([slider]))
}
ทำซ้ำสำหรับ GreenSliderChanged
และ BlueSliderChanged
. อย่าลืมเปลี่ยน red
ถึง green
และ blue
สำหรับแต่ละคน!
สุดท้ายนี้ เพื่อรักษาความสะอาด ฉันได้เพิ่มฟังก์ชันที่จัดการการยกเลิกการเชื่อมต่อบลูทูธ
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
ข้างในเราควรรีเซ็ตสถานะของตัวเลื่อนเป็น 0 และปิดการใช้งาน
if peripheral == self.peripheral {
print("Disconnected")
redSlider.isEnabled = false
greenSlider.isEnabled = false
blueSlider.isEnabled = false
redSlider.value = 0
greenSlider.value = 0
blueSlider.value = 0
เป็นความคิดที่ดีที่จะรีเซ็ต self.peripheral
เพื่อไม่ให้เป็นศูนย์โดยที่เราไม่เคยพยายามเขียนไปยังอุปกรณ์แฝง
self.peripheral = nil
สุดท้ายนี้ เนื่องจากเราตัดการเชื่อมต่อแล้ว ให้เริ่มสแกนอีกครั้ง!
// Start scanning again
print("Central scanning for", ParticlePeripheral.particleLEDServiceUUID);
centralManager.scanForPeripherals(withServices: [ParticlePeripheral.particleLEDServiceUUID],
options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
}
ไม่เป็นอะไร! เราเพิ่งจะพร้อมที่จะทดสอบ ไปที่ขั้นตอนต่อไป (และขั้นตอนสุดท้าย)
ทดสอบตัวเลื่อน
งานหนักเสร็จแล้ว ตอนนี้ได้เวลาเล่นแล้ว!
วิธีที่ง่ายที่สุดในการทดสอบทุกอย่างคือ คลิกปุ่มเล่น ที่ด้านบนซ้ายหรือ Command + R แป้นพิมพ์ลัด Xcode จะโหลดแอปลงในโทรศัพท์ของคุณ คุณควรเห็นหน้าจอสีขาวแสดงโดยหน้าจอที่มีแถบเลื่อนของคุณ!
แถบเลื่อนควรเป็นสีเทาจนกว่าจะเชื่อมต่อกับบอร์ด Particle Mesh คุณสามารถตรวจสอบเอาต์พุตบันทึกได้หากมีการสร้างการเชื่อมต่อ
View loaded
Central state update
Central scanning for B4250400-FB4B-4746-B2B0-93F0E61122C6
Connected to your Particle Board
LED service found
Red LED characteristic found
Green LED characteristic found
Blue LED characteristic found
(ดูคุ้นๆ นะ เราคบกันแล้ว!)
หากคุณปฏิบัติตามทุกอย่างถูกต้อง คุณจะสามารถเลื่อนแถบเลื่อนได้ ยิ่งไปกว่านั้น ไฟ LED RGB บนบอร์ด Particle Mesh ควรเปลี่ยนสี
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีเชื่อมต่อบอร์ด Particle Mesh และอุปกรณ์ iOS ผ่านบลูทูธแล้ว เราได้เรียนรู้วิธีเชื่อมต่อกับคุณลักษณะแต่ละอย่างที่มี ยิ่งไปกว่านั้น ให้สร้างอินเทอร์เฟซที่สะอาดตาเพื่อทำทุกอย่าง
อย่างที่คุณสามารถจินตนาการได้ คุณสามารถลงไปยังโพรงกระต่ายด้วยบลูทูธบน iOS คู่มือฉบับต่อไปกำลังจะมีมาเพิ่มอีก:The Ultimate Guide to Particle Mesh สมาชิกในรายการของฉันจะสามารถเข้าถึงเนื้อหาก่อนการเปิดตัวและรับส่วนลดเมื่อเปิดตัว! คลิกที่นี่เพื่อลงทะเบียน
รหัส
ซอร์สโค้ดแบบเต็มมีอยู่ใน Github หากคุณพบว่ามีประโยชน์ ให้กดปุ่มดาว ⭐️