Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • 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

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • 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

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Tampilkan postingan dengan label project. Tampilkan semua postingan
Tampilkan postingan dengan label project. Tampilkan semua postingan

Selasa, 19 Juni 2012

Membuat Game Pacman "PaKMan" sederhana dengan ATTiny2313

Setelah mendapatkan ilmu yg cukup dari beberapa sumber di internet, akhirnya kesampaian juga untuk membuat game pacman sederhana, dan kita namakan ..

LONELY PAKMAN




Kenapa Lonely ? karena dia memang kesepian, sendirian gerak-gerak di layar TV.

sebaiknya membaca dulu pembahasan dasar televisi di: part#1  part#2

Siapkan Bahan-bahan berikut ini:

1. Micro-AVR ATTiny 2313
2. Breadboard
3. Power suply 5v , atau adaptor 12v dan diregulasi 7805
4. Resistor 10K, 470
5. Tombol push button
6. Xtal 20Mhz + capasitor 22pF
7. Programer AVR
8. Pesawat TV yg nganggur ( jangan sampai bertengkar dengan sodara yg lagi nonton sinetron)

Kemudian skematik yg digunakan seperti gambar berikut :


Klik pada gambar buat memperjelas gambar




Ntar hasilnya seperti berikut ini :








Listing program dari game lonely pakman sebagai berikut :

//==========LONENLY PAKMAN=======
//    by  : ahocool@gmail.com
//   http://aisi555.blogspot.com
//=========== 2012 ===============
#define F_CPU 20000000UL   //xtal yg digunakan
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>

#define HSYNC PORTB=0; //H sinkronisasi
#define BLACK PORTB=1; // warna hitem  
//deklarasi variable 
uint8_t textnya,pakline,arah;  
static uint16_t x,y,tick;
char pakman1[12] =  // memory penyimapan data gambar pakman

   {  //kanan mangap
0b00000000,
0b01111100,
0b11001100,
0b11001000,
0b11110000,
0b11100000,
0b11000000,
0b11100000,
0b11110000,
0b11111000,
0b01111100,
0b00000000,
};


char pakman2[12] =
   {    //kanan mingkem
0b00000000,
0b01111100,
0b11001110,
0b11001110,
0b11111110,
0b11111110,
0b11111110,
0b11111110,
0b11000000,
0b11111110,
0b01111100,
0b00000000,
};


char pakman3[12] =

   {  //kiri mangap
0b00000000,
0b01111100,
0b01100110,
0b00100110,
0b00011110,
0b00001110,
0b00000110,
0b00001110,
0b00011110,
0b00111110,
0b01111100,
0b00000000,
};


char pakman4[12] =
   {   //kiri mingkem
0b00000000,
0b00111100,
0b01100110,
0b01100110,
0b01111110,
0b01111110,
0b01111110,
0b01111110,
0b00000110,
0b01111110,
0b00111100,
0b00000000,
};


char pakman5[12] =

   {   //bawah mangap
0b00000000,
0b01111100,
0b11111110,
0b11110010,
0b11110010,
0b11001110,
0b11001110,
0b11000010,
0b10000010,
0b10000010,
0b10000010,
0b00000000,
};


char pakman6[12] =
   {   //bawah mingkem
0b00000000,
0b01111100,
0b11111110,
0b11110010,
0b11110010,
0b11111110,
0b10111110,
0b10111110,
0b10111110,
0b10111110,
0b10111100,
0b00000000,
};

char pakman7[12] =

   {  //atas mangap
    0b00000000,
    0b10000010,
    0b10000110,
    0b10000110,
    0b10000110,
    0b11011110,
    0b10110010,
    0b11110010,
    0b11111110,
    0b01111100,
    0b00000000,
};


char pakman8[12] =
     { //atas mingkem
    0b00000000,
    0b10111100,
    0b10111110,
    0b10111110,
    0b10111110,
    0b10111110,
    0b11110010,
    0b11110010,
    0b11111110,
    0b01111100,
    0b00000000,
};

void timer_init(void){ 
//inisialisasi timer per rasterline 64us (PAL TV) 
TCCR1B |= (1<<WGM12);
TIMSK |= (1<<OCIE1A);
OCR1A = 1280; //64 us dengan xtal 20Mhz, untuk 16Mhz= 1024;
TCCR1B |= (1<<CS10); //full speed
}



//interupt timer untuk menampilkan gambar
ISR (TIMER1_COMPA_vect) {
static uint16_t rasterline=0; //baris
uint16_t a;
uint8_t out=0; // variabel simpan memory byte pakman

HSYNC;
        
//posisi berdasarkan nilai x,y dengan lebar 12 baris
if( rasterline > (18 + y)  && rasterline <= (30 +y) ) { 
_delay_us(4);
BLACK;
_delay_us(7);
        for(a=0;a<x;a++) asm("nop");
      // tampilkan sesuai arah dari pakman
 if(arah==0){
 if(tick<5000)out= pakman1[pakline];
 else out= pakman2[pakline];
      } 
 else if(arah==1){
 if(tick<5000)out= pakman3[pakline];
 else out= pakman4[pakline];
      }       
 if(arah==2){
 if(tick<5000)out= pakman5[pakline];
 else out= pakman6[pakline];
      }
 if(arah==3){
 if(tick<5000)out= pakman7[pakline];
 else out= pakman8[pakline];
      }
//geser bit untuk tampilkan data gambar ke pakman ke TV 
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
       out <<=1;
 PORTB= (out & 0x81) + 1;
      

      pakline++;  //tambahkan index array dari gambar pakman



// Vsync ada disini tanpa membedakan genap ganjil 
else if( rasterline >= 0 && rasterline < 5 ) {
_delay_us(27);
BLACK;
_delay_us(5);
HSYNC;
_delay_us(27);
BLACK;
} else if( (rasterline >= 5 && rasterline <= 10) ) {
_delay_us(2);
BLACK;
_delay_us(28);
HSYNC;
_delay_us(2);
BLACK;
} else if( rasterline >311-6 ) {
_delay_us(2);
BLACK;
_delay_us(28);
HSYNC;
_delay_us(2);
BLACK;
} else { 
_delay_us(3);
BLACK;
pakline=0;
  }

rasterline++;
tick++; //variabel timer untuk mangap & mingkem
    if(tick >10000) tick=0;

if( rasterline > 311 )rasterline = 0; //maksimum baris/raster
}


void tombol(void) // membaca tombol
{
if(bit_is_clear(PIND, PIND3)) 
{x--;
arah=1;
if(x<1)x=125;
_delay_ms(50);
}

else if(bit_is_clear(PIND, PIND4))
{
x++;
arah=0;
if(x>125)x=1;
_delay_ms(50);
}

else if(bit_is_clear(PIND, PIND5))
{y-=3;
arah=3;
if(y<3)y=280;
_delay_ms(50);
}

else if(bit_is_clear(PIND, PIND6))

{y+=3;
arah=2;
if(y>280)y=0;
_delay_ms(50);
}

}
int main() {  //Main Program
x=1;
y=13;
arah=0;
 DDRD &=~(1<<PD3) & ~(1<<PD4) & ~(1<<PD5) & ~(1<<PD6); //tombol
DDRB = (1<<PB7)|(1<<PB0); //PB0=1K, PB7=470 ohm

timer_init();
sei();

for( ;; )tombol();

}



SELAMAT MENCOBA 
Share:

Senin, 04 Juni 2012

BERMAIN DENGAN TV PART#2

Setelah hanya bermain dengan HSYNC ( horizontal scanline) saja pada posting sebelumnya, maka pertanyaan akan muncul gimana jika pengen menampilkan gambar ditengah layar TV.

standar TV analog PAL memiliki teknik scanning line sebanyak 625 line, dengan teknik penggabungan penembakan elektron garis ganjil dulu dilanjutkan dengan line genap. seperti gambar dibawah ini :



untuk memberikan pembeda antara awal scan genap dan ganjil , dilakukan dengan memberikan pulsa yg berbentuk 0 - 0,3v dan dengan durasi 'short' selama 2us dan 'long' yang artinya 32 us. Agak ribet memang , tp lama-lama juga bakalan ngerti. kalo dilihat secara osciloscop seperti ini :


*)keterangan : us = micro second

Jadi untuk VSYNC ganjil, aturannya seperti ini :

- Dimulai dari baris ke 623, pulsa sebanyak 6x (0v selama 2us , 0,3v selama 32us ) selajutnya dinamakan LONG SYNC
- Setelah itu penanda start vsync 5x (0v selama 32us , 2us untuk level 0,3v) selanjutnya dinamakan SHORT SYNC
- Diakhiri dengan long sync sebanyak 5x
- Tidak semua baris tampil di tabung TV, umumnya tabung kelihatan mulai baris ke 50


Sedangkan untuk VSYNC GENAP, sebagai berikut:

- Dimulai dari baris ke 311, dengan LONG SYNC 5x
- Short Sync 5x
- Diakhiri dengan LONG SYNC 4x
- Beda antara baris yg berdempetan (Ganjil & Genap) adalah 312

nah sekarang kita ingin membuat garis vertikal ....seperti gambar :




programmingnya seperti berikut :



#define F_CPU 16000000UL

#include <avr/io.h>

#include <util/delay.h>

#define SYNC  PORTB=0

#define ABU   PORTB=0b10

#define ITEM  PORTB=0b01

#define PUTIH PORTB=0b11


int line;
void hsync(void)
  //sync  
   SYNC;
   _delay_us(4);
   ITEM
   _delay_us(8); 

   if(line == 50 || line == 100 || line == 150|| line == 200 || line == 250) ITEM
   else  ABU;  
   _delay_us(50);
line++;
}

void vsync(uint8_t ganjilgenap)
{
uint8_t a,b;
if(ganjilgenap == 0) b=6;
else b=5;
for(a=0; a<b ; a++) //6x atau 5x long sync
{
SYNC;
_delay_us(2);

PORTB=1;
_delay_us(30);
}
for(a=0; a<5 ; a++) //5x short sync
{
SYNC;
_delay_us(30);

PORTB=1;
_delay_us(2);
}

if(ganjilgenap == 0) b=5;
else b=4;
for(a=0; a<b ; a++) //5x atau 4x long sync
{

SYNC;
_delay_us(2);
PORTB=1;

_delay_us(30);
}

if(ganjilgenap == 0) line=5;
else line=317;
}
int main(void)
{  
  line=622;
  //Inisialisasi port input

   DDRB =0b11;  
   while(1)
   {   
   if(line == 622) vsync(0);  //genap
   else if(line == 310) vsync(1); //ganjil

   else hsync();

   }
}

selanjutnya dengan penggabungan antara VSYNC dan HSYNC kita bisa menggambar diatas TV, tentunya dengan keterbatasan timing dari AVR, susah juga kadang menemukan timing yg pas. dengan menggunakan delay.h tidak bisa dijamin delay yg bener sebab tiap perintah /syntax dari GCC memerlukan waktu eksekusi yg memakan waktu juga . begitu pula dengan menggunakan counter interrupt, timing nya terbatas untuk interupt yg pas digunakan, sebab jika CTC 1us maka hampir semua program didominasi oleh interupt timer.

kalo yg kayak gini mau ? 



kalo mau...contact aja aku ... atau mau lanjut ke part ke 3
Share:

Sabtu, 02 Juni 2012

BERMAIN DENGAN TV ... PART#1


sebenernya sudah sejak dulu pengen maenin AVR buat bikin karakter di TV. Baru kesampean sekarang dan ubek-ubek google aku baca2 di mari: http://www.rickard.gunee.com/project.../pic/howto.php

nah...ternyata tidak segampang yg ku kira, banyak teory analog yg mesti dikuasai. Salut deh buat yg pertama ngerancang TV ..trus yg pertama bikin VIDEO GAME otaknya pasti tokcer banget .

sebelum ke skematik dan listing, kita perhatikan dulu bagaimana gambar TV (PAL) itu terbentuk. Gambarannya seperti berikut :



gambar di scan oleh electron secara bergantian per baris, ganjil dulu baru baris genap ( kelembaman mata membuat terlihat sebagai gambar)  dengan total scanline 625 untuk PAL. 






Dari sebuah raster sebesar 64us, 4 us pertama sinyal berupa 0v, 8 us kemudian ada jeda (biasanya untuk colorbust) sinyal 0,3v (black blank level). selanjutnya sisanya 58us merupakan data gambar. beruntung sekali level dari sinyal composite maksimal 1 V (warna putih), sehingga dengan pembagian resistor sederhana dapat di peroleh level hitam dan putih hanya dengan menggunakan 2 buah resistor












dan...percobaan pertama adalah membuat gambar seperti ini :



jadi dikiri bikin kotak abu2, ditengah garis item, di kanan kotak putih


Kita rangkai AVR ATTINY 2313 dengan PORT B0 disambung ke R 1K dan PORT B1 menuju resistor 470ohm , seperti gambar diatas. Ujung kedia resistor menuju ke port composite / AVin dari tv. Clock yg digunakan xtal 16MHz - 20MHz




klik untuk lebih jelas

SCRIPT :


#define F_CPU 16000000UL  //clock xtal
#include <avr/io.h>
#include <util/delay.h>

#define SYNC  PORTB=0
#define ABU   PORTB=0b10
#define ITEM  PORTB=0b01
#define PUTIH PORTB=0b11



int main(void)

{  
   //Inisialisasi port yg digunakan
   DDRB =0b11;  
   while(1)
   {   

  //sync  horiz 
   SYNC;
   _delay_us(4);

 // blanking
   ITEM;
  _delay_us(8);  

   ITEM;
   _delay_us(5);
   ABU;
  _delay_us(20);
   ITEM;
  _delay_us(1);
   PUTIH;
   _delay_us(20);
   ITEM;
  _delay_us(7);    

 }


}


Dengan merubah dikit..dikit, terutama di susunan delay dari raster kita dapat membikin gambar seperti ini :




bersambung ke part ke 2
Share:

Rabu, 08 Februari 2012

PEMANCAR TV MINI DENGAN NINTENDO/SEGA BEKAS





" ...adalah illegal untuk menyiarkan siaran tv tanpa meminta izin dari yang berwenang ..."

UPDATE juni 2016 : Cara terbaru untuk siaran langsung menggunakan wi-fi silahkan menuju kesini


Ceritanya dapet pesenan dari seorang bapak di bandung yang ingin menyiarkan acara di mesjid kampungnya ke penduduk di 1 RW ...dan akhirnya googling dan mendapatkan ide untuk membuat Pemancar TV mini menggunakan RF modulator bekas


APA ITU RF MODULATOR ?

RF Modulator adalah pengubah sinyal VIDEO composit + Audio ke dalam bentuk Radio frekuensi, biasanya digunakan pada perangkat Nintendo, sega, video player, vcd etc (jaman jadul) sehingga dapat ditayangkan pada ch TV (vhf)
Umumnya ch yg digunakan adalah 3-4 8-9 VHF

dan akhirnya diriku bergerak menuju surga elektronika "PASAR GENTENG SURABAYA" sampailah di toko loak dan mendapatkan modul RF bekas SEGA seperti ini ....


harganya cukup fantastis...dengan perjuangan yang keras , 3 buah dilepas dengan harga 25 ribu saja

dalemannya seperti ini nehhh.....


dan ternyata seluruh rangkaian RF modul yang dibahas di google mirip-mirip....
selanjutnya bereksperimen dengan menggunakan antena biasa, default frekuensi adalah 9VHF..tetapi dengan merubah lilitan (liat gambar) dengan cara merenggangkannya , player DVD ku bisa dilihat di channel 11VHF . Jika di rapatkan maka ch nya turun . Pelan -pelan dan sabar kuncinya. Trim audio (pake obeng) juga diperlukan jika audionya tidak muncul.

Kemudian aku melihat youtube ini :




dan akhirnya pergi ke pasar genteng lagi untuk membeli penguat CATV 20 db dengan harga perbijinya 50 ribu


dan untuk memudahkan ...diagramnya seperti ini :



untuk mempercantik..kita kasi casing dehh ...




aku ga berani mencoba sampe jauh-jauh..takut mengganggu tetangga kanan-kiri, tapi siaranku walau hanya dengan antena "rabbit ear" bisa menjangkau 2 blok rumah .....


SELAMAT MENCOBA ....
Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (73) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (4) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika