วันนี้ผมตั้งใจจะนำเสนอการใช้ Pinguino 8 บอร์ดเชื่อต่อกับจอ LCD โดยผมเลือกที่จะใช้ LCD Keys Pad Shield เพราะความสะดวก สามารถเสียบลงบนตัว Pinguino 8 ได้เลย หาซื้อได้ง่าย และยังราคาถูกอีกด้วย ผมคิดว่าถูกกว่า และสะดวกกว่า ซื้อแล้วมา wiring สายเองเสียอีกครับ ผู้อ่านหลายๆท่านอาจจะมีอยู่แล้วกับตัวก็ได้ หรือถ้าใครยังไม่มีก็ลอง search หา ลองซื้อมาเล่นดูนะครับ ตัวที่ผมจะใช้จะมีหน้าตาประมาณในรูปข้างล่างนี้เลยครับ
รูปที่ 1 LCD Key pad shield ที่ใช้ |
คราวนี้เมื่อเราจะใช้งานเจ้า shield ตัวนี้เราก็จำเป็นจะต้องมี schematic รวมถึงตำแหน่งขาที่มันจะเชื่อมต่อกับบอร์ด Pinguino 8 ของเราเสียก่อนจึงจะสามารถเขียนโปรแกรมเพื่อใช้งานมันได้ ซึ่งผมใช้ schematic จากที่นี้ครับ
http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)
และอันนี้ก็
diagram ของมันครับ
ซึ่งใน
link ข้างบนนั้นนอกจาก schematic แล้วยังมีโค้ดตัวอย่างที่ใช้กับ
Arduino ให้อีกด้วยครับ ซึ่งเราสามารถ copy แล้วเอามา modify เพียงเล็กน้อยก็สามารถใช้งานกับบอร์ด
Pinguino 8 ได้แล้วครับ
หลังจากเราได้
schematic กับ pin diagram ของเจ้า LCD Key pad shield
มาแล้ว เราก็ต้องมาดูว่าเจ้า Pinguino 8 นั้นมี
pin number อะไรบ้างและมีการจัดเรียงบนบอร์ดอย่างไร อันดับแรกคือ pin number ของ
Pinguino ซึ่งใช้ PIC18F45K50 เราสามารถดูได้จาก
link ต่อไปนี้ครับ หรือจะดูที่รูปที่ 2 เลยก็ได้ครับ
รูปที่ 2 Pinguino pin number |
จากรูปที่
2 จะเห็นว่า Pinguino
ได้กำหนดขาต่างๆของ PIC18F45K50 ไว้เป็นหมายเลขเพื่อให้เรียกใช้งานได้สะดวกคล้ายกับ
Arduino ตัวอย่างเช่น ขา RB0 ก็จะเป็นขาหมายเลข
0 ขา RB1 ก็จะเป็นขาหมายเลข 1
ไล่เรียงกันไป
ซึ่งแต่ละขาก็จะมีความสามารถแตกต่างกันไป คราวนี้พอผมเอามาทำเป็นบอร์ด Pinguino 8 แล้วพยายามจัดเรียงขาให้ได้ใกล้เคียงกับ Arduino ตำแหน่งขามันเลยไม่ได้เรียงกันเป็นลำดับเหมือนกับ
Arduino ซึ่งอันนี้เป็นสิ่งที่ทำให้สับสนได้ง่ายโดยเฉพาะผู้เริ่มต้น
แม้แต่กับตัวผมเองเมื่อแรกเริ่มก็งงจนเขียนโค้ดผิดแล้วงมหาสาเหตุอยู่หลายวันทีเดียว
ดังนั้นที่บอร์ด Pinguino 8 ผมจึงมีเขียนหมายเลขกำกับเอาไว้ที่แต่ละขาเพื่อให้ง่ายเวลาใช้งานและเขียนโปรแกรม
รูปที่ 3 และรูปที่ 4 แสดงตัวเลขกำกับแต่ละขาครับ
รูปที่ 3 pin number ฝั่ง digital |
รูปที่ 4 pin number ฝั่ง analog |
ทีนี้เมื่อเราพิจารณา pin diagram และ schematic ของ LCD Key pad shield กับหมายเลขกำกับบนบอร์ด Pinguino 8 ก็จะสามารถสรุปการเชื่อมต่อได้ดังต่อไปนี้ครับ
LCD
Shield Pinguino 8
D4 24
D5 18
D6 17
D7 16
RS 5
E 4
Back
light 2
Keys 8 หรือ A0
เมื่อเรารู้หมายเลขขาที่ใช้ในการเชื่อต่อแล้วเราก็สามารถเริ่มเขียนโค้ดเพื่อแสดงข้อความบนจอ LCD ได้แล้วครับ
เริ่มต้นจากการ define ขา back light ก่อนเพื่อให้ง่ายในการเขียนโค้ด และ IDE รู้จักและเพิ่มในส่วนออโต้คอมพลีตให้เราด้วย
และเราจะกำหนดขา back light ให้เป็นเอ้าต์พุท และสั่งให้เป็น on โดยส่ง logic high ออกไป ด้วยคำสั่ง
ถัดมาเราจึงทำการ initialize LCD ด้วยคำสั่ง
ซึ่งค่าพารามิเตอร์ที่ส่งให้ฟังก์ชันจะเป็นหมายเลข I/O ของ Pinguino ที่เชื่อมต่อกับจอ LCD โดยตัวแรกจะเป็นขา RS, E, และตามมาด้วยขาดาต้า D4-D7 ตามลำดับ นี่เป็นในกรณีที่เชื่อมต่อจอ LCD ในแบบ 4 bit mode นะครับดังนั้นพารามิเตอร์ที่เหลือจึงใส่ค่าเป็น 0 สี่ตัว
เมื่อมาถึงตรงนี้เราก็สามารถเริ่มใช้งานจอ LCD ได้แล้ว โดยผมจะทำการเคลียร์หน้าจอเสียก่อน จากนั้นจึงกำหนดให้เคอร์เซอร์ไปที่ตำแหน่งเริ่มต้นของแถวแรกซึ่งก็คือตำแหน่ง 0,0 แล้วจึงส่งข้อความออกไปแสดงดังตัวอย่างโค้ดข้างล่างนี้ครับ
และนี่คือตัวอย่างโค้ดทั้งหมดครับ
เพิ่มเติม
#define BACK_LIGHT 2 //LCD back light control by pin2
และเราจะกำหนดขา back light ให้เป็นเอ้าต์พุท และสั่งให้เป็น on โดยส่ง logic high ออกไป ด้วยคำสั่ง
pinMode(BACK_LIGHT, OUTPUT);
digitalWrite(BACK_LIGHT, HIGH);
ถัดมาเราจึงทำการ initialize LCD ด้วยคำสั่ง
lcd.pins(5,4,24,18,17,16,0,0,0,0); //RS,E,D4,D5,D6,D7 in 4 bit mode
ซึ่งค่าพารามิเตอร์ที่ส่งให้ฟังก์ชันจะเป็นหมายเลข I/O ของ Pinguino ที่เชื่อมต่อกับจอ LCD โดยตัวแรกจะเป็นขา RS, E, และตามมาด้วยขาดาต้า D4-D7 ตามลำดับ นี่เป็นในกรณีที่เชื่อมต่อจอ LCD ในแบบ 4 bit mode นะครับดังนั้นพารามิเตอร์ที่เหลือจึงใส่ค่าเป็น 0 สี่ตัว
ต่อมาเราจำเป็นต้องกำหนดว่า
LCD ที่เรากำลังใช้งานอยู่นั้นเป็นชนิดใด 16x2 หรือ 20x4
โดยใช้คำสั่งต่อไปนี้ครับ
lcd.begin(16,2); //collumn, row
เมื่อมาถึงตรงนี้เราก็สามารถเริ่มใช้งานจอ LCD ได้แล้ว โดยผมจะทำการเคลียร์หน้าจอเสียก่อน จากนั้นจึงกำหนดให้เคอร์เซอร์ไปที่ตำแหน่งเริ่มต้นของแถวแรกซึ่งก็คือตำแหน่ง 0,0 แล้วจึงส่งข้อความออกไปแสดงดังตัวอย่างโค้ดข้างล่างนี้ครับ
lcd.clear();
lcd.setCursor(0,0); //collumn 0, first row
lcd.printf("Hello World!....");
และนี่คือตัวอย่างโค้ดทั้งหมดครับ
1: /*-----------------------------------------------------
2: Author: --<Ekkachai Muangrodpai>
3: Date: 2016-07-07
4: Board: Pinguino 8 + LCD Key pad shield v1
5: Description: Display 'Hello World!' on LCD
6: LCD Shield Pinguino 8
7: D4 24
8: D5 18
9: D6 17
10: D7 16
11: RS 5
12: E 4
13: Back light 2
14: -----------------------------------------------------*/
15: #define BACK_LIGHT 2 //LCD back light control by pin2
16: void setup() {
17: // put your setup code here, to run once:
18: pinMode(BACK_LIGHT, OUTPUT);
19: digitalWrite(BACK_LIGHT, HIGH);
20: lcd.pins(5,4,24,18,17,16,0,0,0,0); //RS,E,D4,D5,D6,D7 in 4 bit mode
21: lcd.begin(16,2); //collumn, row
22: lcd.clear();
23: lcd.setCursor(0,0); //collumn 0, first row
24: lcd.printf("Hello World!....");
25: }
26: void loop() {
27: // put your main code here, to run repeatedly:
28: }
เพิ่มเติม
Casino - Mapyro
ตอบลบThe casino at Imanekah is just 여주 출장샵 one 사천 출장마사지 of many casinos in Oman. It is owned by the GGP 구미 출장안마 and was launched in 2006. The casino has the name and number 구리 출장샵 of slots Rating: 6/10 · 20 votes · Price range: $ 충청남도 출장샵