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

PIC ภาษา C ตอน รับค่าจากสวิตช์ทำไฟวิ่ง

ตอนนี้เรามาลองรับค่าจากสวิตช์เพื่อมาทำเป็นไฟวิ่งแบบง่ายๆกันดูครับ
ก่อนอื่นจะกำหนดสวิตช์ต่อกับ port C คือ RC0 และ RC1 ส่วนการแสดงผลจะให้ไปออกที่ RB0 - RB3


เราจะต่อวงจรตามรูป
มาดู code กัน
#include<16F877.H>
#FUSES NOWDT,NOPROTECT,NOLVP,HS
#USE delay(clock=10000000)
#USE fast_io(b)
#USE fast_io(c)
void main()
{
set_tris_b(0X00);
set_tris_c(0xFF);
while(1)
{
if(input(PIN_C0) ==1 & input(PIN_C1)==1)
{
output_b(0X01);
delay_ms(1000);
output_b(0X02);
delay_ms(1000);
output_b(0X04);
delay_ms(1000);
output_b(0X08);
delay_ms(1000);
}
if(input(PIN_C0) ==0 & input(PIN_C1)==1)
{
output_b(0X08);
delay_ms(1000);
output_b(0X04);
delay_ms(1000);
output_b(0X02);
delay_ms(1000);
output_b(0X01);
delay_ms(1000);
}
if(input(PIN_C0) ==1 & input(PIN_C1)==0)
{
output_b(0X01);
delay_ms(1000);
output_b(0X08);
delay_ms(1000);
}
if(input(PIN_C0) ==0 & input(PIN_C1)==0)
{
output_b(0X06);
delay_ms(1000);
output_b(0X09);
delay_ms(1000);
}
}
}

ส่วนแรก กำหนด สภาวะ port แบบทั่วไป คือ port b ทำหน้าที่ ouput และ port C ทำหน้าที่ input
if(input(PIN_C0) ==1 & input(PIN_C1)==1) กำหนดสภาวะไม่กด สวิตช์ทั้งคู ไฟจะวิ่งเรียงจาก RB0-RB3
if(input(PIN_C0) ==0 & input(PIN_C1)==1) กดสวิตช์ RC0 ไฟวิ่งจาก RB3 - RB0
if(input(PIN_C0) ==1 & input(PIN_C1)==0) กดสวิตช์ RC1 ไฟกระพริบ RB0 และ RB3
if(input(PIN_C0) ==0 & input(PIN_C1)==0) กดสวิตช์ทั้งคู่ ไฟกระพริบ RB1,RB2 และ RB0,RB4

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


เขียนเมื่อ 2 มี.ค. 2554