You are on page 1of 11

ใบงานการทดลองที่ 5

เรื่อง อินพุต-เอาต์พุตพอร์ต ไมโครคอนโทรลเลอร์


1. วัตถุประสงค์ (Objectives)
เพื่อศึกษาและทำความเข้าใจการใช้งานและควบคุม อินพุต-เอาต์พุตพอร์ต ของไมโครคอนโทรลเลอร์ ซึ่ง
ไมโครคอนโทรลเลอร์ แต่ละเบอร์จะมีจำนวนพอร์ต ที่แตกต่างกันออกไป ผู้ใช้งานจำเป็นต้องศึกษาคู่มือของไมโคร
คอนโทรลเลอร์ เบอร์นั้นๆ รูปแบบในการใช้งานและควบคุมอินพุต-เอาต์พุต มีรูปแบบเดียวกัน ไมโครคอนโทรลเลอร์บางเบอร์
ยังมี อินพุตพอร์ต ที่สามารถรับสัญญาณอนาล็อกได้ด้วย และทำการแปลงให้เป็นสัญญาณดิจิตอลอยู่ภายในซึ่งจะได้กล่าวถึง
การใช้งานภายหลัง
การใช้งานอินพุต-เอาต์พุตพอร์ต ของไมโครคอนโทรลเลอร์ จะต้องกำหนดโหมดการทำงานให้เป็นอินพุต หรือเป็น
เอาต์พุต ตามวงจรไฟฟ้าที่ออกแบบเอาไว้ การกำหนดให้มีการทำงานเป็น อินพุตหรือเอาต์พุต สามารถกระทำได้ในระดับบิต
โดยกำหนดเพียงครั้งแรกก่อนเริ่มมีการใช้งาน หากมิได้มีการกำหนดหลังจากมีการรีเซ็ตไมโครคอนโทรลเลอร์หรือมีการเริ่มต้น
การใช้งานใหม่สภาพของพอร์ตจะมีสถานะเป็นอินพุต
คำสั่งที่เกี่ยวข้องกับการใช้งานควบคุม อินพุต-เอาต์พุตพอร์ต มีดังนี้
pinMode(pin, mode) กำหนดขาของไมโครคอนโทรลเลอร์ให้เป็น อินพุต หรือ เอาต์พุตพอร์ต
digitalRead(pin) รับข้อมูลจากอินพุต จากขาของไมโครคอนโทรลเลอร์ที่กำหนด
digitalWrite(pin, value) ส่งข้อมูลเอาต์พุตพอร์ต ไปยังขาของไมโครคอนโทรลเลอร์ที่กำหนด
pin: ขาของไมโครคอนโทรลเลอร์ที่ต้องการควบคุมตามการอ้างของ Arduino
ดูตารางที่ 1 การเทียบขาของไมโครคอนโทรลเลอร์กับการอ้างอิงของ Arduino
mode: กำหนดให้ทำงานเป็น อินพุตพอร์ต เอาต์พุตพอร์ต และอินพุตพอร์ตแบบ PULLUP
value: กำหนดสถานะของพอร์ตให้เป็น HIGH หรือ LOW

ATmega328(TQFP) ไมโครคอนโทรลเลอร์ iEE-M328 Board


Pin Number Pin Name Name Arduino IDE
30 RX/PD0 IO0 0
31 TX/PD1 IO1 1
32 PD2/INT0 IO2 2
1 PD3/INT0 IO3 3
2 PD4 IO4 4
9 PD5 IO5 5
10 PD6 IO6 6
11 PD7 IO7 7
12 PB0 IO8 8
13 PB1 IO9 9
14 PB2 IO10 10
15 PB3 IO11 11
16 PB4 IO12 12
17 PB5 IO13 13
23 PC0 AD0 A0
24 PC1 AD1 A1
25 PC2 AD2 A2
26 PC3 AD3 A3
27 PC4 AD4 A4
28 PC5 AD5 A5
ตารางที่ 1 การเทียบขาของไมโครคอนโทรลเลอร์กับการอ้างอิงของ ArduinoIDE
2. อุปกรณ์และเครื่องมือ (Materials and Equipments)
 คอมพิวเตอร์ส่วนบุคคล ติดตั้งชุดพัฒนาซอฟต์แวร์อาดูโน่
 บอร์ดไมโครคอนโทรลเลอร์ iEE-M328 (Chip AtMega328P)
 บอร์ดขยายอินพุต/เอาต์พุต EP-1 (iEE-EP1)
 สายเชื่อมต่อ Micro USB
 ซอฟต์แวร์สำหรับพัฒนาโปรแกรม (ปรับแต่งให้ใช้งานได้กับบอร์ด iEE-M328)
http://download.ieeinfo.com/util/arduino-1.8.10-IEE.rar :: Arduino IDE
http://download.ieeinfo.com/util/CH341SER.rar :: Driver สำหรับ USB Port
 คู่มือ/เอกสารการศึกษาเพิ่มเติม และชุดคำสั่ง ดาวน์โหลดที่
https://www.arduino.cc/reference/en/

3. ระเบียบวิธีการทดลอง (Experimental Procedure)


3.1 การทดลองควบคุม อินพุต/เอาต์พุต EP-1 ของ Extension board รุ่น iEE-EP1
ภาคผนวก A วงจรรวม ของ iEE-EP1 ต่อหลอดแอลอีดีอยู่ที่ IO10 - IO13 โดยต่อแบบ Common Anode [CA] การ
ควบคุมให้หลอดแอลอีดีติดจะต้องส่ง ลอจิก ‘0’ ที่ขาเอาต์พุต และถ้าต้องการให้แอลอีดีดับจะต้องส่ง ลอจิก 1 มาที่เอาต์พุต
เพื่อให้หลอดดับ

รูป A1 การต่อหลอดแอลอีดี ของ Extension board รุ่น iEE-EP1

EX-A: ตัวอย่างการเขียนโปรแกรมควบคุมให้หลอดแอลอีดี D1 ติดแล้วดับสลับกัน 1 วินาทีสามารถเขียนโปรแกรมได้ดังนี้

const int led1 = 13; // IO13 void loop()


const int led2 = 12; // IO12 {
const int led3 = 11; // IO11 digitalWrite(led1, HIGH); // LED OFF
const int led4 = 10; // IO10 digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
void setup() digitalWrite(led4, HIGH);
{ delay(1000);
// initialize the digital pin as an output. digitalWrite(led1, LOW); // LED ON
pinMode(led1, OUTPUT); digitalWrite(led2, LOW);
pinMode(led2, OUTPUT); digitalWrite(led3, LOW);
pinMode(led3, OUTPUT); digitalWrite(led4, LOW);
pinMode(led4, OUTPUT); delay(1000);
} }
หมายเหตุ จากการทดสอบจะเห็นว่า อาจจะมีอุปกรณ์ในส่วนอื่นของบอร์ดทำงานโดยที่ไม่ได้สั่งงานเช่น Seven segment
แอลอีดี ซึ่งเป็นผลมาจากการเชื่อมต่อวงจรไว้แต่ ไม่ได้มีโปรแกรมควบคุมการทำงานจึงเกิดจากสัญญาณรบกวน สั่งงานให้ตัว
อุปกรณ์บนบอร์ดทำงานโดยไม่มีการควบคุม
ในทางปฏิบัติหากมีการเชื่อมต่ออุปกรณ์อยู่กับ I/O Port และในระหว่างทำการทดสอบส่วนอื่นๆ ที่ไม่ได้เกี่ยวข้องกับ
อุปกรณ์ดังกล่าวจึงจำเป็นจะต้องถอดอุปกรณ์ออกก่อนหรือจัดการควบคุมด้วยซอฟต์แวร์เพื่อไม่ให้อุปกรณ์ที่ไม่ได้เกี่ยวข้อง
ทำงานขึ้นมาเองโดยไม่ได้ตั้งใจ อันจะส่งผลเสียหายขึ้นได้

EX-B: ตัวอย่างการใช้ซอฟต์แวร์จัดการอุปกรณ์ที่ไม่เกี่ยวข้องในขั้นตอนการ setup() เพื่อควบคุมไม่ให้อุปกรณ์ในส่วนต่างๆ


ทำงาน เกิดความเสียหายในกรณีที่การใช้งานจริงมีการต่ออุปกรณ์ไว้ที่พอร์ตของไมโครคอนโทรลเลอร์

const int led1 = 13; digitalWrite(led1, LOW); // LED ON


const int led2 = 12; digitalWrite(led2, LOW);
const int led3 = 11; digitalWrite(led3, LOW);
const int led4 = 10; digitalWrite(led4, LOW);
delay(1000);
void setup() }
{ // initialize the digital pin as an output.
init_board(); // For initial Board iEE-EP1 must be call from setup()
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT); void init_board()
pinMode(led3, OUTPUT); {
pinMode(led4, OUTPUT); pinMode(4,OUTPUT);
} pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
void loop() pinMode(13,OUTPUT);
{ digitalWrite(13,HIGH);
digitalWrite(led1, HIGH); // LED OFF digitalWrite(4,LOW);
digitalWrite(led2, HIGH); shiftOut(8,7,MSBFIRST,0xFF);
digitalWrite(led3, HIGH); shiftOut(8,7,MSBFIRST,0x00);
digitalWrite(led4, HIGH); digitalWrite(4,HIGH);
delay(1000); }

หมายเหตุ ฟังก์ชั่น init_board() สำหรับควบคุมบอร์ด จะอธิบายรายละเอียดทำงานในใบงานการทดลองถัดไป

หลังจากใช้ซอฟต์แวร์จัดการควบคุมอุปกรณ์ที่ถูกต่ออยู่บนบอร์ดแต่ยังไม่ได้ใช้งานจะพบว่าการทำงานผิดพลาดจะไม่
เกิดขึ้นเนื่องจากได้มีการเข้าไปควบคุมสั่งให้หยุดการทำงานเอาไว้ก่อนในที่นี้ คือสั่งให้ตัวแสดงผล 7-Segment ไม่แสดงค่า
ออกมา
3.1.1 จงเขียนโปรแกรมควบคุมให้หลอดแอลอีดีติดทีละหลอดจาก D1 ไป D4 ห่างกัน 1 วินาที และดับทั้งหมดเป็นเวลา
2 วินาทีหลังจากนั้นติดจาก D4 ไป D1 วน Loop อย่างนี้ตลอดเวลา โดยให้ช่วงการเปลี่ยนทิศทางการเลื่อนต้องดับเป็นเวลา 2
วินาทีทุกๆทิศทางการเลื่อน
3.1.2 จงเขียนโปรแกรมควบคุมให้ Port B บิต3 และ บิต4 ของไมโครคอนโทรลเลอร์ ATmega 328TQFP เป็น High
และ low สลับกันทุกๆ 3 วินาที สังเกตผลการทำงานและบันทึกผลพร้อมทั้งอธิบายรายละเอียด การทำงานโดยดูวงจรที่แนบ
ในภาคผนวก
3.2 การจัดโครงสร้างของโปรแกรมใหม่โดยใช้การควบคุมแบบมีเงื่อนไข (Control Structure Program)
เพื่อให้เกิดประสิทธิภาพในการทำงานของระบบจึงต้องมีการใช้ฟังก์ชันของการควบคุมแบบมีเงื่อนไขมาควบคุมการ
ดำเนินการของคำสั่งหรือฟังก์ชันที่ใช้สำหรับในการดำเนินการหรือสั่งงานเพื่อให้ระบบเกิดการทำงานอย่างใดอย่างหนึ่ง กลุ่ม
คำสั่งในการดำเนินการควบคุมแบบมีเงื่อนไขประกอบไปด้วย

คำสั่ง รูปแบบ
for (initialization; condition; increment)
{
for
// statement(s);
}
while (condition)
{
while
// statement(s);
}
do {
do…while // statement(s);
} while (condition);

หมายเหตุ สามารถดูกลุ่มคำสั่งทั้งหมดและศึกษารายละเอียดได้ที่
https://www.arduino.cc/reference/en/#structure
ข้อจำกัดของการพัฒนาโปรแกรมควบคุมด้วย arduino ในเรื่องของการควบคุมพอร์ต คือสามารถทำการสั่งการพอร์ต
ของไมโครคอนโทรลเลอร์ได้เพียงครั้งละ 1 บิต จากตัวอย่าง EX-B ต้องการจะควบคุมหลอดแอลอีดีที่ต่ออยู่กับพอร์ตของ
ไมโครคอนโทรลเลอร์ หมายเลข 10 11 12 และ 13 จะต้องใช้การสั่งงานทีละคำสัง่ ทำให้โปรแกรมมีขนาดใหญ่และเป็นการ
สั่งงานในลักษณะเดียวกันสามารถนำมาปรับปรุงและทำให้โปรแกรมมีขนาดกระชับลง ได้ดังตัวอย่าง EX-C โดยการใช้
for Control Structure สามารถรวบรวมคำสั่งที่ทำงานซ้ำ มาจัดการภายใต้ for Control ได้

3.2.1 ให้ทำการทดลองอัพโหลดโปรแกรมตามตัวอย่าง EX-C ลงไปในบอร์ด iEE-M328 แล้ว สังเกตผลการทำงานที่ได้


และบันทึกผลการทดลองและอธิบายคำสั่งที่ใช้ในการปรับปรุงเพื่อให้เกิดการทำงานดังกล่าวมาโดยละเอียด
EX-C: นำตัวอย่าง EX-B นำมาปรับปรุงโครงสร้างของโปรแกรมโดยการใช้ for Control Structure ได้ดังนี้

// IO port array variable


const byte LED[] = {13,12,11,10}; // For initial Board iEE-EP1 must be call from setup()

void setup() void init_board()


{ {
// initialize the iEE-EP1 Board pinMode(4,OUTPUT);
init_board(); pinMode(7,OUTPUT);
// initialize the digital pin as an output. pinMode(8,OUTPUT);
for (int i = 0; i <= 3; i++) pinMode(13,OUTPUT);
pinMode(LED[i], OUTPUT); digitalWrite(13,HIGH);
} digitalWrite(4,LOW);
shiftOut(8,7,MSBFIRST,0xFF);
void loop() shiftOut(8,7,MSBFIRST,0x00);
{ digitalWrite(4,HIGH);
int i; }
for (i = 0; i <= 3; i++)
digitalWrite(LED[i], LOW);
delay(1000);
for (i = 0; i <= 3; i++)
digitalWrite(LED[i], HIGH);
delay(1000);
}

จะเห็นว่าเมื่อนำไปเปรียบเทียบกับตัวอย่าง EX-B จำนวนบรรทัดของโปรแกรมจะลดลงอย่างมากและสามารถทำงาน


ได้เหมือนเดิมทุกประการ

3.2.2 จงทำการทดลองใหม่โดยเปลี่ยนไปใช้คำสั่ง while สังเกตผลการทดลองและนำไปบันทึกผลพร้อมทั้งอธิบายการ


ทำงานของคำสัง่ ที่นำมาใช้

3.2.3 จงทำการทดลองใหม่โดยเปลี่ยนไปใช้คำสั่ง do…while สังเกตผลการทดลองและนำไปบันทึกผลพร้อมทั้งอธิบาย


การทำงานของคำสั่งที่นำมาใช้
3.3 การทดลองอ่านค่าอินพุต เพื่อควบคุมเอาต์พุต
บอร์ด iEE-EP1 มีการเชื่อมต่อ Button switch ตามวงจรดังรูป (สามารถดูวงจรรวมได้จากภาคผนวก A)

รูป A2 การต่อ Button switch ของ Extension board รุ่น iEE-EP1


EX-D: ตัวอย่างการเขียนโปรแกรมควบคุมโดยการอ่านค่าสถานะของ Button switch แล้วนำไปแสดงผลที่หลอดแอลอีดี
เมื่อสวิตช์ S1-A1 ถูกกด หลอดแอลอีดี D1 จะติด และเปลี่ยนแปลงตามสภาวะของสวิตซ์ที่ปรากฏ

const int buttonPin = A1; // the pushbutton pin


const int ledPin = 13; // the LED pin // If the pushbutton is pressed.
else
// variables will change: {
int buttonState = 0; // reading the pushbutton status // turn LED on:
digitalWrite(ledPin, LOW);
void setup() }
{ }
// initialize other device on iEE-EP1 Board
init_board();
// initialize the LED pin as an output: //======================================
pinMode(ledPin, OUTPUT); // For initial Board iEE-EP1 must be call from setup()
// initialize the pushbutton pin as an input: void init_board()
pinMode(buttonPin, INPUT); {
} pinMode(4,OUTPUT);
pinMode(7,OUTPUT);
void loop() pinMode(8,OUTPUT);
{ pinMode(13,OUTPUT);
// read the state of the pushbutton value digitalWrite(13,HIGH);
buttonState = digitalRead(buttonPin); digitalWrite(4,LOW);
shiftOut(8,7,MSBFIRST,0xFF);
// check the pushbutton is not pressed shiftOut(8,7,MSBFIRST,0x00);
if (buttonState == HIGH) digitalWrite(4,HIGH);
{ }
// turn LED off:
digitalWrite(ledPin, HIGH);
}
3.3.1 จงเขียนโปรแกรมควบคุมเพื่อรับค่าจากสวิตช์ และส่งไปควบคุมการแสดงผลที่หลอดแอลอีดี D1-D4 โดยมีเงื่อนไข
เมื่อกดสวิตซ์ S1-A1 แอลอีดี D1-D4 ติดทุกดวงค้างไว้แม้ว่าจะเลิกกดสวิตช์แล้ว และเมื่อกดสวิตซ์ S2-A2 แอลอีดี D1-D4 จะ
ดับและดับต่อไปแม้ว่าจะเลิกกดสวิตช์แล้ว (ไปรายงานผลการทดลองในหัวข้อ 4.3)
3.3.2 จงเขียนโปรแกรมควบคุมเพื่อรับค่าจากสวิตช์ ให้ทำงานแบบ Toggle เพื่อควบคุมการทำงานของ หลอดแอลอีดี
D2-D3 เมื่อกดสวิทช์ S1-A1 แอลอีดี D2-D3 ติด และกดอีกครั้งแอลอีดี D2-D3 จะดับ (ไปรายงานผลการทดลองในหัวข้อ 4.4)

3.4 การกำเนิดสัญญาณเสียง
สามารถจะสร้างสัญญาณเสียงโดยการพัลส์ HIGH/LOW ไปควบคุม output ที่ต่อกับวงจรขับอุปกรณ์กำเนิดเสียงตาม
วงจรของบอร์ดทดลองเป็นบัซเซอร์ โดยขับด้วยทรานซิสเตอร์ต่ออยู่กับ IO3

รูป A3 การต่อบัซเซอร์ และวงจรขับทรานซิสเตอร์

EX-E: ตัวอย่างโปรแกรมการสร้างสัญญาณเสียงโดยกำเนิดเสียงทุกๆ 3 วินาที

// Buzzer Connected IO3


#define BeepPin 3 // For initial Board iEE-EP1 must be call from setup()
void init_board()
void setup() {
{ pinMode(4,OUTPUT);
// initialize the iEE-EP1 Board pinMode(7,OUTPUT);
init_board(); pinMode(8,OUTPUT);
// initialize the digital pin as an output. pinMode(13,OUTPUT);
pinMode(Beep, OUTPUT); digitalWrite(13,HIGH);
} digitalWrite(4,LOW);
shiftOut(8,7,MSBFIRST,0xFF);
void loop() shiftOut(8,7,MSBFIRST,0x00);
{ int i; digitalWrite(4,HIGH);
for (i = 0; i <= 30; i++) }
{
digitalWrite(BeepPin, LOW);
delay(5);
digitalWrite(BeepPin, HIGH);
delay(5);
}
delay(3000);
}
3.4.1 จงเขียนโปรแกรมโดยเมื่อมีการกดสวิตช์ให้มีเสียง Beep เป็นเวลา 300 mS ทุกๆครั้ง หากมีการกดสวิตช์ค้างเสียง
จะต้องดังเพียง 300 mS เท่านั้น โดยดัดแปลงโปรแกรมตัวอย่าง EX-D และ EX-D
3.4.2 จงเขียนโปรแกรมสร้างสัญญาณเสียงความถี่ 800 เฮิร์ต ส่งเสียงดังเป็นเวลา 3 วินาทีและหยุดเสียงเป็นเวลา 5 วินาที
สลับกันอย่างต่อเนื่อง [ให้แสดงวิธีการคำนวณเพื่อให้ได้สัญญาณเสียงตามความต้องการดังกล่าว]

4. ผลการทดลอง (Experimental Results)


4.1 จงอธิบายคำสั่งที่เกี่ยวข้องกับการควบคุมอินพุต/เอาต์พุต และจำนวนอินพุต/เอาต์พุต ที่สามารถ
นำไปใช้คำสั่งดังกล่าวได้ โดยดูจากวงจรของภาคผนวก A
4.2 จากหัวข้อ 3.1.1 ให้อธิบายวิธีการและการทำงาน ของคำสัง่ ที่ใช้
4.3 จากหัวข้อ 3.1.2 ให้อธิบายวิธีการและการทำงาน ของคำสัง่ ที่ใช้
4.4 จากหัวข้อ 3.2.1 บันทึกผลการทดลองและอธิบายคำสั่งที่ใช้ในการปรับปรุงเพื่อให้เกิดการทำงานตามการทดลอง
4.5 จากหัวข้อ 3.2.2 บันทึกผลการทดลองและอธิบายคำสั่งที่ใช้ในการปรับปรุงเพื่อให้เกิดการทำงานตามการทดลอง
4.6 จากหัวข้อ 3.2.3 บันทึกผลการทดลองและอธิบายคำสั่งที่ใช้ในการปรับปรุงเพื่อให้เกิดการทำงานตามการทดลอง
4.7 จากหัวข้อ 3.3.1 อธิบายการทำงานของโปรแกรมควบคุมที่เขียน
4.8 จากหัวข้อ 3.3.2 อธิบายการทำงานของโปรแกรมควบคุมที่เขียน
4.9 จงแสดงวิธีการคำนวณความถี่เสียงที่เกิดขึ้นจากการทดลองในหัวข้อ 3.4.1
4.10 จงแสดงวิธีการคำนวณความถี่เสียงที่เกิดขึ้นจากการทดลองในหัวข้อ 3.4.2

5. คำถามท้ายการทดลอง (Questions and Answers)


5.1 จงออกแบบโปรแกรมควบคุมการทำงานของลอจิกเกต AND, NAND, OR, NOR ชนิด 3 อินพุต โดยกำหนดให้ input
และ output เป็นไปตามตาราง การกดสวิตซ์แทนสถานะลอจิก “1” และหลอดแอลอีดี ติดแทนสถานะลอจิก “1” จงเขียน
ตารางความจริงแสดงการทำงานของฟังก์ชั่น และแสดงรหัสโปรแกรมที่ใช้ พร้อมทั้งระบุจำนวนบรรทัดของคำสั่งที่ใช้

INPUT OUTPUT
A B C AND NAND OR NOR
S1-A1 S2-A2 S3-A3 LED-D1 LED-D2 LED-D3 LED-D4

การพิจารณาคะแนนใบงานนี้จะนำเอาจำนวนบรรทัดของโปรแกรมแต่ละกลุ่มมาเรียงลำดับจากจำนวนที่ใช้รหัสน้อย
สุดไปมากสุด หากการพิจารณาโครงสร้างของโปรแกรมและรหัสของโปรแกรมเหมือนกันจะติดลบทั้งคู่

----------------------------------------------------------
ภาคผนวก A
 วงจรสมบูรณ์ของ iEE-M328 ไมโครคอนโทรลเลอร์บอร์ด
 วงจรสมบูรณ์ของ iEE-EP1 บอร์ดขยายอินพุต/เอาต์พุต
A B C D E F G H J K

VCC R4 R5 C2
0 0
VCC VCC
X1
VCC 1K 1K

USB1 U2 10P C3
L3 L2 X1 R1 REF
1 VCC RXD
VCC 6 15 TXD 1M
D-
2 USBDM RS232 R2 C1 16M
0.1u
1 3 1
D+ 5 2 X2
4 USBDP TXD 1K
ID 3
GND
5
C7 7
RXD R3 10P
22P OSCI
14 J2
MICRO-USB RTS
X2 9 1K PB0 1
12M
CTS
13 J1 U1 PB1 2
IO8
C8 8
DTR
10 VCC 1 30 12 PB0 PB2 3
IO9
2 22P OSCO DSR
12
IO0
2 31
PD0/RXD PB0/CLKO
13 PB1 PB3 4
IO10 2
DCD IO1 PD1/TXD PB1/OC1A IO11
11 3 32 14 PB2 PB4 5
RI IO2 PD2/INT0 PB2/SS IO12
4 4 1 15 PB3 PB5 6
V3.3 GND IO3 PD3/INT1 PB3/MOSI IO13
5 2 16 PB4 GND 7
PD4/T0 PB4/MISO
CH340G1 C9 R6
IO4
IO5
6 9
PD5/T1 PB5/SCK
17 PB5 REF 8
GND
AREF
0.1u 7 10 7 X1 PC4 9
10K IO6 PD6/AIN0 PB6/XTAL1 SCL
3 8 11 8 X2 PC5 10 3
L1 IO7 PD7/AIN1 PB7/XTAL2 SDA

R7 SW1 IOL REF 20 23 PC0 IOH


AREF PC0/ADC0
RES VCC 18 24 PC1
VCC AVCC PC1/ADC1
25 PC2 J3
1K RESET PC2/ADC2
ON 19 26 PC3 PC0 1
ADC6 PC3/ADC3 AD0
22 27 PC4 PC1 2
4 D1 J4 3.3V ADC7 PC4/SDA
28 PC5 PC2 3
AD1
4
1N4148 PC5/SCL AD2
1 29 RES PC3 4
PC6/RESET AD3
2 VCC PC4 5
U5 3 RES ATMEGA328POS-TQFP PC5 6
AD4
AD5
LM1117S-3.3 VCC 4 3.3V VCC
VCC
3 2/4 5 VCC AD
VCC IN OUT 3.3V
6
5 7 5
GND
C10 C11 8 VCC
PB5
100nF 100nF
1 POWER PB3

8
UIN
VCC U3:B L4
6 J5
5 R8 6
7
PB4 1 2 6
PB5 3 4 1K
LM358
UIN RES 5 6 Built-in
LED

4
U4 ICSP
P1 D2 LM1117S-5,0
7 3 2/4
7
IN OUT VCC
N4004
GND
DC JACK C4 C5 C6
47u/25v 47u/25v 0.1u
1
8 8

FILE NAME: 328Board.pdsprj DATE:

DESIGN TITLE: iEE-M328 30-Mar-19


9 PAGE: 9
PATH: D:\SOS_Project\iEE-M328\328Board.pdsprj
1 of 1
BY: SURACHAI C. REV: 0.0 TIME: 6:17:13 PM
A B C D E F G H J K
A B C D E F G H J K

0 J2-E J1-E 0
IO8 1 1 IO0 RES RESET
PB0 PD0
IO9~ 2 2 IO1
PB1 PD1
IO10~ 3 3 IO2
PB2 PD2
IO11~ 4
PB3 PD3
4 IO3~
LS1-3
IO12~ 5
PB4 PD4
5 IO4 R9
IO13~ 6 6 IO5~ IO3~
1 GND 7
PB5 PD5
7 IO6~ 1
REF 8
GND PD6
8 IO7 10k Q1
SCL 9
AREF PD7 MMBT3906 BUZZER
PC4
SDA 10 IOL
PC5
IO2
IOH J4-E IO2
1 VCC U1
2 J3-E 2 VCC IO7 IO7 11 15
2
SH_CP Q0
AD0 1 3 RES IO4 14 1
PC0 DS Q1
AD1 2 4 3.3V 2
PC1 Q2
AD2 3 5 VCC IO4 12 3
AD3 4
PC2
6 J10 ST_CP Q3
4
PC3
VCC Q4
AD4 5 7 1 5
PC4 GND Q5
3 AD5 6 8 2 6 3
PC5 VCC +5V Q6
3 10 7
NC MR Q7
AD POWER 4 13 9
IO1 OE Q7'
IO1 5
UIN IO0
IO0 6 74HC595
NC
7
NC

4 25630701RP2 U2 4
IO13~ R1 D1 11 15
SH_CP Q0
IO8 IO8 14 1
510 DS Q1
2
J20 12
Q2
3
IO12~ R2 D2 IO5~ 3
ST_CP Q3
4
IO5
VCC Q4
2 5
510 +5V Q5
5 1 6 5
VCC GND Q6
10 7
IO11~ R3 D3 HD1 13
MR Q7
9
OE Q7'
VCC
510 J21 74HC595 DS18B20
IO6~ 3 1 1 2 3
IO10~ R4 D4 2
IO6 2
6 +5V 3 6
1
510 GND
GND DQ VDD
HD2 J30
VCC 1
AD1 S1-A1 J22 IO2
2
OUT
1 2 3 4 5 6
GND IR-Module
IO9~ IO9~ 3 3
IO9 VCC +5V
2 4
7 AD2 S2-A2 1
+5V
5
GND TOP VIEW 7
GND AD4 DQ TEMP.Sensor
6
+5V
HD3
AD3 S3-A3 VCC R5 SOCKET
J23 VCC 10k FOR IR MODULE & DS18B20
AD5 3
8 AD1 R6 VCC 2
AD5
8
+5V
1
10K GND
R7 VR-A0
AD2
VCC
HD4 AD0
10K JP1 FILE NAME: iEE-EP1_r2.pdsprj DATE:
Pull-UP
10K
C1 iEE-EP1 BOARD 18-Jun-19
AD3 R8 AD0 100nF
DESIGN TITLE:

9 PAGE: 9
10K JP2 AD4 VCC
PATH: D:\iEE-EP1_r2X.pdsprj 1 of 1
Pull-UP AD4
BY: SURACHAI C. REV: 2 TIME: 19:27:25
A B C D E F G H J K

You might also like