alexa-tracking
Kategori
Kategori
Home / FORUM / All / Hobby / Hobby & Community /
Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks
KASKUS
51
244
https://www.kaskus.co.id/thread/000000000000000002654259/hobby-elektronika-digital-microcontroller-amp-solder-menyolder-gabung-sini-yuks

Hobby Elektronika Digital, MicroController & solder Menyolder gabung sini Yuks

DIGITAL ELECTRONICS HOBBY FORUM




Spoiler for apa aja sih yang dibahas?:


Spoiler for "Hobby Microcontroller Itu Mahal ? Kreativitasmu Itu yg Mahal Gan !":




UPDATE 8/JUNI/2014

DUKUN FUSEBIT AKAN MENGHIDUPKAN IC MU YANG MATI !



Selengkapnya dibahas di sini gan !!

CLINOMETER SEDERHANA MEMANFAATKAN ADC



Selengkapnya dibahas di post berikut




Spoiler for Buka Jika Mau Paket Belajar:


Proyek2 micro yg sudah jadi
Quote:



I.N.D.E.X F.O.R.U.M

Quote:




Biar ngiler, ane kasih contoh hasil karya TS...






Spoiler for Contact TS lewat dimari yahh:



.
Diubah oleh ahocool
INTERFACING KEYBOARD ke AVR & OUTPUT ke DOT MATRIX

- LEVEL : ADVANCE
- BAHAN2 : AVR micro ( ATTINY 2313), KEYBOARD PS-2, DOTMATRIX , R 10K
- DASAR yg PERLU DIKUASAI : Basic I/O, Interupt dan menulis ke DOT MATRIX ( love hurts) silahkan baca disini


Pertama kita perlu mengetahui port keyboard PS2 itu seperti ini :



sedangkan pada input micro , umumnya menggunakan koneksi seperti ini :



dimana input clock masuk ke pin interupt, seangkan pin data masuk ke pin biasa dari AVR (bidirect). semua I/O di pull up dengan resistor 10k ke Vcc

selanjutnya kita bahas dulu format transfer data saat ada pemencetan tombol , gambarannya seperti ini :



jadi keyboard dapat mengirim data karakter ke micro, sedangkan micro mengirimkan setting keyboard. sehingga komunikasinya bidirectional


oke, selanjutnya kita perhatikan kode scan/hex dari pencetan tombol keyboard, tabelnya seperti ini :




setelah itu kita susun port ps 2 & port dot matrix dengan susunan I/O seperti ini :

Code:

//clock di interupt 0 (pin 6)
MCUCR |= (1<<ISC01) | (0<<ISC00); // falling edge int 0
GIMSK |= (1<<INT0);

//data keyboard di port PD3 (pin 7)
DDRD &= ~_BV(PD3) ;

//kolom dot matrix
DDRD |= _BV(PD0) | _BV(PD1) | _BV(PD4) | _BV(PD5) | _BV(PD6) ;

//data / baris dot matrix
DDRB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) ;

// output led buat ngecek ada pencetan keyboard di PA0 (pin 4)
DDRA |= _BV(PA0);








kemudian yg ga kalah pentingnya adalah membikin databse/lookup table untuk scan code keyboard menjadi baris data dot matrix. (harap baca dulu cara menulis di dot matrix)

Code:

const char h_A[5] PROGMEM = {0x7e, 0x11, 0x11, 0x11, 0x7e}; //A
const char h_B[5] PROGMEM = {0x7f, 0x49, 0x49, 0x49, 0x36}; //B
const char h_C[5] PROGMEM = {0x3e, 0x41, 0x41, 0x41, 0x22}; //C
const char h_D[5] PROGMEM = {0x7f, 0x41, 0x41, 0x22, 0x1c}; //D
...... dst ....




jadi, tiap ada pemencetan tombol, maka pin clock dari keyboard akan menginterupt ( falling / turun dari 1-0) AVR dengan format seperti gambar diatas, sehingga script pada interuptnya berupa

Code:

SIGNAL (SIG_INT0) //routinre interupt INT0
{

if(clk > 1 && clk <10) //clock yg bermanfaat saja yg dibaca

{
//pindahkan data dari PIN DATA keyboard ke memory
key[(clk - 2)] = ((PIND & _BV(PIND3)) >> PIND3);
//nyalakan led penanda ada data dikirim keyboard
PORTA |= _BV(PA0);

}

clk++; // tambahkan nilai variable clk tiap interrupt

if(clk == 12) //maksimum clock yg dikirim

{clk=1;
PORTA &= ~_BV(PA0); //matikan led tanda data kosong

}

}


selanjutnya kita terjemahkan data dari memory array "key" kedalam bentuk hexa yg kemudian diterjemahkan dengan database lookup

Code:

int a;
char hurufnya[5];

//rumus merubah array key ke hexa scan code
a= (128*key[7]) + (64*key[6]) + (32*key[5]) + (16*key[4]) + (8*key[3]) + (4*key[2]) + (2*key[1]) + key[0] ;


switch (a)
{
case 0x1C : strncpy_P(hurufnya,h_A,5); break;
case 0x32 : strncpy_P(hurufnya,h_B,5); break;
case 0x21 : strncpy_P(hurufnya,h_C,5); break;
case 0x23 : strncpy_P(hurufnya,h_D,5); break;
case 0x24 : strncpy_P(hurufnya,h_E,5); break;
case 0x2B : strncpy_P(hurufnya,h_F,5); break;
............dan seterusnya
default : strncpy_P(hurufnya,h_43,5);

}

// selanjutnya ditampilkan di DOTMATRIX ( tampilkan per kolom)
//kolom 1
PORTB = 0x80;
PORTD &= ~_BV(PD0);
PORTD |= _BV(PD1) | _BV(PD4) | _BV(PD5) | _BV(PD6) ;
PORTB = hurufnya[0];
_delay_ms(10);
//kolom2
PORTB = 0x80;
PORTD &= ~_BV(PD1);
PORTD |= _BV(PD0) | _BV(PD4) | _BV(PD5) | _BV(PD6) ;
PORTB = hurufnya[1];
_delay_ms(10);
dst



hasilnya kalo udah mahir, seperti ini loooo....




code full bisa didapat via PM ( kepanjangan)

SELAMAT MENCOBA
×
GDP Network
© 2019 KASKUS, PT Darta Media Indonesia. All rights reserved
Ikuti KASKUS di