"Kembali Ke Dasar Elektronika Digital ... "

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Animasi LED Dengan IC 4017

    IC 4017 adalah IC 16-pin CMOS dekade counter dari seri IC CMOS 4000. Sangat berguna jika ingin membuat animasi lampu atau LED secara sederhana seperti led berjalan, tulisan berjalan , counter/timer dan masih banyak kegunaan lainnya

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • BIKIN PCB SEDERHANA TAPI GA MURAHAN

    Bikin PCB itu ga susah kok..dengan software EAGLE CAD dan teknik sterika kamu dapat membuat PCB untuk berbagai project elektronika mu ...

Tampilkan postingan dengan label paket belajar. Tampilkan semua postingan
Tampilkan postingan dengan label paket belajar. Tampilkan semua postingan

Rabu, 14 November 2012

Solusi Bug Pemrograman di DT-HIQ AVR/51 USB versi AVRISP MKII menggunakan AVRDUDE

Setelah beberapa kali mengalami komplain yang tidak mengenakkan dari programmer jenis ini, akhirnya di website Innovative Electronics mengeluarkan patch AVRDUDE yang terbukti sangat ampuh.

DT-HiQ _AVR_ USB_ ISP..jpg (350×235)


Beberapa jenis bug yang umumnya terjadi adalah seperti berikut :

- AVR STUDIO 4  :  susahnya programming ATTINY (sering gagal ),  ATmega8515 / 16 gagal pada programming EEPROM

- AVR STUDIO 6 :  tidak terdeteksi

- AVRDUDE :  stk500v2_recv_mk2: error in USB receive


Patch AVRDUDE keluaran Innovative dapat di download di sini


Cara menggunakan AVRDUDE :

1. Install driver Jungo (melalui instalasi avrstudio 4) dan libusb sesuai petunjuk di CD. Libusb dapat didownload disini
2. Hubungkan programmer DT-HiQ AVR USB ke rangkaian target dan PC sebagaimana mestinya
3. Extract file patch AVRDUDE hasil download dimana  terdapat  2 file (avrdude.exe & avrdude.conf)
4. Jika sudah siap maka bisa diberikan perintah berikut melalui command prompt

command prompt dibuka dengan mengetik cmd pada menu start => run  atau  untuk win7 pada kotak search diatas tombol start, kemudian arahkan ke folder dimana file avrdude berada


avrdude.exe -P usb -c avrispmkII -p t2313


t2313 artinya menggunakan attiny2313, jika menggunakan ic yg lain bisa memakai m8 , m16, m8535 dan sebagainya (bisa dibuka di avrdude.conf menggunakan wordpad / text editor). Jika IC dan programmer terhubung benar maka akan tampil seperti berikut :



5. Letakkan file hex dan eep yang akan di program pada folder yang sama dengan AVRDUDE. File hex dan EEP pada AVR STUDIO 4 terletak di folder "default" pada folder tempat menyimpan project.

untuk melakukan programming FLASH digunakan perintah seperti contoh  berikut :


avrdude.exe -P usb -c avrispmkII -p m16 -U flash:w:humitemp3_4out.hex


dimana humitemp3_4out.hex merupakan file flash yang akan didownload. ilustrasi jika sukses sebagai berikut : 



Sedangkan untuk programming EEPROM seperti berikut ini :


avrdude.exe -P usb -c avrispmkII -p m16 -U eeprom:w:humitemp3_4out.eep



Ilustrasinya seperti berikut :






Mudah bukan ? SELAMAT MENCOBA


Share:

Senin, 21 Mei 2012

Catatan Penting Mengenai AVRISP MK-II Programmer


Ada yang khusus dari programer jenis AVRISP MK-2 yg terbaru, dimana instalasi drivernya langsung dari AVR STUDIO 4 versi 4.19 keatas. Jadi Instal AVR STUDIO sampai selesai dulu (sampe ada instalasi jungo usb). Setelah itu baru ditancapkan programmer ke port USB PC dan diberi tegangan supply. Jika instalasi benar, maka LED merah dari programmer akan menyala jika di hubungkan ke PC


(klik biar tambah jelas)


“GUNAKAN CLOCK PROGRAMMING MODE dan TARGET SETING = 6.478 KHz”


Setelah beberapa kali terjadi kesalahan, maka didapatkan kesimpulan bahwa setting dari  programming mode harus kecil saja.



(klik biar tambah jelas)

AVR STUDIO versi 4.19 keatas telah memiliki compiler GCC yg terintegrasi (AVR TOOLCHAIN), tetapi sebaiknya tetap menggunakan  WIN AVR , dengan melakukan perubahan di :

 PROJECT ==> CONFIGURATION OPTIONS ==> CUSTOMS OPTIONS 

dan lakukan seting folder AVR-GCC dan Make seperti gambar diatas.


SELAMAT MENCOBA

Share:

Rabu, 28 September 2011

Text to Bit Converter untuk merancang karakter dot matrix


Jika mengalami kebingungan untuk mendesain karakter dot matrix, saya kasi tools yg mungkin bermaanfaat untuk merubah karakter ke bit.





Mudah-mudahan membantu praktek belajar menulis di dot matrix yang tersedia di paket belajar mikrokontroler
Share:

Minggu, 25 September 2011

Langkah Awal Instalasi DT-HIQ USB AVR ke PC

"Gimana nehh....kok ga detect apa-apa pas dicolokin ? "

SMS seperti ini sering meluncur dari pembeli paket belajar microcontroller dasar sesaat setelah paketnya datang. Kesalah-pahaman seperti ini muncul karena alat tidak mengambil power supply dari port USB melainkan mengambil tegangan dari rangkaian target atau bisa juga hanya menancapkan baterai/tegangan 3 - 5 v ke header pin 2 (+) dan pin 4 (-).




Jika USB-ISP mendapatkan tegangan dari rangkaian atau dari baterai, maka PC akan mendetect hardware baru



Pilih “Locate and Instal driver software” dan arahkan instalasi driver ke DVD installer yg didapat di paketan programmer USB-ISP





Ikuti langkah-langkah sampai USB-ISP terdeteksi oleh PC dan mendapatkan COM PORT tertentu
Dikarenakan software AVR STUDIO hanya mendeteksi port COM terbatas (sampai COM9) maka perlu dilakukan perubahan COM PORT secara manual pada control panel è device manager seperti gambar berikut:


(klik untuk memperbesar)

Klik kanan pada USB ISP Device, kemudian pilih properties, Port setting, Advance dan kemudian pilih com port antara 4-9 ( 1-3 biasanya digunakan oleh PC/Laptop). Jika terdapat keterangan (IN-USE) tidak menjadi masalah asal perangkat yg memiliki com port yg sama sedang tidak terpasang.
Share:

Jumat, 05 Agustus 2011

Bermain Dengan Dot Matrix "LoveHurt"


=== REMAKE 2020 BISA DIBACA DISINI ====





  =======================================================




Siapkan bahan-bahan seperti berikut:





Attiny 2313
Led matrix 7x5
R 10K
Diode 4148
PCB lobang
Header 2x5 buat ISP programmer (optional - Bisa diprogram di Breadboard)
Socket 20 untuk ATtiny, dan soket 14 ( dibelah dua ) buat tempat Led matrix

rangkaiannya seperti ini :




Kemudian komponen dirangkai diatas PCB lobang, ato bisa juga memakai bahan lain( disesuaikan dengan tempat yg mau di pake, misale kotak hadiah , papan tripleks dan lain sebagainya)




letakkan LED MATRIX sesuai dengan SOCKET IC yg dibelah tadi



karena ga ada baterai ( punya tempatnya doang) jadi pake adaptor 3 Volt aja




Script code dalam Bahasa C /WinAvr seperti berikut:


#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h> 
#include <string.h>
#include <avr/eeprom.h>

//Progmem simpannya di FLASH memory

const char love1[] PROGMEM =
{
0b0011110,
0b0100001,
0b1000010,
0b0100001,
0b0011110

};

const char love2[] PROGMEM =
{
0b0001100,
0b0010010,
0b0100100,
0b0010010,
0b0001100

};

const char L[] PROGMEM ={0x7f, 0x7f, 0x40, 0x40, 0x20}; 
const char O[] PROGMEM ={0x3e, 0x7f, 0x41, 0x41, 0x3e};
const char V[] PROGMEM ={0x3f, 0x7e, 0x40, 0x20, 0x1f};
const char E[] PROGMEM ={0x7f, 0x7f, 0x49, 0x49, 0x41};
const char H[] PROGMEM ={0x7f, 0x7f, 0x08, 0x08, 0x7f};
const char U[] PROGMEM ={0x3f, 0x7f, 0x40, 0x40, 0x3f};
const char R[] PROGMEM ={0x7f, 0x7f, 0x11, 0x29, 0x46};
const char T[] PROGMEM ={0x03, 0x03, 0x7f, 0x03, 0x02};

const char creature[]={0x4e, 0x31, 0x35, 0x31, 0x4e}; //simpan di memory/RAM aja

uint8_t EEMEM tengkorak[5]= {0x1e, 0x75, 0x61, 0x75, 0x1e}; //simpan di EEPROM

uint8_t EEMEM pacman[5]= {0x26, 0x67, 0x67, 0x7f, 0x3e}; //simpan di EEPROM


char dotnya[5],scrolnya[7];



void tulis(uint8_t lama)
{
  uint8_t a,b;

for(a=0 ; a<lama ; a++)
{
 for(b=0 ; b<5 ; b++)   
  
{

PORTB = ~(1<<b) ;
PORTD = dotnya[b];
            _delay_ms(2);

     
}

}



}


void geser(uint8_t lama)
{
  uint8_t a,b;

 for(a=0 ; a<11 ; a++)   
  
{

  if( a<6) 
   { 
 for(b=0 ; b<(5-a) ; b++)  dotnya[b]=0x80;
              for(b=(5-a); b<5 ;b++) dotnya[b]=scrolnya[b-5+a];
 
 tulis(10);
             
             }
  else if (a==6) tulis(lama);

  else 
             {  for(b=0 ; b<11-a ; b++) dotnya[b]=scrolnya[a-5+b];
   for(b=(11-a); b<11 ;b++) dotnya[b]=0x80;  
 
                tulis(10);
              }

          }
 
   
                
     

 
}

void naik (uint8_t lama)

{
{  uint8_t q,step=0;
  
  
  while(step!=16)
   {
if( step <8)
  {   
for(q=0 ; q < 5 ; q++) dotnya[q] = scrolnya[q] << (7 - step) ; 

           tulis(10);
        } 
   
    else if (step == 8)
  {    
        tulis(lama); 

       }      
else 
  {   
         for(q=0 ; q < 5 ; q++)  dotnya[q] = scrolnya[q] >> (step - 7) ;  
          
  tulis(10);

     step++; 

}    

}




}


int main(void)
{
DDRD = 0b1111111; // untuk baris
DDRB = 0b11111;  // untuk kolom

PORTD =0; // Set all pins low
PORTB =0b11111; //matikan layar
    
    


while(1)
{
// yang ini nulis langsung 
  
     strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);
strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);
     strncpy_P(dotnya,love2,5);
     tulis(20);
     strncpy_P(dotnya,love1,5);
     tulis(40);     

//yang ini pake function geser 

strncpy_P(scrolnya,L,5);
     geser(50);
strncpy_P(scrolnya,O,5);
     geser(50);
strncpy_P(scrolnya,V,5);
     geser(50);
strncpy_P(scrolnya,E,5);
     geser(50);
strncpy_P(scrolnya,H,5);
     geser(50);
strncpy_P(scrolnya,U,5);
     geser(50);
strncpy_P(scrolnya,R,5);
     geser(50);
strncpy_P(scrolnya,T,5);
     geser(50);

//geser ambil dari RAM

strncpy(scrolnya,creature,5);  //tanpa _P karena ambil di RAM
     naik(50);

//ambil dari eeprom ..mengirit..

     eeprom_read_block((void*)&scrolnya,(const void*)&tengkorak, 5); 
naik(50);

     eeprom_read_block((void*)&scrolnya,(const void*)&pacman, 5); 
geser(50);

}

return 0;
}


Script code diatas dibuat dalam mode FLASH, RAM, dan EEPROM, jadi ketika download program ke IC harus memprogram FLASH dulu kemudian dilanjutkan dengan EEPROM.
FLASH extensinya .hex sedangkan isi EEPROM extensinya .eep




hasil akhirnya seperti di video berikut :





SELAMAT MENCOBA
Share:

Selasa, 02 Agustus 2011

Jam Sederhana Dengan Attiny 2313

Kali ini kita akan menggunakan 4 buah 7 segment untuk membuat jam sederhana


"wahhh..kalo banyak 7 segmentnya, ngabisin banyak port dong ?"



Jangan khawatir, kita pake teknik " SCANNING", artinya kita hidupin segment satu persatu, tiap segment diparalel saja...tp kita hidupin dengan memberikan switch/saklar ke common port 7segment yg dikontrol oleh port micro ..dan scanningnya cepetttt...sehingga mata kita melihatnya seperti nyala biasa aja.

jadi untuk bikin 7-segment 4 buah, diperlukan 7 port display(diparalel) + 4 port control

rangkaiannya seperti berikut :




klik untuk memperbesar gambar

Biasanya untuk display yg agak besar, kita perlu transistor untuk mengatur scanning, tp karena contoh kali ini memakai segment yg kecil maka tidak memerlukan kontrol memakai transistor ( coba pake transistor dijamin nyalanya redup !!)


Prinsip jam kali ini menggunakan prinsip DELAY, jadi tidak terlalu akurat.
Sebenernya mau seh membagi ilmu untuk jam yg super akurat, tapi ntar aja yahh..soalnya memerlukan pengetahuan mengenai "Timer/Counter" dari microcontroller

source code nya sebagai berikut :

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int jam=0, min=0, detik=0; //variable global untuk menyimpan data2 waktu

void segmen (int angka)

{

switch (angka)
{

case 0 : { PORTB =0b1000000; break ; }
case 1 : { PORTB =0b1111001; break ; }
case 2 : { PORTB =0b0100100; break ; }
case 3 : { PORTB =0b0110000; break ; }
case 4 : { PORTB =0b0011001; break ; }
case 5 : { PORTB =0b0010010; break ; }
case 6 : { PORTB =0b0000010; break ; }
case 7 : { PORTB =0b1111000; break ; }
case 8 : { PORTB =0b0000000; break ; }
case 9 : { PORTB =0b0010000; break ; }
case 10 : { PORTB =0b1111111; break ; } //blank biar ga berbayang
}


}


void clock (void) //fungsi penambah waktu

{

detik ++; //jika fungsi dipanggil maka var detik ditambah

if ( detik == 60) // tambahkan menit jika 60 detik
{ detik=0; //untuk kembali ke 0
min++;
}

if ( min == 60) // tambahkan jam jika 60 menit
{ min = 0; //untuk kembali ke 0
jam++ ;
}

if (jam == 24) jam=0; //untuk kembali ke 0


}



int main(void)

{

int counter=0; //variabel delay
int digit; //variabel digit yang ditampilkan


// Port untuk display 7 segment
DDRB |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
//port untuk scanning ( PD0-4) dan dot ":" (PD6)
DDRD |= (1<<PD0)|(1<<PD1)|(1<<PD2)|(1<<PD3) |(1<<PD6);
//tombol untuk nambah jam/menit
DDRD &= ~(1<<PD4) & ~(1<<PD5) ;

PORTD = (1<<PD6) ; // blink untuk ":"


while(1)

{



counter++ ; //bikin delay nambah terusss

// sesuaikan nilai max counter dengan detik yg pas, tentunya tidak akurat
if(counter == 30) { counter =0 ; clock(); }

// nilai 1/2 dari counter untuk blink ":"
if(counter == 15) PORTD ^=(1<<PD6) ;

else{

segmen(10); // kasi display "mati' agar tidak berbayang

//digit pertama

digit = jam/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 2

segmen(10);
digit = jam%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 3

segmen(10);
digit = min/10;
PORTD |= (1<<PD2); // 7 segment no3 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD0) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 4

segmen(10);
digit = min%10;
PORTD |= (1<<PD3); // 7 segment no4 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD0) ;
segmen(digit);
_delay_ms(5);



}

if (bit_is_set(PIND, PIND4)) //tombol nambah jam
{
jam++;
if(jam==24) jam =0;
_delay_ms(100);

}

if (bit_is_set(PIND, PIND5)) //tombol nambah menit
{
min++;
if(min==60) min=0;
_delay_ms(100);

}



}

return 0;

}



jika ingin mengetest/kalibrasi delay detik, ganti salah satu digit untuk menampilkan detik

//digit pertama

digit = detik/10;
PORTD |= (1<<PD0); // 7 segment no1 hidup..yg laen mati
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

//digit ke 2

segmen(10);
digit = detik%10;
PORTD |= (1<<PD1); // 7 segment no2 hidup..yg laen mati
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);




Bagaimana dengan jam akurat ? disini nih kuncinya ...menggunakan xtal 4Mhz

/* ===================
GUNAKAN XTAL 4MHZ dan 2 buah capacitor 22pf
dan sambungkan seperti gambar di petunjuk awal
di bagian menggunakan xtal dan ubah dusebit

rangkaian tetap sama seperti jam_sederhana
hanya tambahan xtal pada kaki 4 dan 5 serta 
masing kaki xtal dihubungkan ke GND oleh
capacitor 22pf

*/

#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

int jam=0, min=0, detik=0;

void segmen (int angka)

{

  switch (angka)        
          {

case 0 :  { PORTB =0b1000000; break ; }
        case 1 :  { PORTB =0b1111001; break ; }
        case 2 :  { PORTB =0b0100100; break ; }
        case 3 :  { PORTB =0b0110000; break ; }
        case 4 :  { PORTB =0b0011001; break ; }
        case 5 :  { PORTB =0b0010010; break ; }
        case 6 :  { PORTB =0b0000010; break ; }
        case 7 :  { PORTB =0b1111000; break ; }
        case 8 :  { PORTB =0b0000000; break ; }
        case 9 :  { PORTB =0b0010000; break ; }
        case 10 : { PORTB =0b1111111; break ; }  //blank biar ga berbayang
 }


}


ISR(TIMER1_COMPA_vect) 




  detik ++;

  if ( detik == 60)  
     {  detik=0;
   min++;
}  

  if ( min == 60)
      { min = 0;
   jam++ ;   
       }
  
  if (jam == 24) jam=0;
          

}



int main(void)

{

int digit;


   TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
   TIMSK |= (1 << OCIE1A); // Enable CTC interrupt 
   OCR1A  = 62499; //compare the CTC A 
   TCCR1B |= (1 << CS11)|(1 << CS10); // Start timer at Fcpu/64



DDRB  |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5)|(1<<PB6);
DDRD  |= (1<<PD0)|(1<<PD1)|(1<<PD2)|(1<<PD3) |(1<<PD6);

DDRD  &= ~(1<<PD4) & ~(1<<PD5)  ;


sei();


while(1)

{




if(TCNT1 < 31250) PORTD |=(1<<PD6) ; 
else PORTD &=~(1<<PD6) ; 


segmen(10);
digit = jam/10;
PORTD |= (1<<PD0);
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = jam%10;
PORTD |= (1<<PD1);
PORTD &= ~(1<<PD0) & ~(1<<PD2) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = min/10;
PORTD |= (1<<PD2);
PORTD &= ~(1<<PD1) & ~(1<<PD0) & ~(1<<PD3) ;
segmen(digit);
_delay_ms(5);

segmen(10);
digit = min%10;
PORTD |= (1<<PD3);
PORTD &= ~(1<<PD1) & ~(1<<PD2) & ~(1<<PD0) ;
segmen(digit);
_delay_ms(5);




if (bit_is_set(PIND, PIND4))
   {
     jam++;
if(jam==24) jam =0;
     _delay_ms(100);

   }

if (bit_is_set(PIND, PIND5))
   {
     min++;
if(min==60) min=0;
 _delay_ms(100);

   }



}

return 0;

}











hasilnya dapat dilihat seperti berikut :



Share:

Senin, 01 Agustus 2011

Perkenalan AVR STUDIO

Untuk melakukan programming ke Chip AVR diperlukan software developer dan juga software downloader. Sedangkan untuk Hardware downloader dibahas di posting sebelumnya. Kali ini kita gunakan software komplit buatan atmel (si empunya avr) plus WINAVR untuk coding dalam bahasa C.

Asumsikan bahwa hardware programmer sudah terpasang dan terinstall driver nya dengan benar. Pada contoh dibawah kita gunakan programmer berbasis STK500 dan Chip yg dipakai ATTiny2313.

Buka AVR studio , pastikan WINAVR sudah terinstall sehingga bisa menggunakan bahasa GCC. Pilih NEW PROJECT sehingga muncul halaman pada gambar dan pilih juga folder yang digunakan, sebab semua file akan ditempatkan di folder tersebut



pilih jenis simulator dan IC yang digunakan
standar yg digunakan adalah AVR SIMULATOR dan sesuai IC yang digunakan yaitu ATTINY2313





untuk mengecek apakah programmer & hardwarenya sudah siap digunakan, pastikan menggunakan com port yg sesuai dengan com port programmer. Kemudian lakukan langkah berikut ini:

Set frekuensi programmer ke frekuensi yang 1/4 lebih rendah dari frek oscillator dari avr.
Dari pabriknya, AVR ( kali ini diambil contoh attiny2313) secara default menggunakan internal oscilator 8 MHZ dan clocknya di bagi 8 (clock div /8) sehingga CPU bekerja di 1MHZ
sehingga set programmer pada setting yg 1/4 lebih kecil yaitu 57.6khz



lakukan "READ SIGNATURE" untuk mengecek koneksi programmer & ATtiny2313

Jika hasil compile script di developer window anda anda sukses, maka lakukan download file HEX ke chip AVR sesuai gambar berikut :

file hex ada di : /folderanda/default/namaproject.hex




Dari pabriknya AVR memiliki setting clock internal sebesar 1 Mhz, jadi jika menggunakan clock external seperti xtal oscilator perlu dilakukan setting fusebit seperti contoh pada gambar berikut:



Mudah bukan ?
Share:

BASIC OUTPUT & INPUT dengan ATTINY 2313

Siapkan bahan2 sesuai skematik berikut ini :



dan jangan lupa programmer AVR nya ...

PROJECT 1 LED BLINK

#define F_CPU 1000000UL // frekuensi clock internal
#include <avr/io.h> // definisi standar io port
#include <util/delay.h> // definisi include untuk delay


int main(void)

{



DDRB=0b1 ; // Inisialisasi bahwa port B0 adalah output , jika pake port B5 ya inisialisai jadi DDRB=0b100000;



while(1)

{

PORTB=0b1; //port B0 = 1 atau nyala

_delay_ms(1000); //delay

PORTB=0b0; //port B0 = 0 atau mati

_delay_ms(1000); //delay

}

return 0;




PROJECT 2 LED BLINK

Gunakan 2 LED di port B#0 dan B#5
Kita akan memperkenalkan operasi bit untuk inisialisasi rangkap

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>


int main(void)

{



DDRB |= (1<<PB5)|(1<<PB0) ; // inisialisai menggunakan operasi bit

PORTB |= (1<<PB5) ; // operasi bit PORT B#5 = 1
PORTB &= ~(1<<PB0) ; //operasi bit PORT B#0 =0

while(1)

{

PORTB ^=(1<<PB5) ; // operasi bit toggle atau NEGASI/KEBALIKAN dari posisi bit sebelumnya
PORTB ^=(1<<PB0) ;

_delay_ms(1000);



}

return 0;

}




PROJECT - MEMBACA TOMBOL

kali ini kita akan membaca tombol dan kita gunakan untuk mengatur nyala matinya LED
kita memanfaatkan syntax " if (bit_is_set(PIN#, PIN##)) "

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

int main(void)

{



DDRB |= (1<<PB5)|(1<<PB0) ; //inisialisasi port B#5 & B#0 sebagai output
DDRB &= ~(1<<PB1) & ~(1<<PB2) ; //inisialisasi port B#1 & B#2 sebagai input

PORTB |= (1<<PB5) | (1<<PB0); //kita SET LED NYALA semuanya

while(1)

{


if (bit_is_set(PINB, PINB1)) // membaca jika port input B#1 di set atau HIGH / 1 ( posisi awal di ground /LOW )
{
PORTB ^=(1<<PB5) ; //TOGGLE LED di PORT B#1
_delay_ms(500);

}

if (bit_is_set(PINB, PINB2)) // membaca jika port input B#2 di set atau HIGH / 1 ( posisi awal di ground /LOW )
{
PORTB ^=(1<<PB0) ; //TOGGLE LED di PORT B#2
_delay_ms(500);

}
}

return 0;

}



Share:

Sabtu, 23 Juli 2011

DISPLAY 7 SEGMEN + DADU DIGITAL dengan IC 4026

Siapkan Bahan-Bahan seperti berikut :

1. IC 555
2. IC 4026
3. Resistor 10k ohm (1buah), 100Kohm (1 buah) atau diganti dengan Potensiometer 100k ohm, 220 ohm (7 buah bila perlu)
4. Kapasitor 10 uF (1 buah)
5. Tombol tekan / push button
6. 7 Segment COMMON CATHODE (jangan salah beli !!)
7. Baterai 4.5V
8. Kabel Jumper secukupnya

Skematik :

klik untuk lebih jelas
*)Keterangan : perhatikan kaki IC yg tidak urut, sesuaikan nomer kaki pada skematik dengan kaki pin di IC sebenarnya


Langkah Merakit ke Breadboard :

1. Setelah paham merangkai percobaan 555 maka percobaan kali ini akan mudah saja tinggal mengikuti gambar skematik yang ditampilkan sebelumnya, dan hasil di breadboard seperti ini :




2. Pushbutton memiliki 4 kaki dimana ada 2 buah pasang kaki yg tersambung.
3. Jika tegangan baterai melebihi 6V, maka sebelum masuk ke 7 segmen diperlukan resistor 220 ohm atau lebih. Jika memakai 4.5 V resistor bisa tidak dipakai.
4. Putar-putar potensiometer untuk mendapatkan kecepatan penambahan digit yang diinginkan.
5. Jika kecepatan perubahan digit sangat cepat, maka rangkaian ini dapat digunakan sebagai “DADU ELEKTRONIK”. Jadi ketika tombol ditekan maka angka akan berhenti pada digit angka yang tidak kita duga sebelumnya.

" wahhh..dadu kan angkanya 1 sampai 6 ...?



Tenang ...kita bikin logika yang akan menghilangkan angka "0" dan akan mereset system ketika counter sudah melebihi 6. Skematiknya seperti berikut :


klik untuk lebih jelas


Skematik diatas memanfaatkan pin DEI (display enable input) yang akan mengkaktifkan 7 segmen ketika mendapatkan V+ dan saat mendapatkan logika 0/ground, maka 7 segmen akan mati. Transistor 2N3904 (NPN) dimanfaatkan sebagai inverter logika dari output 0 dari counter 4017.

Untuk mereset ketika counter mencapai 6 maka dimanfaatkan output 7 dari 4017 yang akan mereset semua system saat output 7 ini aktif.


SELAMAT MENCOBA
Share:

Praktek: LED BERJALAN dengan IC 4017

Bahan-Bahan :
1. IC 555
2. IC 4017
3. Resistor 10k ohm (1buah), 100Kohm (1 buah) atau diganti dengan Potensiometer 100k ohm, 220 ohm (10 buah)
4. Kapasitor 10 uF (1 buah)
5. 10 buah LED
6. Baterai 4.5V
7. Kabel Jumper secukupnya

Skematik :

Keterangan : perhatikan kaki IC yg tidak urut, sesuaikan nomer kaki pada skematik dengan kaki pin di IC sebenarnya
Langkah Merakit ke Breadboard :
1. Setelah paham merangkai percobaan 555 maka percobaan kali ini akan mudah saja tinggal mengikuti gambar skematik yang ditampilkan sebelumnya, dan hasil di breadboard seperti ini :


Catatan untuk IC 4017 adalah kaki 8 tersambung ke powerline kutub(-) sedangkan kaki 16 terhubung ke kutub (+)
2. Putar-putar potensiometer untuk merubah kecepatan geser dari LED.
3. Animasi dari LED dapat diatur sedemikian rupa sehingga membentuk gerakan yang diinginkan seperti contoh dengan meletakkan susunan LED 1-10-2-9-3-8-4-7-5-6 maka akan didapatkan efek “cyclops” atau maju mundur.
4. IC 555 & 4017 bisa diberikan input sampai 12V, sehingga dapat menghidupkan LED yang dipasang seri sebayak 5 buah. Cobalah berkreasi dengan menambah LED di tiap-tiap kaki output dan coba kombinasikan dengan kombinasi LED warna-warni.
5. Jika menggunakan LED yang lebih banyak, maka bisa memnggunakan transistor yang umum seperti BD139 atau MJ31, seperti pada gambar. Atur tegangan input sampai LED menyala terang. Pada dasarnya jika LED dipasang seri maka tegangan input yg dibutuhkan mengikuti rumus
Vin= Vforward * nled
Pada umumnya LED memiliki V forward 2.4 V, jadi jika memakai 5 LED dibutuhkan sekitar 12 Volt. Jika memakai lebih 5 LED (semisal 20 LED) maka LED disisun seri 5 buah dan kemudian diparalel dengan 3 rangkaian seri lainnya. Karena arus dari 4017 cukup kecil, maka dibutuhkan transistor untuk mengalirkan arus yang lebih besar.

Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

HP: 081331339072
Mail : ahocool@gmail.com

Site View

Categories

555 (6) 7 segmen (3) adc (4) amplifier (2) analog (10) android (11) antares (3) arduino (14) attiny (1) attiny2313 (17) blog (1) bluetooth (1) cmos (2) crypto (2) dasar (35) display (3) esp8266 (3) gcc (1) iklan (1) infrared (2) Input Output (3) iot (16) jam (6) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (12) komputer (3) komunikasi (1) kontrol (4) lain-lain (8) lcd (2) led (9) led matrix (6) line tracer (1) lm35 (1) memory (1) metal detector (4) microcontroller (55) mikrokontroller (7) mikrotik (5) ninmedia (2) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (38) pcb (2) praktek (2) project (33) proyek (1) python (1) radio (3) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (1) sharing (3) signage (1) sinyal (1) sms (6) software (18) tachometer (2) telepon (7) televisi (72) television (5) transistor (1) troubleshoot (3) tulisan (59) tutorial (78) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika