เมนู

วันพฤหัสบดีที่ 7 กรกฎาคม พ.ศ. 2559

Pinguino กับ LCD Keys pad shield part 1


               วันนี้ผมตั้งใจจะนำเสนอการใช้ 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 รู้จักและเพิ่มในส่วนออโต้คอมพลีตให้เราด้วย 


 #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:  }  

เพิ่มเติม

1 ความคิดเห็น:

  1. 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: $ 충청남도 출장샵

    ตอบลบ