Bagaimana untuk PIC membaca signal dari switch atau push button?
Langkah pertama anda perlu tahu cara sambungannya. Untuk di sambungkan kepada Microcontroller PIC, anda boleh memilih untuk membuat ‘active high’ atau ‘active low’. Sambungannya seperti di bawah.
Bagi active low, dalam keadaan biasa port PIC adalah high. Apabila suis di tekan, port PIC akan menjadi low.
Manakala bagi active high, dalam keadaan biasa port PIC adalah low. Apabila suis di tekan, port PIC akan menjadi high.
Saya membuat sample program dengan empat active low switch dan lapan active high LED.
Di bawah adalah videonya
PIC Source Code
/*
Project: Push Button Lesson
Programmer: Shahrulnizam Mat Rejab
PIC (Crystal Frequency):
PIC16F877A (20MHz), PIC16F887 (20MHz), PIC16F1939 (Internal 32MHz)
PIC18F4520 (10MHz), PIC18F4550 (10MHz), PIC18F46K22 (Internal 16MHz)
Compiler: HI-TECH C for PIC10/12/16 V9.83, PIC18 V9.80
Last Modified: 8 November 2013
Website: http://shahrulnizam.com
*/
#define PUSH_BUTTON
#if defined (_16F877A) || (_16F887)
#define LED PORTD
#elif defined (_16F1939) || (_18F4520) || (_18F4550) || (_18F46K22)
#define LED LATD
#endif
#include "LibraryHardware.h"
void setup()
{
initialize();
TRISA=0b00000000;
TRISB=0b00000000;
TRISC=0b00000000;
TRISD=0b00000000;
TRISE=0b00000000;
BUZZER=1;
}
void loop()
{
char button;
button=read_button();
if(button>0) delay(200);
switch(button){
case 1:{LED=LED+1;break;}
case 2:{LED=LED-1;break;}
case 4:{LED=LED>>1;break;}
case 8:{LED=LED<<1;break;}
default:{LED=LED;break;}}
}
leh x tnjk mcm mane nk gune software protel.., klau leh bg exp. strt dr mule desgn cct smpi auroute pcb…library pun x tau nk cri mane(kt tenet error je)….
Ok, nnti ada masa aku wat slide example utk Protel DXP.
slm.. bro shahrul… sifu PIC..
kalo di remove kan SUIs di kedua2 keadaan active high & active low…
masih terjadi x keadaan atau situasi active HIGH & active low …
apa beza active high dgn PULL up resistor
dan apa beza active low dan pull down resistor…?
ada perbezaan x?.. atau sama jer?
Luqman,
Suis dan resistor tersebut seperti voltage divider. Resistance suis ketika contact adalah zero dan ketika non-contact adalah infinity. Jadi, ia akan supply voltage 0V atau 5V kepada PIC, iaitu signal LOW atau HIGH.
Term active low, saya define sebagai memberi signal LOW apabila suis diaktifkan. Namun suis juga ada jenis iaitu Normally Open (NO) atau Normally Close (NC). Litar di atas saya gunakan NO.
Term pull-down resistor pula adalah resistor yang disambungkan ke 0V. Oleh itu, litar Active High diatas mempunyai pull-down resistor.
pnah pkai softwere MPLAB x? ape kekurangan dan kebaikan die bbanding softwere lain ek??sy kne buat rbot dan report kne buat bahagian programming n control system mggunakan autonmous board yg dkuarkan oleh cytron…leh tlong ceritakan ckit x??n die mlibatkan pic juga…sy xbrapa pham sngat
miftahul, memang sy gunakan software MPLAB. Kelebihannya boleh menggunakan C dan boleh program terus dari MPLAB tanpa menggunakan software lain.
Untuk program board Cytron, perlu lihat apa interface dan rujuk PIC Lesson dlm blog ini.
pic lesson yg mne 1 ek??sbb cni de bnyk topic..de note2 yg mengenai softwere MPLAB x??
miftahul, cara guna MPLAB http://shahrulnizam.com/pic-lesson-menggunakan-mplab
untk cmpile file dr assebly ke hex dcimal tu mmg leh pkai win pic je ke??klo yg len bleh pkai x??dan ade nota mngenai kod2 assebly yg digunakan untk pengaturcaraan dlm mplab x? cntoh
BSF
BCF
BTFSS
PWM n so more…sgktan2 smua ni sy xtaw die sgktan dr perktaan ape..dan mcm mna pnggunaannya…tlg ea cik shahrulnizam
miftahul, mplab boleh compile assembly dan juga C. Sy buat contoh2 dlm C sebab lebih mudah berbanding assembly. Dh lama saya tinggalkan coding assembly.
sy nk tnye encik,blh x klau sy nk gnkan program switch push button ni pda penutup tangki minyak kereta untuk bg isyart pd LCD yg pintu itu dh terbuka?
arinah, boleh. Letakkan limit switch pd penutup tangki untuk mengesan penutup tersebut terbuka atau tertutup. Kemudian boleh display pd LCD.
ilmu saudara ni..memg berguna..terima kasih bnyk2
salam, nak tanya….switch tu ada 4 kaki…mcm mana nak ,kira kalau nak guna…mcm mana?
Switch Push Button 4 kaki, sambungkan 2 kaki je yang NO (Normally Open). Bila tekan suis baru ada sambungan pada kedua2 kaki tersebut.
boleh tak bagi contoh untuk blingkin led,, menggunakan bahasa c. yang ringkas,,
nurul, saya dah bagi dah contoh untuk LED kat PIC Lesson LED.
salam, maaf la klu post ni lame sgt tp nk tny sket
klu pakai complier xc16, mcm mana nak declare 4 input port yg berlainan termasuk led?
w/salam, aishah. Declare input/output kat TRISA, TRISB dan seterusnya.
ok, dh dpt…
skang ni klu nk letak input dlm switch statement pula mcm mana?
saya ada 4 port berlainan…
RA7, RE0, RE1 n RG12 ikut kehendak tenaga pengajar.
klu port yg same bleh declare skali tp dlm keadaan camni yg kena selesaikan…
salam encik . boleh sy tahu apa itu “LibraryHardware.H” ?
w/salam, shazilla. LibraryHardware.h function saya buat sendiri.