ETT :: Article :: ARM:STM32:STM8 :: Arduino STM32: EP1 Blink 8 LEDs

© 2020,จารุต บุศราทิจ

ดูจากวันที่ของบทความเกี่ยวกับ ARM หลังสุดที่เขียนก็ปี 2550 อืม ... นานมากเลยเนอะ ... ครับ นาน วันนี้มาเริ่มกันใหม่กับการใช้ ARM Cortex-M3 ที่เมื่อก่อนเขียนงานกันซับซ้อน แต่เมื่อเวลาผ่านไปเนิ่นนาน ความยากเหล่านั้นถูกลดทอนด้วยเครื่องมือสมัยใหม่ ... ใช่แล้วครับ เราจะใช้ Arduino IDE เป็นเครื่องมือเขียนโปรแกรมกัน โดยในครั้งแรกนี้มาเริ่มใช้งานอุปกรณ์บนบอร์ดที่ติดตั้งเครื่องมือไว้ครบครันสำหรับการเริ่มต้นเรียนรู้ (นำไปใช้จริงได้แต่ด้วยการที่มีส่วนของอุปกรณ์ภายนอกเลยทำให้บอร์ดมีขนาดใหญ่ไปนิดนึง) รุ่น ET-STM32F103

เป้าหมาย

อุปกรณ์ที่ต้องใช้

มาติดตั้งเครื่องมือสำหรับพัฒนาโปรแกรมของ STM32 กันเถอะ

เอาล่ะตั้งค่าบอร์ดกันเนอะ

เขียนโค้ดกันเลย

เนื่องจากบอร์ด ET-STM32F103 เชื่อมต่อกับแอลอีดีมาให้ใช้งานดังภาพ

จะเห็นว่า ตัวอักษรกำกับเอาไว้คือ PB8, PB9, ..., PB14, PB15 นั่นหมายความว่าพอร์ต B ของ STM32F103 ของเราเชื่อมต่อกับอุปกรณ์แอลอีดีเหล่านี้ด้วยขาที่ 8 ถึง 15 ของพอร์ต B และที่สำคัญคือตรวจสอบด้วยนะครับว่าได้ Enable LED เอาไว้ (ดูจัมเปอร์สีเหลืองด้านซ้ายล่างของภาพน่อ) ... เอาล่ะเขียนโค้ดกันครับ

ในขั้นตอน setup() เราวนรอบโดยให้ตัวแปร pin มีค่าเป็น PB8 ถึง PB15 หลังจากนั้นให้แต่ละขาทำงานเป็น OUTPUT และสร้างฟังก์ชันชื่อ set_led( ) ขึ้นมาเพื่อความสะดวกในการกำหนดให้ขาใดมีสถานะของสัญญาณดิจิทัลเป็น HIGH หรือ LOW สุดท้ายใน loop() เรามีการอาศับตัวแปรชื่อ status ซึ่งเป็นตัวแปรภายนอก มีค่าเริ่มต้นเป็น true ด้วยเหตุนี้ ถ้า status เป็นจริงเราสั่งให้ทุกขามีสถานะดิจิทัลเป็น HIGH แล้วปรับค่า status เป็น false เพื่อใช้ในการทำงานรอบถัดไป ดังนั้น รอบถัดไปตัวแปร status ไม่เป็น true จึงไปทำงานที่ else ซึ่งเราเขียนโค้ดให้เปลี่ยนสถานะสัญญาณดิจิทัลของแต่ละขาเป็น LOW แล้วกลับค่าของ status เป็น true เพื่อรอบถัดไปจะได้กลับไปกลับมาเป็นอย่างนี้ไปเรื่อย ๆ โดยคำสั่งเปลี่ยนสถานะสัญญาณดิจิทัลถูกเขียนไว้ในฟังก์ชัน set_led( ) ซึ่งคำสั่งนั้นคือ digitalWrite( หมายเลขขา, ค่าสถานะสัญญาณดิจิทัล) และคำสั่งสุดท้ายของฟังก์ชัน loop( ) คือทำการหน่วงเวลา 500 มิลลิวินาที เพื่อจะได้ดูทันว่าเอ้อมันกระพริบจริง

มาคอมไพล์โปรแกรมและอัพเข้าบอร์ดกัน

ผลลัพธ์ของโปรแกรม

เมื่อโปรแกรมทำงานจะสลับการแสดงแอลอีดีให้สว่างและสั่งดับหลอดแอลอีดี วนสลับกันไปมา

สรุป

วันนี้เราสามารถติดตั้งชุดพัฒนาสำหรับ STM32F103 ได้สำเร็จ ตั้งค่าการทำงานสำเร็จ โปรแกรมชิพสำเร็จ รันโปรแกรมสำเร็จ ... (ดีใจไหมครับ) ครั้งหน้าเราจะใช้งานตัวถัดไปของบอร์ด คือ ADC1 ครับ ก็จะจบเรื่องของบอร์ด ET-STM32F103 และอีก 2 ตอนจะเป็นการใช้ LCD แบบ I2C และเซ็นเซอร์อุณหภูมิแบบ 1-Wire ด้วยไอซี DS1820 ล่ะครับผม

:----: บทความ ARM :----: บทความตอนถัดไป (next) :----:

--ไม่สามารถเข้าถึงฐานข้อมูลได้--