Monday, December 19, 2011

Selingan : Sistem Keselamatan Rumah Terkini

Assalamualaikum semua,

Insya Allah saya akan membuat sedikit upgrade untuk Sistem Keselamatan Rumah DIY ( Projek_001) dalam sedikit masa lagi ( tunggu 4Relays Board v3 siap pasang ).

1. Saya akan menggunakan board-board v3 untuk demo tersebut. Board-board tersebut adalah PIC Board v3, LED n Button Board v3, DwiLED Board v3 dan 4Relays Board v3.

2. Saya akan ubah suai supaya semua LED di uji terlebih dahulu sebelum sistem tersebut beroperasi.

3. Saya akan upload fail-fail yang terbaru ( Hitech C file ).

4. Saya akan buat video DEMO dan uploadkan ke internet.

Sekian, terima kasih.

Friday, December 16, 2011

Projek 2.2 : Litar Schematic ( Konsep )

Assalamualaikum semua,

Disertakan litar schematic ( konsep ) untuk gadget SetMasa.




1. LCD di sambung kepada port A ( A0 - A5) dan sebagai petunjuk/paparan.

2. Button di sambung kepada port C ( C0 - C7 ). Button sebagai input/setting untuk SetMasa

3. Relay di sambung kepada port B ( B0 - B3). Di dalam litar di atas, relay hanya 1 unit sebab kekurang ruang. Di dalam litar di atas, relay menyambung Mentol 12V kepada supply DC sebagai contoh ... kalau dalam penggunaan sebenar, L1 dan DC12 boleh ditukar kepada Mentol kalimantan dan AC supply 240 VAC.

Sekian untuk kali ini,

Insya Allah, akan bersambung ...

Selingan : Board v3 Update

Assalamualaikum semua,

Saya dah uploadkan fail eagle untuk board v3 dan sila rujuk posting berkenaan.

1. LCD Board v3 ... link
2. LED n Button Board v3 ... link
3. DwiLED Board v3 ... link
4. PICBoard v3 ... link

Terima kasih.

Thursday, December 15, 2011

Projek 2.1 : Kegunaan

Assalamualaikum semua.

SetMasa adalah gadget elektronik untuk menghidupkan/mematikan alatan elektrik yang bersambung kepada sumber elektrik ( AC single phase ) melalui relay.

Tujuan SetMasa di bangun/dibina untuk kegunaan berikut.

Ciri-ciri :

1. Mempunyai 4 set masa ( boleh ditambah mengikut keperluan melalui ubahsuai program PIC) yang berasingan setiap satu ( tidak berkait satu sama lain).

2. Daripada 4 set masa ... 1 bolehubah secara online/real time dan 3 lagi adalah tetap ( hanya boleh ubah melalui ubahsuai program/firmware PIC )

3. Untuk set bolehubah, boleh set masa hidup dan masa mati dari tempoh 1 saat sehingga 99 jam.

4. SetMasa boleh mengulangi masa hidup (ON) dan mati (OFF) sehingga 999 kali.

Kegunaan/Tujuan:

1. Boleh mengecas bateri HP/Laptop untuk 1 tempoh tertentu ( Ulangan = 0 ) ... contohnya charge bateri laptop 3 jam (tempoh untuk charge penuh) ... selepas 3 jam, Elektrik AC yang di masukkan ke laptop (untuk mengecas bateri) di matikan. Begitu juga untuk charge hp ( matikan alat pengecas hp). Dengan mematikan alat mengecas selepas bateri di charge penuh ... ini akan memanjangkan jangka hayat bateri laptop/hp dan menjimatkan penggunaan tenaga elektrik.

2. Katakan di dalam periuk nasi elektrik terdapat banyak baki nasi selepas makan malam. Jika dibiarkan dalam keadaan 'warm' nasi akan menjadi kering/keras/kerak dan jika tidak ON kan periuk nasi, mungkin serangga merayap akan curi masuk ke dalam periuk nasi. Dengan menggunakan SetMasa, SetMasa akan menyambungkan elektrik dari sumber ke periuk elektrik secara berkala ... sebagai contoh ON (panaskan periuk) selama 10 minit (sebagai contoh) dan OFF (matikan elektrik ke periuk) untuk tempoh 50 minit selepasnya dan ini akan berulang mengikut berapa banyak ulangan yang kita set. Dengan SetMasa, nasi tetap panas/selamat dari serangga/haiwan dan tak buang/guna banyak elektrik.

Dan lain-lain kegunaan yang sesuai.

Insya Allah akan bersambung ...

Tuesday, December 13, 2011

Projek 2.0 : SetMasa

Insya Allah, projek yang seterusnya adalah alat untuk ON/OFF alatan elektrik lain berdasarkan masa.

Projek ini saya namakan SetMasa. SetMasa berciri-cirikan :

1. Ada 4 set masa ( 1 boleh diset bila-bila masa, 3 lagi ada pre-set masa/hardcode dalam PIC ).

2. Untuk set masa bolehubah, cirinya adalah :
a) Panjang masa ON
b) Panjang masa OFF
c) Bil ulangan
d) Status (Start/Stop, ON/OFF )

3. Untuk menghidupkan (ON) alatan lain, SetMasa menggunakan relay sebagai perantara untuk mengalir/memberhentikan arus AC 240V ( single phase AC ) kepada alatan lain.

4. 3 set masa yang lain akan di setkan :
a) Panjang masa ON
b) Panjang masa OFF
c) Bil ulangan
di dalam PIC (hardcode/tak boleh ubah ... melainkan ubah kod dalam PIC ).

5. Untuk 3 set masa (pre-set) ini, set ini boleh diaktifkan/dinyah aktif dengan menggunakan hanya 1 butang ( toggle).

6. Board v3 yang terlibat :
a) PIC board v3
b) 4Relays board v3
c) LCD board v3
d) Led n Button Board v3

Sekian dulu untuk kali ini.

Selingan : Board v3

Insya Allah, board v3 yang seterusnya (schematic n PCB dah siap .. cuma belum buat board) :

1. 4 unit relay board
2. PWM board
3. ADC board
4. RS232 board

Board yang akan di buat (schematic n PCB):

1. Wireless board ( TX n RX )
2. Temperature board
3. IR board
4. PhotoResister board
5. USB board
6. Motor Driver board

Dan lain-lain.

Hardware : LCD Board v3

Assalamualaikum semua,

Kali ini, disertakan board LCD v3 dan litar-litar yang berkaitan.

Gambar n litar LCD Board v3 adalah seperti berikut :



LCD Board v3


LCD Board v3


IDC cable


Litar Schematic ( Format Eagle )


Litar PCB


Bagi sesiapa yang ingin mendapatkan board ini ( siap pasang n test), harga untuk pakej board adalah seperti berikut :

1. LCD Board v3 = RM33/unit
- LCD Board v3 (siap pasang n test )
- IDC cable

2. Belanja POS / penghantaran ( tanpa mengira bilangan pakej yang di order ) = RM6.00

Fail LCD Board v3 dalam format eagle boleh di download di SINI

NOTA:

1. Untuk cara pembelian pakej ini, sila email kepada saya ... allpicproject@gmail.com

Sekian terima kasih.

Hardware : DwiLED Board v3

Assalamualaikum semua,

Kali ini, disertakan board Dwi-LED v3 dan litar-litar yang berkaitan.

Gambar-gambar Dwi-LED Board v3 adalah seperti berikut :



Dwi-LED Board v3



Saiz Dwi-LED Board v3



IDC cable



Litar schematic (format eagle)


Nama n Lokasi Komponen Eletronik



Nilai n Lokasi Komponen Elektronik



Bagi sesiapa yang ingin mendapatkan board ini ( siap pasang n test), harga untuk pakej board adalah seperti berikut :

1. DwiLED Board v3 = RM23/unit
- DwiLED Board v3 (siap pasang n test )
- IDC cable

2. Belanja POS / penghantaran ( tanpa mengira bilangan pakej yang di order ) = RM6.00

Fail DwiLED Board v3 dalam format eagle dan lain-lain boleh di download di SINI .

NOTA:

1. Untuk cara pembelian pakej ini, sila email kepada saya ... allpicproject@gmail.com

Sekian terima kasih.

Sunday, December 11, 2011

Hardware : LED n Button Board v3

Assalamualaikum semua,

Disertakan hardware LED n Button board v3 dan lain-lain hal yang berkaitan:


LED n Button v3


LED n Button v3


LED n Button v3


Jumper untuk fungsi 'permanent close' atau boleh juga di sambung kepada butang luar ( ie butang 'push to on' yang luar/kotak ) melalui 1 pasang wayar.



IDC cable ( 10 ways )



Seterusnya litar schematic dan lokasi-lokasi komponen untuk board ini :


Litar Schematic ( Eagle format)


Nama dan lokasi komponen elektronik


Nilai dan lokasi komponen elektronik


Bagi sesiapa yang ingin mendapatkan board ini ( siap pasang n test), harga untuk pakej board adalah seperti berikut :

1. LED n Button Board v3 = RM21/unit
- LED n Button Board v3 (siap pasang n test )
- IDC cable

2. Belanja POS / penghantaran ( tanpa mengira bilangan pakej yang di order ) = RM6.00

Fail LED n Button Board v3 dalam format eagle dan lain-lain boleh di download di SINI .

NOTA:

1. Untuk cara pembelian pakej ini, sila email kepada saya ... allpicproject@gmail.com


Sekian terima kasih.

Hardware : PIC Board v3

Assalamualaikum semua.

Untuk tutorial dan projek yang seterusnya, saya akan menggunakan papan litar/board versi 3 ( board v3). Board v3 lebih kemas dan lebih tersusun berbanding dengan board versi yang sebelumnya.

Walaubagaimanapun, bagi sesiapa yang dah membuat board versi lama, masih lagi dapat menggunakan board tersebut tanpa sebarang perubahan atau hanya sedikit perubahan untuk board tertentu sahaja.

Gambar PIC Board v3 adalah seperti berikut:


PIC Board v3





Untuk PIC board versi 3, litar schematic adalah seperti dibawah.


Litar schematic (sila buka di 'new tab window' untuk gambar yang lebih besar).


PCB (senarai nama komponen dan lokasi)



PCB ( senarai nilai komponen dan lokasi)


Bagi sesiapa yang ingin mendapatkan pakej ini daripada saya, harga dan kandungannya adalah seperti berikut :

1. PIC Board v3 = RM43/unit
- PIC board v3 (pasang n test)
- 1 unit PIC16F887
- 2 Power cable

2. Belanja POS ( untuk setiap penghantaran tanpa mengira jumlah order ) = RM6.00

Fail PIC Board v3 dalam format eagle dan lain-lain boleh di download di SINI .

NOTA:

1. Untuk cara pembelian pakej ini, sila email kepada saya ... allpicproject@gmail.com

Sekian terima kasih.

Friday, December 9, 2011

Tutorial 6.5 : Video ( Final )

Assalamualaikum semua,

Minta banyak-banyak atas kelewatan kemaskini laman blog ini atas sebab-sebab peribadi dan 'commercial project'.

Ok, seperti dijanjikan DEMO video untuk tutorial 6.x telah di sertakan seperti di bawah. Sebelum tu, label ringkas tentang kedudukan board-board dalam video tersebut ada disertakan seperti dalam gambar di bawah.


Klik untuk saiz gambar yang lebih besar


Dan nikmati Tutorial 6.x DEMO video seterusnya ...





Dan source code ( Hitech C file, Hex code, Eagle schematic dan Gambar2 projek ) boleh di download di SINI.

Terima kasih atas kunjungan semua ke blog ini. Moga semua mendapat manfaat yang terbaik dan terbanyak.

Sekian untuk tutorial 6 : PIC n LCD.

Thursday, December 1, 2011

Tutorial 6.4 : Penerangan Source Code

Assalamualaikum semua,

Kali ini saya akan membincang/menerangkan fungsi/arahan dalam source code untuk tutorial 6.x.

Untuk source code/part 'main.c', rasanya dapat difahami dengan mudah. Cuma saya ada beberapa komen untuk beberapa bahagian tertentu sahaja. Jika ada sebarang pertanyaan yang lain, sila tinggalkannya di bawah/bahagian komen atau sila komen di SHOUT BOX ( disebelah kanan blog ni.). Nak email kepada saya pun ok.

Saya cuma nak komen sedikit di main.c part 1. Sila rujuk gambar 1 di bawah:

Gambar 1 : main.c part 1

Untuk no. 1,2,3 adalah fail-fail yang kita masukkan/digabung ke dalam program main.c secara menggunakan arahan 'include'. Kebaikannya ialah kita boleh fail-fail ini ke dalam program lain tanpa perlu menulis semula dan boleh juga membuangnya dari program main.c dengan menghapus baris yang berkenaan.

Tanpa kaedah in, kita mesti menulis semula isi-isi dalam fail-fail tersebut ke dalam program main.c dan begitu juga kalau membuangnya ... mesti la kita hapuskan kesemua baris-baris dalam fail-fail tersebut di program main.c.

Untuk n0. 4, sila rujuk fail ldc.c ( ldc.c part 1) ... dan di dalam fail tersebut terdapat arahan '#define BarisAtas 0' ... ini bermaksud BarisAtas bersamaan dengan nilai 0. Arahan ' lcd_goto(BarisAtas); ' bermaksud memanggil subroutine ' void lcd_goto(unsigned char pos) ' di dalam fail ldc.c ( rujuk ldc.c part 3 ) dengan memberikan nilai ' pos ' = nilai ' BarisAtas ' = 0 . Harap dapat faham. Jika kurang faham, sila komen atau email kepada saya.

Untuk no. 5 iaitu ' lcd_puts("Suis Btn0") ' memanggil subroutine ' void lcd_puts(const char * s) ' di fail ldc.c ( rujuk ldc.c part2 ) . Di sini, alamat permulaan untuk perkataan "Suis Btn0" telah di masukkan ke dalam pointer s ( * s adalah alamat pointer s ... kalau tak faham, tak mengapa sebab ini tak menjejaskan pembelajaran kita. Jika nak tahu lebih lanjut, sila rujuk bab 'pointer' dalam mana-mana buku bahasa C ).

Satu lagi, jika jumpa subroutine bermula dengan perkataan 'void' contohnya ' void lcd_goto(unsigned char pos) ' ... ini bermaksud panggilan kepada subroutine itu untuk memproses arahan-arahan dalam subroutine tersebut sahaja. Ini termasuklah arahan ' Set_IO_AllDigital(); ' ... memanggil subroutine ' void Set_IO_AllDigital(void) ' dan melakukan arahan-arahan yang terdapat di dalamnya. Untuk perkataan ' void ' yang berada di dalam kurungan ..... AllDigital(void) , ini bermaksud tiada nilai yang di hantar kepada subroutine tersebut berlainan dengan ' void lcd_goto((unsigned char pos) ' ... yang memerlukan nilai yang untuk pembolehubah 'pos' .


Gambar 2 : ldc.c part 1

Di sini, saya akan sentuh berkenaan dengan source code 'ldc.c', macam mana nak ubah jika nak pakai Port / Pin PIC yang lain. Source code yang lain rasanya dapat di fahami dengan mudah.

Ok, untuk mengguna LCD dengan PIC, minima 6 pin diperlukan. 2 pin untuk signal iaitu RS (Register Select) dan EN (Enable) dan 4 pin lagi untuk data untuk format 4 pin data iaitu pin D4 - D7 di LCD ( LCD ada 8 pin untuk data ... D0 - D7 ). Saya tak sentuh untuk LCD yang guna format 8 pin data.

Rujuk A, arahan ' #define LCD_RS RD4 ' untuk setkan pin yang akan bersambung dengan pin RS di LCD. Jika kita gunakan pin yang lain dari RD4, maka kita perlu set pin tersebut di sini.

Rujuk B, ... pin ini untuk bersambung dengan pin EN / E ( enable ) di LCD. Jika pin lain digunakan, sila set kan nama pin tersebut di sini.

Rujuk C ... Port yang akan digunakan sebagai pin data ( 4 bit data pin ) yang akan di sambungkan kepada pin data D4 - D7 di LCD. Untuk tutorial ini, kita menggunakan pin PIC RD0 - RD3 sebagai data pin. Jadi pin PIC RDO disambung kepada D4 di LCD, pin PIC RD1 -> D5 dan seterusnya sehingga pin PIC RD3 -> D7 di LCD.

Untuk C1 n C2, telah diterangkan di atas.

Kita juga boleh gunakan 6 pin Port A, Port B atau Port C ( jika tak mahu guna Port D). Jika nak gabung pun boleh iaitu sebagai contoh 2pin signal di port B dan 4 pin data di port D. Saya biasanya menggunakan 6 pin tersebut dalam satu port yang sama supaya senang nak urus dan nak ingat ... contohnya D0-D3 untuk data 4 bit dan D4-D5 untuk 2 signal. Tambahan lain adalah 2 pin untuk power supply 5V dc untuk LCD dan ground LCD. Jika nak guna RD4 - RD7 / RA4 - RA7 / RB4 - RB7 /RC4 - RC7 ... beberapa perubahan perlu di lakukan (kod di dalam tutorial ini tak berfungsi untuk pin-pin ini).



Gambar 3, ldc.c part 2

Untuk D n E, ia terpakai jika menggunakan port yang sama untuk RS, EN, Data . Jika RS dan EN menggunakan port yang berlainan, arahan D n E mestilah dibuang.

Jika arahan RS n EN dibuang, maka :

arahan F berubah menjadi ' LCD_DATA = c >> 4; '
arahan G berubah menjadi ' LCD_DATA = c & 0x0F; '

Gambar 4, ldc.c part 4

Untuk H, kita kena set port yang diguna untuk sambung kepada LCD sebagai digital output ( dalam kes ini kita portD sebagai output dengan arahan ' TRISD = 0; ' )

Untuk I, kita perlu set LCD_RS,LCD_EN sebagai 0. (LCD_RW boleh dipadamkan/tak digunakan).

Ok, itu sahaja untuk tutorial 6.4. Jika ada sebarang persoalan/pertanyaaan, sila komen di SHOUT BOX atau emailkan di allpicproject@gmail.com .

Terima kasih semua.

NOTE: Insya Allah, saya akan uploadkan video demo dalam waktu terdekat ( bergantung kepada kelapangan masa saya ). Saya juga upload fail-fail berkenaan di posting yang sama ( source code, eagle schematic, gambar n video ).

Monday, November 28, 2011

Tutorial 6.3 : C Source Code

Assalamualaikum semua,

Berkenaan dengan source code untuk tutorial 6.x (LCD), source code tersebut di bahagikan kepada beberapa bahagian untuk memudahkan pembelajaran yang akan datang. Saya buat dalam bentuk modular ( senang nak pakai n nak buang ).

Fail-fail C tersebut:

1. main.c --- program utama / bermula di sini.
2. Config_PIC16F887.c --- setting/config untuk PIC16F887
3. lcd.c --- setting untuk LCD
4. Set_IO_AllDigital --- untuk set semua pin Analog menjadi pin Digital IO.



main.c part1 ( klik untuk saiz yang lebih besar )


main.c part2 ( klik untuk saiz yang lebih besar )


Config_PIC16F887.c ( klik untuk saiz yang lebih besar )


lcd.c part1 ( klik untuk saiz yang lebih besar )


lcd.c part2 ( klik untuk saiz yang lebih besar )


lcd.c part3 ( klik untuk saiz yang lebih besar )


lcd.c part4 ( klik untuk saiz yang lebih besar )


Set_IO_AllDigital.c ( klik untuk saiz yang lebih besar )


Sekian, terima kasih untuk kali ini.

Insya Allah, bersambung ...

Tutorial 6.2 : Schematic

Assalamualaikum semua,

Disertakan schematic untuk tutorial 6.x ( LCD ).

Dalam schematic di bawah, pin VDD PIC mesti di sambung kepada punca +ve 5V DC bekalan kuasa dan pin VSS PIC di sambung ke Gnd bekalan kuasa.

Dalam schematic itu juga, bekalan DC 5v, V1 dan V1 sebenarnya boleh digabungkan, tak perlu pakai 2 bekalan kuasa 5V 2 unit (cuma dalam schematic tu, saya masukkan dua supply 5V ( V1 n V2 ) sebab tak nak buat sambungan yang panjang berjela).


Sila klik untuk gambar yang lebih besar


Insya Allah, bersambung ...

Thursday, November 24, 2011

Tutorial 6.1 : Hardware

Assalamualaikum semua.

Board/papan litar yang akan digunakan dalam tutorial 6.x adalah seperti berikut:


1. PIC Board v3 ... klik gambar untuk saiz yang lebih besar.


2. PIC Board v3 (tanpa PIC) ... klik gambar untuk saiz yang lebih besar.




3. LED n Button Board v3 ... klik gambar untuk saiz yang lebih besar.



4. LCD board ... klik gambar untuk saiz yang lebih besar.

5. LCD Board ( pandangan depan ) ... klik gambar untuk saiz yang lebih besar.


Insya Allah, tutorial ini akan bersambung bila saya ada kelapangan ...

Saturday, November 19, 2011

Tutorial 6.0 : LCD

Assalamualaikum semua,

Tutorial seterusnya berkenaan dengan penggunaan LCD bersama PIC. Untuk tutorial ini, PIC board v3 akan digunakan disebabkan ianya lebih ringkas dan kemas.

Pada sesiapa yang menggunakan PIC board v1 / PIC board v2, tutorial ini juga boleh digunakan tanpa sebarang masalah.

Board/papan litar lain yang terlibat dalam tutorial ini adalah LED n Button Board v3 selain LCD board.

PIC board v3, LED n Button board v3 dan LCD board akan di terangkan dalam posting yang akan datang. (Insya Allah, bila ada kelapangan saya akan upload dan terangkan board versi baru ).

Sekian. Terima kasih.

Sunday, November 13, 2011

Tutorial 5.5 : Final ( Video )

Alhamdulillah, akhirnya video tu dapat juga di rakamkan.

Saya menggunakan board-board versi baru untuk memudahkan saya dalam menyediakan tutorial - tutorial yang akan datang.

Board- board versi baru, insya allah akan di ulas/diceritakan dalam posting yang akan datang.


Susunan demo untuk tutorial 5.x



Susunan demo yang bertanda.





Sekian terima kasih.

Tuesday, November 8, 2011

Tutorial 5.4 : Penerangan ( Source Code )

Assalamualaikum semua,

Pertama sekali, saya meminta berbanyak maaf atas kelewatan menyambung tutorial v5.x kali ini.

Ok saya akan terangkan fungsi souce code seperti berikut:

#include < pic.h >

Arahan ini mesti ada dan perlu berada di barisan paling atas/awal dalam setiap fail C untuk hitech c. '#include' adalah untuk memasukkan header 'pic.h' semasa proses compile di jalankan. Proses compile adalah proses untuk menukarkan bahasa C kepada bahasa mesin/hex code. Hanya bahasa mesin/hex code akan difahami oleh micro controller PIC dan PIC akan menjalankan fungsi-fungsi yang terkandung dalam hex code tadi.

fail 'pic.h' mengandungi ringkasan-ringkasan / alamat hardware di dalam PIC ( seperti alamat PORTA atau alamat PORTC.1 dan seterusnya ). Untuk kefahaman lanjut, sila buka fail 'pic.h' menggunakan MPLAB IDE atau notepad.


__CONFIG(0x2FE4);
__CONFIG(0x3FFF);


Ini adalah config untuk PIC. Sila rujuk tutorial 4.x untuk kefahaman yang lebih terprinci.


#define BUTTON1 RC1

Ini arahan untuk mentakrifkan/menamakan/aliaskan hardware PIC ( dalam kes ini adalah PORTC.1 / RC1 ) kepada nama lain iaitu 'BUTTON1'. Di dalam program ini, kita akan meng
gunakan nama BUTTON1 sebagai gantinama kepada 'RC1'.

Kelebihan menggunakan gantinama adalah kita boleh letak nama yang mempunyai maksud/menjelaskan fungsi tertentu dan juga jika kita hendak tukar pin yang lain (katakan jika tak mahu guna port RC1 dan ingin mengubahkan kepada port RC0), kita hanya perlu menukarkan arahan di atas sahaja ( kepada #define BUTTON1 RC0 ) dan isi program yang lain tidak perlu dipinda.


main(void)
{
..... apa-apa arahan/semu arahan
}

Ini adalah fungsi di mana setiap fail C akan bermula ( semua bahasa C termasuklah Hitech C, CCS C, mikro C dan sebagainya ).

Sebenarnya fungsi 'main' yang standard adalah seperti dibawah:

void main(void)
{
..... apa-apa arahan/semu arahan
}

Oleh kerana 'void' itu bermaksud secara lebih kurang adalah 'abai' maka fungsi main ini boleh juga di ringkas seperti di bawah:

main( )
{
..... apa-apa arahan/semu arahan
}


Untuk fungsi dalam bahasa C, saya akan sentuh lebih mendalam dalam tutorial-tutorial yang seterusnya ( dengan menggunakan contoh-contoh supaya senang faham ).


unsigned int i;

Untuk set pemboleh i sebagai integer tanpa sign. Bila i diset seperti ini, i boleh dimasukkan dengan nilai 0 sehingga nilai 65,535. Jika di setkan sebagai :

signed int i;

Ini bermaksud/diset i bernilai -32,768 sehingga +32,767. Sila rujuk url di bawah untuk kefahaman lebih terprinci.

http://www.ucblueash.edu/koehler/comath/13.html


ANSEL = 0;
ANSELH = 0;


ANSEL adalah ringkasan kepada Analog Select untuk byte yang rendah (lower byte) dan ANSELH adalaha Analog Select Higher Byte. Insya Allah, saya akan sentuh lebih lanjut berkenaan dengan ANSEL dan ANSELH di dalam tutorial untuk ADC ( Analog to Digital Converter ) yang akan datang berserta dengan contoh untuk kefahaman yang lebih mendalam.

Di dalam tutorial ini, kita setkan ANSEL dan ANSELH = 0 adalah untuk mematikan/disable fungsi ADC untuk pin-pin tertentu ( pin yang berkongsi fungsi analog ... contoh pin A0/AN0 .. AN0 adalah analog 0/pin analog yang pertama). Jika tidak di matikan fungsi Analog, pin-pin yang berkenaan tidak dapat berfungsi dengan normal sebagai masukan/keluaran Digital (Digital I/O).


TRISD = 0;
PORTD = 0;

TRISD = 0 .... bermaksud PortD ( RD0 - RD7 ) diset sebagai output ( TRISD = 0 = 0b00000000 = 0x00). 0b .. bermaksud binary ( iaitu nilai 0 atau 1 ), 0x ... bermaksud hex/perenambelasan ( nilai 0 - F ). Jika TRISD = 1 = 0b00000001 = 0x01 ... ini bermaksud hanya pin RD0 diset sebagai digital input manakala RD1 - RD7 diset sebagai digital output. Secara mudahnya jika 0 bermaksud diset sebagai (o)utput (digital output) dan jika 1 bermaksud diset sebagai (i)nput ( digital output ). Bila sesuatu port diset sebagai digital input, port tersebut akan menerima input samada nilai 0 ( 0 volt ) atau 1 ( 2.2V - 5v ). Sila rujuk datasheet untuk keterangan lanjut berkenaan voltan setara untuk nilai 0 dan nilai 1.

Manakala PORTD =0 bermaksud PORTD dengan nilai 0 = 0b00000000 = 0x00 ( semua pin RD0 - RD7 ... 0 volt ) ... dengan kata lain, semua LED yang bersambung kepada PORTD akan padam ( sebab 0 volt ). Jika PORTD = 1 = 0b00000001 = 0x01 ... maka LED yang disambung ke pin RD0 akan menyala manakala LED-LED yang bersambung ke RD1 - RD7 padam.

TRISB = 15;
PORTB = 0;


TRISB = 15 = 0b00001111 = 0x0F ... bermaksud pin RB4 - RB7 diset sebagai digital output dan pin RB0- RB3 di set sebagai digital input ( terima nilai 0 atau 1 ).

PORTB = 0 = 0b00000000 = 0x00 ... semua LED yang bersambung ke RB0 - RB3 padam. Pin RB4- RB7 tidak terjejas.


for(;;) {
.... arahan-arahan lain
....
}

Satu kaedah untuk loop tanpa henti selain menggunakan while(1) { ... }.


if(BUTTON1 == 1) // No. 1
{
PORTD = 0b10101010; // No. 2
for(i = 50000 ; --i ;) continue; // No. 3
PORTD = 0; // No. 4
}

Arahan ' if(BUTTON1 == 1)' rujuk no. 1, bermaksud jika Button1 = 1 maka arahan - arahan dalam { ... } semuanya akan dilaksanakan oleh microController PIC ( PIC ) dan sebaliknya.

Button1 = 1 bila butang yang bersambung dengan port RC1 ditekan. Bila butang tersebut ditekan, maka isyarat 5V akan di masukkan ke Port RC1 dan bila terdapat isyarat 5V di port tersebut, PIC akan menyatakan bahawa masukan di port RC1 adalah 1. Button1 = RC1 = 1.

Rujuk no. 2, LED yang di sambung kepada PortD ( RD0 - RD7) akan menyala berselang seli ( RD7 = 1 = LED D1 = menyala, RD7 = 0 = LED D2 = padam. RD7 = 1 = 5V (yang menyebabkan LED D1 menyala)

No 3 sebagai delay dengan cara tolak nilai 1 satu demi satu sehingga nilai = 0. Kemudian pergi ke arahan seterusnya.

No 4 setkan PortD = 0 = 0b00000000 = semua LED D1 - D8 = padam.


if(RB0 == 1)
{
PORTD = 0b00001111; // No. 1
for(i = 50000 ; --i ;) continue;
PORTD = 0;
}


No. 1 setkan portD = 0b00001111 = LED D1 - D4 menyala dan D5 - D8 padam. Yang lain adalah sama prinsip dengan yang sebelumnya.


if(RB1 == 1)
{
PORTB = 0b11110000; // No. 1
for(i = 50000 ; --i ;) continue;
PORTB = 0; // No. 2
}


No.1 ... LED di PortB.7/RB7 sehingga RB4 akan menyala sebab TRISB = 0b00001111 (hanya RB7-RB4 diset sebagai output dan selainnya sebagai input)

No.2 ... PORTB = 0 = 0b00000000 - semua LED (port RB7 - RB4) di PORTB padam. RB3-RB0 tak terjejas sebab ia diset sbg input/masukan

Sekian terima kasih atas kunjungan semua.

Saturday, October 29, 2011

Tutorial 5.3 : Penerangan ( Carakerja )

Asslamualaikum semua,

Dalam tutorial 5.x, saya akan tunjukkan 3 keadaan iaitu bila butang-butang yang masing-masing di sambungkan kepada RC1 ( PortC.1), RB0 (PortRB0) dan RB1 (PortRB.1) ditekan.

Ok, bila kita tekan RB0 , LED yang bersambung kepada portD akan menyala seperti dibawah (rujuk gambar 1):


Gambar 1 ( Klik untuk gambar lebih besar)


Bila kita tekan RB1 , LED yang bersambung kepada portB akan menyala seperti dibawah (rujuk gambar 2):

Gambar 2 ( Klik untuk gambar lebih besar)


Dan akhir sekali, bila kita tekan RC1 , LED yang bersambung kepada portD akan menyala seperti dibawah (rujuk gambar 3):


Gambar 3 ( Klik untuk gambar lebih besar)

Dalam tutorial seterusnya, kita akan lihat arahan C yang akan menghasilkan/menyalakan LED berkenaan bila butang-butang itu ditekan. Saya minta maaf terpaksa berhenti disini untuk sambung kerja lain yang sangat mustahak.

Insya Allah bersambung ...

Thursday, October 27, 2011

Tutorial 5.2 : Source Code

Assalamualaikum semua,

Disertakan fail-fail yang berkenaan yang digunakan dalam tutorial 5. Fail ini dalam format projek MPLAB IDE v8.56 atau versi yang lebih baru.

Fail-fail ( schematic, source code, paparan MPLAB IDE) untuk tutorial 5-Button boleh di download di sini .

Sekian dan terima kasih atas kunjungan ke blog ini.

Sunday, October 9, 2011

Tutorial 5.1 : Litar Elektronik

Assalamualaikum semua,

Litar elektronik untuk tutorial 5.x adalah seperti di bawah.

Clik gambar untuk saiz yang lebih besar.

Insya Allah, selepas ini adalah diterangkan setiap baris source code ( baris yang penting / yang belum di ulas/dibagitau ).

Akhir sekali saya akan membuat satu video dan akan di paparkan di sini untuk kefahaman yang lebih baik hendaknya.

Semua ini akan saya lakukan mengikut kelapangan masa saya.

Terima kasih atas sokongan dan lawatan ke blog saya. Semoga beroleh manafaat yang banyak.

Insya Allah bersambung ...

Tutorial 5.0 : Butang ( Button ) Sebagai Masukan (Input)

Assalamualaikum semua,

Minta berbanyak maaf atas sedikit kelawatan.

Di bawah adalah kod/source untuk tutorial ini.


SourceCode Part 1 ( sbb gambar besar )
Klik gambar untuk saiz yang lebih besar.


Sourcecode Part 2
Klik gambar untuk saiz yang lebih besar.



Insya Allah saya akan sambung kemudian sesuai dengan kelapangan saya (sangat sibuk sekarang nie ). Source Code dalam bentuk zip akan saya bagi kemudian.

Harap bersabar.

Terima kasih atas kunjungan.