WEEK 1 Arduino – Basic I/O (Digital Input/Output, Shields, Sensors)

Arduino คืออะไร? ทำไม Arduino ถึงเป็นที่นิยมมากในปัจจุบัน
Arduino คืออะไร: Arduino หรือที่อ่านว่า อา-ดู-อิ-โน่ หรือ อาดุยโน่ เป็นบอร์ดไมโครคอนโทรเลอร์ในตระกูล AVR ซึ่งมีการพัฒนาออกมาในรูปแบบของ Open Source คือมีการเปิดเผยหรือเผยแพร่ข้อมูลต่างๆั้งในส่วนที่เป็น Hardware และ Software โดยตัวของบอร์ด Arduino เองนั้นถูกออกแบบมาให้สำหรับผู้ที่เริ่มต้นที่ต้องการจะศึกษา เพราะความง่ายของการพัฒนาโปรแกรมหรือโปรเจคต่างๆที่มีการใช้ Arduino นั้นจะช่วยให้สามารถต่อยอดไปในเรื่องต่างๆได้อย่างง่ายดาย
 


จุดเด่นที่บอร์ด Arduino นั้นได้รับความนิยม
หลังจากที่เราหมดข้อสงสัยกับคำถามที่ว่า Arduino คืออะไร กันแล้วนั้น มาดูในส่วนที่ว่าทำไมArduino ถึงเป็นที่นิยมมากในปัจจุบัน เหตุผลอะไรกันที่ทำให้ Arduino นั้นมีผู้ใช้งานอย่างมากมายมหาศาล
โครงสร้างของโปรแกรมที่ไม่ได้ซับซ้อน มีรูปแบบคำสั่งที่ง่ายและไลบารี่ต่างๆพร้อมใช้งาน
มี Arduino Community ที่ช่วยกันพัฒนาสิ่ต่างๆออกมาอย่างต่อเนื่อง
มี Hardware หรือโมดูลต่างๆที่สามารถนำมาใช้ในการพัฒนาได้มากมาย
ราคาถูกไม่แพงมากจนเกินไป สามารถหาซื้อได้ทั่วๆไป
Cross Platform มี IDE ที่สามารถพัฒนาได้ในทุกระบบปฏิบัติการ
โครงสร้าง Pin บนบร์อด Arduino UNO R3


โครงสร้างบร์อด Arduino UNO R3 ซึ่งบร์อดนี้เป็นอีกหนึ่งบร์อดที่ได้รับความนิยมมากๆ ซึ่งโครงสร้าง PIN หรือพร์อตต่างๆนั้นจะมีดังนี้
        USB Port: พร์อตนี้จะใช้เชื่อมต่อระหว่าง Computer และตัวบร์อดเข้าด้วยกัน เพื่อทำการอัพโหลด Code ที่เราเขียนเข้าไปในตัว MCU ในบร์อดและจ่ายไฟให้กับบอร์ด
Reset Button: เป็นปุ่มสำหรับกดรัเซ็ตตัวบร์อดหรือการทำงานของตัว MCU เอง
ICSP Port ของ Atmega16U2 เป็นพร์อตสำหรับการเขียนโปรแกรมที่ใช้เชื่อมต่อกับตัวของ Visual Com port ใน Atmega16U2
I/O Port Digital: พินต่างๆที่มีการรับ Digital I/O โดยมีตั้งแต่ขา D0 ถึง D13 และบาง Pin จะทำหน้าที่อื่นๆอีกด้วยเช่น เช่น Pin 0,1 เป็นขาที่ทำหน้าที่ในส่วนของการรับส่ง Tx,Rx Serial และ Pin 3,5,6,9,10 และ 11 เป็นขา PWM
ICSP Port: Atmega328 เป็นพอร์ตที่เชื่อมต่อกับโปรแกรม Bootloader
Atmega328 : ตัวชิบคอนโทรลเลอร์ซึ่งตัวบร์อด Arduino UNO R3 นี้จะเป็น Atmega328
I/O Port Analog: Pin ต่างๆที่รับสัญญาณอนาล็อก ตั้งแต่ขา A0-A5 (A มาจากคำว่า Analog)
Power Port: ภาคจ่ายไฟหรือ Pin สำหรับการต่อไฟเลี้ยงให้กับโมดูลหรืออุปกรณ์ต่างๆที่เชื่อมต่อกับบร์อดโดยมีแรงดันไปไฟที่ +3.3 V, +5V, GND, Vin
Power Jack: รับไฟจาก Adapter ซึ่งที่แรงดันอยู่ระหว่าง 7-12 V

Atmega16U2 ชิบคอนโทรลเลอร์เป็น MCU ที่ทำหน้าที่เป็น USB to Serial ซึ่ง Atmega328 จะเชื่อมต่อกับ Computer ผ่าน Atmega16U2

อุปกรณ์ที่ใช้
  • บอร์ด Arduino
           ผลการค้นหารูปภาพสำหรับ บอร์ด arduino
  • Node NCU devkit
             ผลการค้นหารูปภาพสำหรับ node mcu devkit

  • MAX721 Display
               ผลการค้นหารูปภาพสำหรับ MAX7219 LED Dot matrix 8-Digit Digital Display

  • HDC1080 High Accuracy Humidity-Temperature Sensor Module 

                       ผลการค้นหารูปภาพสำหรับ HDC1080 High Accuracy Humidity-Temperature Sensor Module

  • สายไฟ
            ผลการค้นหารูปภาพสำหรับ สายไฟตัวผู้ตัวเมีย

จุุดประสงค์
        เพื่อแสดงข้อความ "Arduno" ผ่าน MAX721 Display

ขั้นตอนการทำ
        1.เขียนโค้ชใส่ Arduino ตามโค้ชตัวอย่างที่ให้นี้
#include <SPI.h>   
#include "LedMatrix.h"  
 #define NUMBER_OF_DEVICES 1 
 #define CS_PIN D8  
LedMatrix 
ledMatrix = LedMatrix(NUMBER_OF_DEVICES, CS_PIN); 
 void setup() 
{   Serial.begin(115200); // For debugging output   
ledMatrix.init();   
ledMatrix.setIntensity(4); // range is 0-15   
 ledMatrix.clear();   ledMatrix.commit(); 
}  
 void loop() 
 //  ledMatrix.clear(); 
 //  ledMatrix.commit(); 
// commit send buffer to the displays  
//  delay(1000);   
Send2MAX7129(7, 16, 0);   
Send2MAX7129(6, 17, 0);  
Send2MAX7129(5, 18, 0);   
Send2MAX7129(4, 19, 0);   
Send2MAX7129(3, 20, 0);   
Send2MAX7129(2, 21, 0);   
Send2MAX7129(1, 22, 0);   delay(1000); }  
//===================================================  
void Send2MAX7129(byte SegPosition, byte Value, bool dotDigit)  
{ const static byte charTable [] =   { B01111110, B00110000, B01101101, B01111001,      B00110011, B01011011, B01011111, B01110000,      B01111111, B01111011, B01110111, B00011111,      B00001101, B00111101, B01001111, B01000111,     B01110111, B00000101, B00111101, B00011100,     B00010000, B00010101, B00011101   };   
Value = charTable[Value];   
if (dotDigit == 1) Value |= 0x80;  
digitalWrite(CS_PIN, LOW);   
SPI.transfer (SegPosition);   
SPI.transfer (Value);   
digitalWrite (CS_PIN, HIGH);   Serial.print(Value); }  
//=================================================== // 
##SegPosition >> 87654321 
##SegData >> tabcdefg  
//===================================================  
void SendData2MAX7129(byte SegPosition, byte SegData)  
digitalWrite(CS_PIN, LOW);   
SPI.transfer (SegPosition);   
SPI.transfer (SegData);   
digitalWrite (CS_PIN, HIGH);  
}



ผลลัพธ์















ที่มา
https://www.elecexpert.com/article/what-is-arduino

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Raspberry Pi III คืออะไร

WEEK 9 NI labview 2014