Professional Documents
Culture Documents
IoT Chap2 GPIO
IoT Chap2 GPIO
การศึกษา
GPIO อินพุต/เอาต์พตุ
ดร.วิวฒั น์ ทวีทรัพย์
GPIO อินพุต/เอาต์พุต
• Outline
• GPIO ขาอินพุต/เอาต์พุตเอนกประสงค์
• การตั้งค่า pinMode และการสั่งงาน GPIO
• อินพุตแบบดิจิตอล (Digital Input)
• การทดลองใช้ขาอื่นๆ เพื่อเป็นอินพุต/เอาต์พุต
• Pull-up/Pull-down
• การใช้งาน INPUT_POLLUP ภายในบอร์ด
GPIO ขาอินพุต/เอาต์พุตเอนกประสงค์
GPIO ขาอินพุต/เอาต์พุตเอนกประสงค์
• สามารถโปรแกรมขา GPIO ของ NodeMCU สามารถเป็นได้ทั้ง
Input และ Output
• สามารถประกาศ map ขา GPIO ของNodeMCU ได้ดังนี้
static const uint8_t D0 = 16;
static const uint8_t D1 = 5;
static const uint8_t D2 = 4;
static const uint8_t D3 = 0;
static const uint8_t D4 = 2;
static const uint8_t D5 = 14;
static const uint8_t D6 = 12;
static const uint8_t D7 = 13;
static const uint8_t D8 = 15;
static const uint8_t D9 = 3; บอร์ดเขียนว่า RX
static const uint8_t D10 = 1; บอร์ดเขียนว่า TX
GPIO ขาอินพุต/เอาต์พุตเอนกประสงค์
• ตัวอย่างการใช้งานควบคุมเอาต์พุตที่ขาดิจิตอล digitalWrite() เราจะ
สั่งงานเปิดปิดไฟที่ขา D2 หรือก็คือ ขาที่ GPIO4
150 Ω
ขา D2
GPIO ขาอินพุต/เอาต์พุตเอนกประสงค์
• เมื่ออัพโหลดแล้ว จะเห็นไฟกระพริบทุก 1 วินาที
int sw = D1;
void setup() {
Serial.begin(9600);
pinMode(sw, INPUT_PULLUP);
// ขา GPIO16 หรื อ D0 ไม่มีความสามารถ INPUT_PULLUP
}
void loop() {
int val = digitalRead(sw);
Serial.println(val);
delay(100);
}
INPUT_PULLUP
INPUT_PULLUP คือจ่ายไฟ Vcc สัญญาณ 1 ให้กับ input เพื่อป้องกัน
สัญญาณรบกวน ในกรณีนี้ต่อสวิตช์เป็น input ซึ่งเมื่อเราต่อสัญญาณ 1
ลงกราวน์ จะได้สัญญาณ 0
Workshop 5 การใช้ INPUT_PULLUP
ในตัว
ต่อวงจรตามภาพ
- +
GND
D4
D1
Workshop 5 การใช้ INPUT_PULLUP
int sw = D4;
int led = D1;
void setup() {
Serial.begin(9600);
pinMode(led,OUTPUT);
pinMode(sw, INPUT_PULLUP);
}
void loop() {
int val = digitalRead(sw);
Serial.println(val);
delay(100);
if(val == 0)
{
digitalWrite(led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
}