![State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: 3 ขั้นตอน State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: 3 ขั้นตอน](https://i.howwhatproduce.com/images/003/image-7721-14-j.webp)
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
![State Machine และมัลติทาสกิ้งบน Arduino ด้วย SPI Expanders State Machine และมัลติทาสกิ้งบน Arduino ด้วย SPI Expanders](https://i.howwhatproduce.com/images/003/image-7721-15-j.webp)
สัปดาห์ที่แล้ว ฉันขอให้สร้างระบบเพื่อขับดอกไม้ไฟด้วย Arduino มันต้องการประมาณ 64 เอาต์พุตเพื่อควบคุมไฟ วิธีหนึ่งที่ทำได้คือการใช้ตัวขยาย IC มี 2 โซลูชั่นให้เลือก:
- ตัวขยาย I2C แต่ต้องใช้อินเวอร์เตอร์เมื่อคุณเปิด IC (ดูคำสั่งก่อนหน้าของฉันบนเครื่องสถานะ จำกัด) เพราะเอาต์พุตทั้งหมดเปิดและปิดอย่างรวดเร็ว: ปัญหากับดอกไม้ไฟ
-SPI ยังใช้งานง่ายและไม่มีปัญหาในการเปิดเครื่อง
ดังนั้นฉันจึงตัดสินใจศึกษาตัวขยายประเภทนี้ ฉันยังใช้เครื่องสถานะที่มีการทำงานหลายอย่างพร้อมกันเพื่อควบคุม 16 I/O แบบดิจิตอลและ 2 เอาต์พุตแบบอะนาล็อก การ์ดใบนี้ออกแบบมาเพื่อควบคุมระบบอัตโนมัติ เช่น PLC
ฉันยังศึกษาความแตกต่างและการแปลระหว่างภาพวาดของไดอะแกรมสถานะและกราฟอีกอันที่ใช้ในระบบอัตโนมัติ: SFC (Sequential Function Chart) ตาม Petri nets เดิม
th.wikipedia.org/wiki/Sequential_function_…
fr.wikipedia.org/wiki/Grafcet
ขั้นตอนที่ 1: การ์ดและวงจร
![การ์ดและวงจร การ์ดและวงจร](https://i.howwhatproduce.com/images/003/image-7721-16-j.webp)
![การ์ดและวงจร การ์ดและวงจร](https://i.howwhatproduce.com/images/003/image-7721-17-j.webp)
![การ์ดและวงจร การ์ดและวงจร](https://i.howwhatproduce.com/images/003/image-7721-18-j.webp)
ฉันใช้ Arduino uno และชิป DIL 2 ประเภท:
- MCP23S17 ตัวขยายสัญญาณ I/O 2 x 16 ที่ควบคุมด้วย SPI
-MCP4921, DAC 12 บิต, 0/5V
IC เหล่านี้มีราคาถูกและเชื่อถือได้ และยังเชื่อมโยงและตั้งโปรแกรมได้ง่ายมาก ในแผนผังฉันใช้ส่วนประกอบเพิ่มเติมบางอย่าง เช่น ตัวเก็บประจุแบบแยกส่วน ตัวต้านทานแบบดึงลงสำหรับอินพุต
ขั้นตอนที่ 2: โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์
![โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์ โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์](https://i.howwhatproduce.com/images/003/image-7721-19-j.webp)
![โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์ โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์](https://i.howwhatproduce.com/images/003/image-7721-20-j.webp)
แนวคิดระดับโลกคือการควบคุม I/O แบบดิจิทัล และในขณะเดียวกันก็เปิดใช้เอฟเฟกต์เปิด/ปิดแบบเฟดบน LEDS ที่เชื่อมต่อกับเอาท์พุตแอนะล็อกทั้งสอง
อีกสิ่งหนึ่งฉันทำโดยมีวัตถุประสงค์เพื่อเชื่อมต่อหมุด CS แยกต่างหาก (การเลือกชิป) เพื่อให้มีความเป็นไปได้มากขึ้นใน IC เพิ่มเติมบนบัส SPI ดังนั้นฉันจึงใช้:
- ห้องสมุดพิเศษสำหรับเครื่องรัฐ
- ห้องสมุดพิเศษสำหรับ MCP23S17
- ไม่มีไลบรารีพิเศษสำหรับ MCP4921, CS และซอฟต์การเชื่อมต่อ SPI นั้น "สะดวก" เสร็จแล้ว
คุณสามารถเห็นภาพการแปลระหว่างเครื่องสถานะที่คาดหวังและ SFC (เรียกอีกอย่างว่า GRAFCET หรือ gr7 ในภาษาฝรั่งเศส) คำศัพท์ทั่วไปบางคำ: สถานะพร้อมกัน มัลติทาสก์ และการห่อหุ้ม
ฉันให้ความคิดเห็นมากมายแก่ไลบรารีและซอร์สโค้ด หากต้องการอ่านและทำความเข้าใจ คุณต้องอ่านแผนภาพสถานะหรือ SFC พร้อมกัน
ขั้นตอนที่ 3: เพื่อสรุป
มันได้ผล!!
เมื่อคุณเปิดเครื่อง คุณต้องรอสองสามวินาทีแล้วใช้ตัวขยาย (เวลาเริ่มต้นบัส SPI)
ระบบมีปฏิกิริยาที่รวดเร็วมาก และคุณจำเป็นต้องสร้างการ์ดอินเทอร์เฟซสำหรับพลังงาน หากคุณต้องการควบคุมเครื่องใดก็ตาม ดูคำแนะนำก่อนหน้าของฉัน มันง่ายมาก!!
ขอบคุณบทเรียนที่น่าสนใจและใช้งานได้ทั่วโลก
มนู4371.
แนะนำ:
วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: 8 ขั้นตอน
![วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: 8 ขั้นตอน วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: 8 ขั้นตอน](https://i.howwhatproduce.com/images/001/image-366-29-j.webp)
วิธีการตั้งค่า OSMC ด้วย Hyperion บน Raspberry Pi ด้วย WS2812b Led Strip: บางครั้งฉันพูดภาษาอังกฤษได้ดีมาก บางครั้งก็ไม่มี… สิ่งแรกเลย นี่เป็นการสอนครั้งแรกของฉันและภาษาอังกฤษไม่ใช่ภาษาแม่ของฉัน ดังนั้นโปรดอย่ากดดันฉันมากเกินไป นี่จะไม่เกี่ยวกับวิธีการสร้างเฟรมที่ง่าย มันเกี่ยวกับการติดตั้ง
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
![Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ) Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)](https://i.howwhatproduce.com/images/005/image-13651-j.webp)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
![DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน](https://i.howwhatproduce.com/images/009/image-24456-j.webp)
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
วิธีควบคุมหลอดไฟโดยใช้ Arduino UNO และ Single Channel 5V Solid State Relay Module: 3 ขั้นตอน
![วิธีควบคุมหลอดไฟโดยใช้ Arduino UNO และ Single Channel 5V Solid State Relay Module: 3 ขั้นตอน วิธีควบคุมหลอดไฟโดยใช้ Arduino UNO และ Single Channel 5V Solid State Relay Module: 3 ขั้นตอน](https://i.howwhatproduce.com/images/010/image-27996-j.webp)
วิธีควบคุมหลอดไฟโดยใช้ Arduino UNO และโมดูลโซลิดสเตตรีเลย์ 5V แบบช่องสัญญาณเดี่ยว: คำอธิบาย:เมื่อเปรียบเทียบกับรีเลย์ทางกลแบบเดิม Solid State Relay (SSR) มีข้อดีหลายประการ: มีอายุการใช้งานยาวนานขึ้นด้วยการเปิด/ปิดที่สูงกว่ามาก ปิดความเร็วและไม่มีเสียงรบกวน นอกจากนี้ยังมีความทนทานต่อแรงสั่นสะเทือนและกลไกที่ดีกว่า
วิธีสร้าง CubeSat ด้วย Arduino ด้วย Arducam: 9 ขั้นตอน
![วิธีสร้าง CubeSat ด้วย Arduino ด้วย Arducam: 9 ขั้นตอน วิธีสร้าง CubeSat ด้วย Arduino ด้วย Arducam: 9 ขั้นตอน](https://i.howwhatproduce.com/images/004/image-9406-14-j.webp)
วิธีสร้าง CubeSat ด้วย Arduino ด้วย Arducam: ในรูปแรก เรามี Arduino และเรียกว่า "Arduino Uno"ในรูปที่สอง เรามี Arducam และเรียกว่า "Arducam OV2640 มินิ 2MP"พร้อมกับภาพที่สอง มีวัสดุที่คุณต้อง