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
ANOTHER ATTINY CLOCK - SIMPLEST ONE


Bagi2 ilmu dulu gan....
dapet proyekan bikin JAM 6 DIGIT pake 7 segment
dipilihlah Micro AVR attiny 2313
dikarenakan diriku sudah menguasai ilmu counter/timer, jadi kita manfaatkan aja XTAL yg perhitungannya Bulat , saya pilih 3.7268 MHZ
jadi hanya memakai komponen yg lumayan sedikit

jangan lupa mengaktifkan SUT_CKSEL yg sesuai sehingga benar2 menggunakan oscillator Xtal external

rangkaiannya dimari gan ...

Spoiler for rangkaian jam 6 digit attiny2313:



sedangkan scriptingnya kita bahas satu2 aja, biar agan belajar juga


I. Inisialisasi Header

Code:


#define F_CPU 3276800L //clock external
#include <avr/io.h>
#include <util/delay.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <string.h>

uint8_t jam,menit,detik,bulan,tanggal,tahun,clock,menu,mode,blink;
char bul_max[12]={31,28,31,30,31,30,31,31,30,31,30,31} ; //max hari 1 bulan




II. Inisialisasi Counter/Timer

Code:


TCCR1B |= (1 << WGM12); // Configure timer 1 for CTC mode
TIMSK |= (1 << OCIE1A); // Enable CTC interrupt
OCR1A = 3199; //compare the CTC A for 1 sec
TCCR1B |= (1 << CS10) | (1 << CS12); // Start timer at prescaler Fcpu/1024



III. Inisialisasi PORT & Interupt

Code:


// inisialisasi port output
DDRD |= _BV(PD0) | _BV(PD1) | _BV(PD4) | _BV(PD5) | _BV(PD6) ;
DDRB |= _BV(PB0) | _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4) | _BV(PB5) | _BV(PB6) | _BV(PB7) ;
\t
//inisialisasi interupt
MCUCR |= (1<<ISC01) | (0<<ISC00) |(1<<ISC11) | (0<<ISC10); //fall edge

GIMSK |= (1<<INT0) |(1<<INT1); // tombol int 0 & 1



IV. Fungsi tampilan digit

Code:


//tiap segment diaktifkan dengan memberi sinyal 0/LOW sebab 7 segmen yg dipake common + / anoda

void segmen(uint8_t digit)

{
switch (digit)
{

\t\tcase 0 :
\t\t {

\t\t\tPORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4)
\t\t\t & ~_BV(PB5) & ~_BV(PB6);

PORTB |= _BV(PB7);
\t\t\t
\t\t\tbreak;
}
\t\tcase 1 :
\t\t {
\t\t
\t\t\tPORTB &= ~_BV(PB2) & ~_BV(PB3);

PORTB |= _BV(PB1)| _BV(PB4)| _BV(PB5)| _BV(PB6)| _BV(PB7);
\t\t\t
\t\t\tbreak;
}
\t\tcase 2 :
\t\t {
\t\t\tPORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB7) & ~_BV(PB5) & ~_BV(PB4);

PORTB |= _BV(PB3)| _BV(PB6) ;
\t\t\t
\t\t break;
}\t\t
\t\tcase 3 :
\t\t {

\t\t\tPORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB7);

PORTB |= _BV(PB5)| _BV(PB6) ;
\t\t\t\t\t
\t\t\tbreak;
}
\t\tcase 4 :
\t\t {
\t\t
\t\t\tPORTB &= ~_BV(PB6) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB7) ;

PORTB |= _BV(PB4)| _BV(PB5) | _BV(PB1);
\t\t\t
\t\t\tbreak;
}
\t\tcase 5 :
\t\t {

\t\t\tPORTB &= ~_BV(PB1) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB7) & ~_BV(PB6);

PORTB |= _BV(PB2) | _BV(PB5);
\t\t\t
\t\t\tbreak;
}
\t\tcase 6 :
\t\t {

\t\t\tPORTB &= ~_BV(PB1) & ~_BV(PB3) & ~_BV(PB4) & ~_BV(PB7) & ~_BV(PB6) & ~_BV(PB5);

PORTB |= _BV(PB2) ;
\t\t\t
\t\t break;
}
\t\tcase 7 :
\t\t {

\t\t\tPORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3);

PORTB |= _BV(PB4)| _BV(PB5)| _BV(PB6)| _BV(PB7);
\t\t\t
\t\t break;
}\t\t
\t\tcase 8 :
\t\t {
\t\t\tPORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4)
\t\t\t & ~_BV(PB5) & ~_BV(PB6) & ~_BV(PB7);

\t\t break;
}
\t\tcase 9 :
\t\t {

\t\t\tPORTB &= ~_BV(PB1) & ~_BV(PB2) & ~_BV(PB3) & ~_BV(PB4)
\t\t\t & ~_BV(PB6) & ~_BV(PB7);

\t\t\tPORTB |= _BV(PB5);

\t\t break;
}
\t\tcase 10 :
\t\t {
\t\t PORTB |= _BV(PB1) | _BV(PB2) | _BV(PB3) | _BV(PB4)|
\t\t\t _BV(PB5) | _BV(PB6) | _BV(PB7) ;

\t\t break;
}
}

}



V. Fungsi Scanning 7 Segmen

Code:

// 7 segment common anoda, jadi aktif ketika mendapatkan 1/high
void posisi(uint8_t pos)

{
switch (pos)
\t {
\t \tcase 0 :
\t\t {

PORTD &= ~_BV(PD0) & ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD5) & ~_BV(PD6) ;
\t\t\t
\t\t\tPORTB &= ~_BV(PB0);
\t\t\t \t\t\t
\t\t\tbreak;
}

\t \tcase 1 :
\t\t {

PORTD |= _BV(PD0);

PORTD &= ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD5) & ~_BV(PD6) ;
\t\t\t
\t\t\tPORTB &= ~_BV(PB0);
\t\t\t \t\t\t
\t\t\tbreak;
}

\t \tcase 2 :
\t\t {

PORTD |= _BV(PD1);

PORTD &= ~_BV(PD0) & ~_BV(PD6) & ~_BV(PD4) & ~_BV(PD5) ;
\t\t\t
\t\t\tPORTB &= ~_BV(PB0);
\t\t\t \t\t\t
\t\t\tbreak;
}

\t \tcase 3 :
\t\t {

PORTD |= _BV(PD4);

PORTD &= ~_BV(PD1) & ~_BV(PD0) & ~_BV(PD5) & ~_BV(PD6) ;
\t\t\t
\t\t\tPORTB &= ~_BV(PB0);
\t\t\t \t\t\t
\t\t\tbreak;
}


\t \tcase 4 :
\t\t {

PORTD |= _BV(PD5);

PORTD &= ~_BV(PD0) & ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD6) ;
\t\t\t
\t\t\tPORTB &= ~_BV(PB0);
\t\t\t \t\t\t
\t\t\tbreak;
}

\t \tcase 5 :
\t\t {

PORTD |= _BV(PD6);

PORTD &= ~_BV(PD0) & ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD5) ;
\t\t\t
\t\t\tPORTB &= ~_BV(PB0);
\t\t\t \t\t\t
\t\t\tbreak;
}


\t \tcase 6 :
\t\t {

PORTB |= _BV(PB0);

PORTD &= ~_BV(PD0) & ~_BV(PD1) & ~_BV(PD4) & ~_BV(PD5) & ~_BV(PD6) ;
\t\t\t
\t\t\t \t\t\t
\t\t\tbreak;
}
}

}



VI. Fungsi interupt waktu 1 Hz

Code:

//fungsi saat counter mencapai 1 detik
ISR(TIMER1_COMPA_vect)

{


detik++;
clock++;


if(detik == 60)

{
detik=0;
menit++;

if(menit == 60)

{ menit=0;
jam++;
}

if (jam == 24)

{ tanggal++; jam = 0 ; }


\t if(tahun%4 == 0) bul_max[1]=29;
else bul_max[1]=28;

if (tanggal > bul_max[bulan-1]) {bulan++; tanggal =1 ;}

if (bulan > 12) {tahun++; bulan=1; }



}




}


VII. fungsi tampilan jam


Code:


void tulis(void)

{

posisi(1);
segmen((jam/10));
\t _delay_ms(1);
segmen(10);


posisi(2);
segmen((jam%10));
\t _delay_ms(1);
segmen(10);


posisi(3);
segmen((menit/10));
\t _delay_ms(1);
segmen(10);


posisi(4);
segmen((menit%10));
_delay_ms(1);
segmen(10);


\t posisi(5);
segmen((detik/10));
\t _delay_ms(1);
segmen(10);


\t posisi(6);
segmen((detik%10));
\t _delay_ms(1);
segmen(10);


}


VII. MAIN PROGRAM

Spoiler for :



hasilnya seperti ini gan




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