Cara membuat Circle Image di Android Studio



Membuat Circle image bisa bermacam cara, namun disini saya akan menggunakan cara dengan dengan memmanfaatkan CardView yang sudah support corner radius. Mari simak tutorialnya.

Kita harus memasukkan depency berikut ke file build.gradle  yang ada di project.

implementation 'com.android.support:cardview-v7:28.0.0'

Setelah itu kita buat contoh implementasinya sebagai berikut :

app:cardCornerRadius


Dengan mencocokkan corner/sudut dari cardCornerRaidus terhadap ukuran image, maka akan didapatkan corner/sudut yang pas untuk membuat lingkaran sempurna. Berikut saya contohkan cara implementaasi CardView untuk membuat Circle Crop Image.

Untuk membuat lingkaran, set cardCornerRaidus = 1/2 * ukuran sisi kubus/kotak. Misal ukuran layoutnya 200dp x 200dp maka cardCornerRaidus = 100dp .

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        app:cardCornerRadius="16dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_launcher_background"
                android:scaleType="centerCrop"/>
        </LinearLayout>
    </android.support.v7.widget.CardView>
    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        app:cardCornerRadius="24dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_launcher_background"
                android:scaleType="centerCrop"/>
        </LinearLayout>
    </android.support.v7.widget.CardView>
    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        app:cardCornerRadius="50dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_launcher_background"
                android:scaleType="centerCrop"/>
        </LinearLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

How to make Circle Crop Image in Android Studio

26 Januari 2019
Cara membuat Circle Image di Android Studio



Membuat Circle image bisa bermacam cara, namun disini saya akan menggunakan cara dengan dengan memmanfaatkan CardView yang sudah support corner radius. Mari simak tutorialnya.

Kita harus memasukkan depency berikut ke file build.gradle  yang ada di project.

implementation 'com.android.support:cardview-v7:28.0.0'

Setelah itu kita buat contoh implementasinya sebagai berikut :

app:cardCornerRadius


Dengan mencocokkan corner/sudut dari cardCornerRaidus terhadap ukuran image, maka akan didapatkan corner/sudut yang pas untuk membuat lingkaran sempurna. Berikut saya contohkan cara implementaasi CardView untuk membuat Circle Crop Image.

Untuk membuat lingkaran, set cardCornerRaidus = 1/2 * ukuran sisi kubus/kotak. Misal ukuran layoutnya 200dp x 200dp maka cardCornerRaidus = 100dp .

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        app:cardCornerRadius="16dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_launcher_background"
                android:scaleType="centerCrop"/>
        </LinearLayout>
    </android.support.v7.widget.CardView>
    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        app:cardCornerRadius="24dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_launcher_background"
                android:scaleType="centerCrop"/>
        </LinearLayout>
    </android.support.v7.widget.CardView>
    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        app:cardCornerRadius="50dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:src="@drawable/ic_launcher_background"
                android:scaleType="centerCrop"/>
        </LinearLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>





DIGI_TALL


Tak peduli seberapa bodoh dirimu dalam hal apapun. Semua manusia memang diciptakan berbeda, tidak ada yang sama bahkan keidentikannya pun menjadi sebuah pembeda. Begitu juga dengan belajar teknologi terbaru saat ini, mungkin pada zaman old kita masih belajar untuk baca dan tulis merangkai huruf menjadi kata dan merangkai kata menjadi kalimat yang bermakna.

Perkembangan teknologi semakin pesat, TETAPI tetap intinya adalah tentang sebuah penciptaan. Sejarah seakan menjadi penentu arah kehidupan. Semakin mendekati akhir kehidupan, kecanggihan teknologi semakin mendekati 'kesaktian". Orang awan kadang terpukau dengan kecerdasan buatan yang dibuat oleh manusia. Berawal dari angka biner 1 dan 0  dan tidak harus begitu.

Binary artinya dua dan dua disini adalah dua sisi dari kehidupan yang saling berpasangan. Ada "iya" ada "tidak" ada baik ada buruk, ada like ada dislike, ada positif ada negatif. Itu semua representasi dari kehidupan yang dikodekan dengan true or false sebagai boolean dan 1 or 0 sebagai bilangan biner. Dari situlah teknologi digital lahir, dari makna sebuah pasangan yang selalu ada sebagai hukum alam yang tidak dapat dipisahkan oleh manusia.

Masih yakin dengan kecanggihan buatan manusia? padahal binari doang!!!!

Teknologi tercanggih saat inipun lahir dari binari, sehingga para ilmuan mulai mencari cara bagaiman sebuah binari bisa menyamai ciptaan Yang Maha Kuasa?

Manusia tetaplah manusia
Sejauh apapun kecanggihan yang dibuatnya
Tetaplah engkau buntu pada pandangan 
Terbatas pada ruang dan waktu
Berkeluh kesah dalam emosi

Lalu untuk apa teknologi hadir?

Setiap manusia dijatahi waktu untuk hidup di dunia, ketika tiba saatnya dia akan menginggalkan dunai. Dari situlah muncul sebuah perlombaan, ya perlombaan dalam kebaikan atau perlombaan dalam keburukan itu dua sisi yang tak terpisahkan. Teknologi hadir dengan harapan membawa "manfaat", tetapi hukum alam tidak bisa pincang dengan hanya manfaat saja, sebuah kepastian adalah tentu saja harus bergandengan dengan yang namanya "mudhorot". Tak heran jika manusia menyambut dan menggunkan teknologi dari sisi manfaat tapi juga dari sisi lainnya menggunakan mudhorot nya. 

Kehidupan membutuhkan keseimbangan 101010101010. Bayangkan jika Gunung dipangkas diratakan maka alam akan menyeimbangkannya dengan panas, kekeringan, jika musim hujan akan kebanjiran dll. Itu semua kita yang berbuat secara pandangan manusiawi. Namun pada hakikatnya semua kejadian tak lepas dari kuasa Allah SWT.

Sekian cerita memahami kecanggihan teknologi, InsyaAllah akan terus bersambung dengan tulisan setelahnya. Satu hal yang perlu diingat adalah 


"Kamu itu bisa hidup tanpa teknologi digital"
"Ingat masih ada dunia nyata yang asyik buat ngobrol, nongkong, bercanda, tertawa, bermain, berlari, yang semuanya tidak ada di dunia maya"





Kecanggihan hanya sebuah ilusi perkembangan zaman

4 Januari 2018




DIGI_TALL


Tak peduli seberapa bodoh dirimu dalam hal apapun. Semua manusia memang diciptakan berbeda, tidak ada yang sama bahkan keidentikannya pun menjadi sebuah pembeda. Begitu juga dengan belajar teknologi terbaru saat ini, mungkin pada zaman old kita masih belajar untuk baca dan tulis merangkai huruf menjadi kata dan merangkai kata menjadi kalimat yang bermakna.

Perkembangan teknologi semakin pesat, TETAPI tetap intinya adalah tentang sebuah penciptaan. Sejarah seakan menjadi penentu arah kehidupan. Semakin mendekati akhir kehidupan, kecanggihan teknologi semakin mendekati 'kesaktian". Orang awan kadang terpukau dengan kecerdasan buatan yang dibuat oleh manusia. Berawal dari angka biner 1 dan 0  dan tidak harus begitu.

Binary artinya dua dan dua disini adalah dua sisi dari kehidupan yang saling berpasangan. Ada "iya" ada "tidak" ada baik ada buruk, ada like ada dislike, ada positif ada negatif. Itu semua representasi dari kehidupan yang dikodekan dengan true or false sebagai boolean dan 1 or 0 sebagai bilangan biner. Dari situlah teknologi digital lahir, dari makna sebuah pasangan yang selalu ada sebagai hukum alam yang tidak dapat dipisahkan oleh manusia.

Masih yakin dengan kecanggihan buatan manusia? padahal binari doang!!!!

Teknologi tercanggih saat inipun lahir dari binari, sehingga para ilmuan mulai mencari cara bagaiman sebuah binari bisa menyamai ciptaan Yang Maha Kuasa?

Manusia tetaplah manusia
Sejauh apapun kecanggihan yang dibuatnya
Tetaplah engkau buntu pada pandangan 
Terbatas pada ruang dan waktu
Berkeluh kesah dalam emosi

Lalu untuk apa teknologi hadir?

Setiap manusia dijatahi waktu untuk hidup di dunia, ketika tiba saatnya dia akan menginggalkan dunai. Dari situlah muncul sebuah perlombaan, ya perlombaan dalam kebaikan atau perlombaan dalam keburukan itu dua sisi yang tak terpisahkan. Teknologi hadir dengan harapan membawa "manfaat", tetapi hukum alam tidak bisa pincang dengan hanya manfaat saja, sebuah kepastian adalah tentu saja harus bergandengan dengan yang namanya "mudhorot". Tak heran jika manusia menyambut dan menggunkan teknologi dari sisi manfaat tapi juga dari sisi lainnya menggunakan mudhorot nya. 

Kehidupan membutuhkan keseimbangan 101010101010. Bayangkan jika Gunung dipangkas diratakan maka alam akan menyeimbangkannya dengan panas, kekeringan, jika musim hujan akan kebanjiran dll. Itu semua kita yang berbuat secara pandangan manusiawi. Namun pada hakikatnya semua kejadian tak lepas dari kuasa Allah SWT.

Sekian cerita memahami kecanggihan teknologi, InsyaAllah akan terus bersambung dengan tulisan setelahnya. Satu hal yang perlu diingat adalah 


"Kamu itu bisa hidup tanpa teknologi digital"
"Ingat masih ada dunia nyata yang asyik buat ngobrol, nongkong, bercanda, tertawa, bermain, berlari, yang semuanya tidak ada di dunia maya"





Hello Arduino, kali ini saya akan berbagi kepada anda pengalaman mencoba hardware yang satu ini yaitu arduino uno. Untuk berkenalan dengan arduino, ada beberapa hal yang harus anda persiapkan diantaranya :
  1. Hardware arduino + kabel USB
  2. Laptop/PC untuk memprogram
  3. IDE arduino  
  4. Lampu LED
Praktikum
Anda install terlebih dahulu IDE Arduino-nya. Kemudian hubungkan kabel USB ke arduino dan Laptop/PC. Setting port USB pada IDE yaitu pada menu Tools --> Serial Port --> centang portnya. Setting board pada IDE dengan pilih menu Tools --> Board --> Arduino Uno ( board yang saya pakai). Setelah setting selesai, saat kita test dengan menulis pesan lampu menyala atau mati pada serial Monitor dan Blink/lampu kedap kedip yang terhubung pada Pin 13 dan Ground(GND) . Berikut skemanya.




Sesi Ngoding!!!

Silahkan anda ketikkan kode berikut.

/*--------------------------*/
/* www.kebunit.blogspot.com */
/*--------------------------*/

#define LED 13
#define menyala HIGH
#define mati LOW
 

void setup() {
    Serial.begin(4800);
    pinMode(LED, OUTPUT);
}

void loop() {
    digitalWrite(LED, menyala);
    Serial.println("LED Menyala");
    delay(1000);
    digitalWrite(LED, mati);
    Serial.println("LED Mati");
    delay(1000);
}
Ada 3 bagian kode :
  1. Bagian definisi variable
  2. pada bagian ini sangat disarankan menggunakan preprocessor #define daripada menggunakan type variable. Hal ini berpengaruh pada penggunaan memory. Memory di arduino sangatlah kecil sehingga kita harus mengiritnya.
  3. Bagian setup
  4. Pada bagian ini, kita setting pin yang ada di arduino. Setiap pengaturan awal sebelum program di run harus di deklarasikan disini.
  5. Bagian loop
  6. Bagian ini adalah bagian eksekusi kode. loop artinya kode yang kita buat akan di jalankan secara berulang-ulang. Meskipun kita menggunakan bahasa C untuk kodenya, kita dituntut untuk lebih kreatif dalam membuat kode pada mesin yang terus dijalankan secara berulang.
Itulah kawan cerita singkat memulai petualangan untuk mempelajari arduino. Semoga tutorial kedepannya bisa terus saya update dan semoga tutorial ini bermanfaat. Silahkan kritik, saran, dan masukkannya bisa anda tuliskan di komentar. Terima kasih.

Hello Arduino

22 Juni 2017
Hello Arduino, kali ini saya akan berbagi kepada anda pengalaman mencoba hardware yang satu ini yaitu arduino uno. Untuk berkenalan dengan arduino, ada beberapa hal yang harus anda persiapkan diantaranya :
  1. Hardware arduino + kabel USB
  2. Laptop/PC untuk memprogram
  3. IDE arduino  
  4. Lampu LED
Praktikum
Anda install terlebih dahulu IDE Arduino-nya. Kemudian hubungkan kabel USB ke arduino dan Laptop/PC. Setting port USB pada IDE yaitu pada menu Tools --> Serial Port --> centang portnya. Setting board pada IDE dengan pilih menu Tools --> Board --> Arduino Uno ( board yang saya pakai). Setelah setting selesai, saat kita test dengan menulis pesan lampu menyala atau mati pada serial Monitor dan Blink/lampu kedap kedip yang terhubung pada Pin 13 dan Ground(GND) . Berikut skemanya.




Sesi Ngoding!!!

Silahkan anda ketikkan kode berikut.

/*--------------------------*/
/* www.kebunit.blogspot.com */
/*--------------------------*/

#define LED 13
#define menyala HIGH
#define mati LOW
 

void setup() {
    Serial.begin(4800);
    pinMode(LED, OUTPUT);
}

void loop() {
    digitalWrite(LED, menyala);
    Serial.println("LED Menyala");
    delay(1000);
    digitalWrite(LED, mati);
    Serial.println("LED Mati");
    delay(1000);
}
Ada 3 bagian kode :
  1. Bagian definisi variable
  2. pada bagian ini sangat disarankan menggunakan preprocessor #define daripada menggunakan type variable. Hal ini berpengaruh pada penggunaan memory. Memory di arduino sangatlah kecil sehingga kita harus mengiritnya.
  3. Bagian setup
  4. Pada bagian ini, kita setting pin yang ada di arduino. Setiap pengaturan awal sebelum program di run harus di deklarasikan disini.
  5. Bagian loop
  6. Bagian ini adalah bagian eksekusi kode. loop artinya kode yang kita buat akan di jalankan secara berulang-ulang. Meskipun kita menggunakan bahasa C untuk kodenya, kita dituntut untuk lebih kreatif dalam membuat kode pada mesin yang terus dijalankan secara berulang.
Itulah kawan cerita singkat memulai petualangan untuk mempelajari arduino. Semoga tutorial kedepannya bisa terus saya update dan semoga tutorial ini bermanfaat. Silahkan kritik, saran, dan masukkannya bisa anda tuliskan di komentar. Terima kasih.
Tutorial Shift Register yang dimpementasikan pada Seven Segment 4 digit

Selamat berkunjung sahabat blogger, kali ini saya akan berbagi cara membuat countdown dengan menggabungkan 4 Seven Segment dengan 1 IC Shift Reigster 76HC164. Saya senang sekali berbagi ilmu ini, mungkin bagi anda hal ini sangat bermanfaat.

Arduino Uno, itulah nama dari sebuah produk hardware yang bisa anda otak atik program yang ada di dalamnya sesuai denga keinginan anda. Disini saya pakai Arduino Uno untuk mengiplentasikan sistem Countdown ini.

Alat dan Bahan yang harus di persiapkan :
  • Arduino Uno 1x
  • IC 74HC164 1x
  • Resistor 330 ohm 4x
  • Seven Segment Anode/Katode 4x (Pada tutorial ini saya menggunakan Anode Seven Segment)
  • Jumper
  • Project Board(Bread Board)
  • Laptop/PC yang sudah terinstal IDE Arduino
Langkah-langkah pengerjaan :
  • Rangkai Seven Segment dan IC  pada Project Board mengikuti rangkaian pada gambar berikut.








  • Hubungkan rangkaian ke Arduino Uno sesuai gambar tersebut.
    1. Pin 2 sebagai data
    2. Pin 3 sebagai clock
    3. Pin 4 Vcc 1  sebagai sumber daya seven segment digit 1 (paling kanan)
    4. Pin 5 Vcc 2 sebagai digit 2 
    5. Pin 6 Vcc 3 sebagai digit 3
    6. Pin 7 Vcc 4 sebagai digit 4
    Berikut rangkaian Seven Segment Paralel.










  • Setelah semua rangkaian di rangkai, silahkan cek dulu rangkaian seven segment dengan kode berikut.


  • --- Code Test Seven Segment -----

    //---------------------------------------//
    // ----------===[ KEBUN IT]===-----------//
    // --=[ Contact : kebunit@gmail.com ]=-- //
    //---------------------------------------//
    // for Anode Seven Segment
    #define ON HIGH
    #define OFF LOW
    // for Cathode Seven Segment
    //#define ON LOW
    //#define OFF HIGH
    
    // definisi port yang di pakai
    #define data 2
    #define clock 3
    #define D1 4 
    #define D2 5
    #define D3 6
    #define D4 7
    
    void setup() {
     pinMode(data,OUTPUT);
     pinMode(clock,OUTPUT);
     pinMode(D1,OUTPUT);
     pinMode(D2,OUTPUT);
     pinMode(D3,OUTPUT);
     pinMode(D4,OUTPUT);
     Serial.begin(9600);
    }
    
    // Angka 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 pada Shift Register
    byte segment[]={B11000000,B01111001,B0100100,
              B0110000,B0011001,B0010010,
              B0000010,B01111000,B0000000,B0010000};
    
    void loop(){
      for (int i = 0; i < 100000; i++){
        for (int j = 0; j <=9;j++){
        shiftOut(data, clock, MSBFIRST, segment[j]); // menampilkan angka 0 sampai 9
        digitalWrite(D1, ON);
        digitalWrite(D2, ON);
        digitalWrite(D3, ON);
        digitalWrite(D4, ON);
            delay(1000);
        }
      }
    }
    

    jika code tersebut sudah berjalan sesuai keinginan. Maka selanjutnya kita akan membuat kode untuk countdown. Pada kode di atas, semua seven segment masih hidup dan menampilkan angka yang sama untuk setiap digit. Bagaimana cara agar tiap digit bisa menghasikan kombinasi angka yang kita inginkan? jawabannya adalah dengan membuat delay sendiri.

    Sistem Arduino mereprensentasikan sebuah rekursif yang terus berjalan (Infinite Loop). Kemudian Shift Register berfungsi untuk memotong arus untuk di nyalakan pada setiap pin output secara bergantian mulai dari Q0 sampai Q7. Secara logika kita tidak mungkin mengunakan delay yang lama untuk membuat sebuah countdown. Oleh karena itu, Kita bisa membuat delay manual sesuai keinginan kita. Yaitu dengan memakai salah satu operator handal yaitu % (Modulo). Modulo merupakan operator yang digunakan untuk menentukan sisa dari sebuah hasil pembagian angka. 

    Modulo berfungsi untuk memecah delay manual buatan sendiri yang dibuat pada masing-masing digit. Sehingga setiap digit berjalan sebagai angka satuan, puluhan, ratusan, dan ribuan. Dengan demikian, kita bisa melakukan perhitungan angka yang ingin kita keluarkan.

    Sistem rangkaian ini mensimulasikan penggunaan countdown yang di mulai dari sebuah angka yang mempunyai maksimal 4 digit angka dan minimal 0. Ketika sudah mencapai angka nol (0000), maka angka nol tersebut akan delay beberapa saat setelah itu akan di lakukan countdown kembali dari angka yang telah ditetapkan angka .

    Berikut kode Countdown dalam detik.
    
    //---------------------------------------//
    // ----------===[ KEBUN IT]===-----------//
    // --=[ Contact : kebunit@gmail.com ]=-- //
    //---------------------------------------//
    
    // for Anode Seven Segment
    #define ON HIGH
    #define OFF LOW
    
    // for Cathode Seven Segment
    #define ON HIGH
    #define OFF LOW
    
    #define data 2
    #define clock 3
    #define D1 4
    #define D2 5
    #define D3 6
    #define D4 7
    
    void setup() {
     pinMode(data,OUTPUT);
     pinMode(clock,OUTPUT);
     pinMode(D1,OUTPUT);
     pinMode(D2,OUTPUT);
     pinMode(D3,OUTPUT);
     pinMode(D4,OUTPUT);
     Serial.begin(9600);
    }
    
    // digit 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    byte segment[]={B11000000,B01111001,B0100100,
              B0110000,B0011001,B0010010,
              B0000010,B01111000,B0000000,B0010000};
    
    // Set angka yang anda inginkan berdasarkan digit
    // contoh Countdown dimulai dari 1000
    int angka1 = 0; // angka satuan
    int angka2 = 0; // angka puluhan
    int angka3 = 0; // angka ratusan
    int angka4 = 1; // angka ribuan
    
    int digit1 = 0, a = angka1; 
    int digit2 = 0, b = angka2; 
    int digit3 = 0, c = angka3; 
    int digit4 = 0, d = angka4; 
    int pembatas = 0;
    bool berhenti = true;
    
    void loop(){
      hitungMundur();
    }
    
    void hitungMundur(){
        digit1--;
        digit2--;
        digit3--;
        digit4--;
        if ((a == angka1)&& (b == angka2 ) && (c == angka3) && (d == angka4)){ 
          for (int x =0 ; x < 200;x++){
            Number(1,angka1);
            clearLED();
            Number(2,angka2);
            clearLED();
            Number(3,angka3);
            clearLED();
            Number(4,angka4);
            clearLED();
          }
          c = angka3-1;
          berhenti = false;
          Serial.println("Tampilan pertama timer dalam detik");
        }
        // delay angka satuan
        if (digit1 % 10 == 0) {
          a--;
          Serial.println("==>> digit1");
          clearLED();
        }
        if (digit1 < 0){
            digit1 = 100;
            a = 9;
            Serial.println("=========>> digit2");
        }
        
        // delay angka puluhan
        if (digit2 % 100 == 0) {
          b--;
          clearLED();
        }
        if (digit2 < 0){
            digit2 = 1000;
            b = 9;
            Serial.println("===================>> digit3 ");
        }
        
        // delay angka ratusan
        if (digit3 % 1000 == 0) {
          c--;
          clearLED();
        }
        if ((digit3 < 0)&&(c < 0)){
            pembatas++;
            digit3 = 1000;
            c = 9;
            Serial.println("==========================================>> digit4");
            d--;  // untuk angka ribuan (digit ke-4)
            if (d < 0) {
              d = 0;
            }
        }   
        
        Number(1,a);
        clearLED();
        Number(2,b);
        clearLED();
        Number(3,c);
        clearLED();
        Number(4,d);
        clearLED();
        
        // delay ketika |0|0|0|0|
        if ((c == 0)&&(d == 0) &&(b == 0 ) && (a == 0)){
          Serial.println("Delay untuk angka |0|0|0|0| ");
          for (int y = 0; y < 500; y++){
            Number(1,a);
            clearLED();
            Number(2,b);
            clearLED();
            Number(3,c);
            clearLED();
            Number(4,d);
            clearLED();
          }
          c = angka3;
          d = angka4;
          b = angka2;
          a = angka1;
          digit1 = 0;
          digit2 = 0;
          digit3 = 0;
          digit4 = 0;
          berhenti = true;
        }
    }
    
    void clearLED(){
      delay(3);  // Untuk setting kecepatan detik, tinggal kurangi atau tambahi nilai delay-nya
      digitalWrite(D1,OFF);
      digitalWrite(D2,OFF);
      digitalWrite(D3,OFF);
      digitalWrite(D4,OFF);
    }
    
    void Number(int digit,int angka){
      switch (digit) {
        case 1:
          digitalWrite(D1,ON);
          break;
        case 2:
          digitalWrite(D2,ON);
          break;
        case 3:
          digitalWrite(D3,ON);
          break;
        case 4:
          digitalWrite(D4,ON);
          break;
      }
      switch (angka){ 
        case 0:
            shiftOut(data, clock, MSBFIRST, segment[0]);
            break;
         case 1:
            shiftOut(data, clock, MSBFIRST, segment[1]);
            break;
        case 2:
            shiftOut(data, clock, MSBFIRST, segment[2]);
            break;
        case 3:
            shiftOut(data, clock, MSBFIRST, segment[3]);
            break;
        case 4:
            shiftOut(data, clock, MSBFIRST, segment[4]);
            break;
        case 5:
            shiftOut(data, clock, MSBFIRST, segment[5]);
            break;
        case 6:
            shiftOut(data, clock, MSBFIRST, segment[6]);
            break;
        case 7:
            shiftOut(data, clock, MSBFIRST, segment[7]);
            break;
        case 8:
            shiftOut(data, clock, MSBFIRST, segment[8]);
            break;
        case 9:
            shiftOut(data, clock, MSBFIRST, segment[9]);
            break;
      }
    }
    

    Untuk melihat log activity program, Anda bisa langsung membuka menu pada IDE Arduino. Yaitu  Tools -> Serial Monitor  atau bisa pake shortkey Ctrl+Shift+M. Anda bisa melihat hasil Looping program yang sedang berjalan.




    Semoga tutorial di atas bermanfaat untuk anda yang memanfaatkan kode di atas untuk sebuah kebaikan yang berarti. 

    Cintai negerimu dengan mencintai hal kecil dalam hidupmu. Mulai dengan berbagi ilmu, bukan maksud untuk menggurui. Namun apalah  daya diriku hanyalah mahluk ciptaan Tuhan yang hanya ingin berbagi sesuatu hal yang sederhana. Disinilah aku berbagi kepada kalian wahai generasi penerus bangsa. 

    --- Kebahagianku ketika aku bisa berbagi kepada mereka yang membutuhkan ---


    Arduino : 4 Seven Segment +1 IC Shift Register

    7 Mei 2015
    Tutorial Shift Register yang dimpementasikan pada Seven Segment 4 digit

    Selamat berkunjung sahabat blogger, kali ini saya akan berbagi cara membuat countdown dengan menggabungkan 4 Seven Segment dengan 1 IC Shift Reigster 76HC164. Saya senang sekali berbagi ilmu ini, mungkin bagi anda hal ini sangat bermanfaat.

    Arduino Uno, itulah nama dari sebuah produk hardware yang bisa anda otak atik program yang ada di dalamnya sesuai denga keinginan anda. Disini saya pakai Arduino Uno untuk mengiplentasikan sistem Countdown ini.

    Alat dan Bahan yang harus di persiapkan :
    • Arduino Uno 1x
    • IC 74HC164 1x
    • Resistor 330 ohm 4x
    • Seven Segment Anode/Katode 4x (Pada tutorial ini saya menggunakan Anode Seven Segment)
    • Jumper
    • Project Board(Bread Board)
    • Laptop/PC yang sudah terinstal IDE Arduino
    Langkah-langkah pengerjaan :
    • Rangkai Seven Segment dan IC  pada Project Board mengikuti rangkaian pada gambar berikut.








  • Hubungkan rangkaian ke Arduino Uno sesuai gambar tersebut.
    1. Pin 2 sebagai data
    2. Pin 3 sebagai clock
    3. Pin 4 Vcc 1  sebagai sumber daya seven segment digit 1 (paling kanan)
    4. Pin 5 Vcc 2 sebagai digit 2 
    5. Pin 6 Vcc 3 sebagai digit 3
    6. Pin 7 Vcc 4 sebagai digit 4
    Berikut rangkaian Seven Segment Paralel.










  • Setelah semua rangkaian di rangkai, silahkan cek dulu rangkaian seven segment dengan kode berikut.


  • --- Code Test Seven Segment -----

    //---------------------------------------//
    // ----------===[ KEBUN IT]===-----------//
    // --=[ Contact : kebunit@gmail.com ]=-- //
    //---------------------------------------//
    // for Anode Seven Segment
    #define ON HIGH
    #define OFF LOW
    // for Cathode Seven Segment
    //#define ON LOW
    //#define OFF HIGH
    
    // definisi port yang di pakai
    #define data 2
    #define clock 3
    #define D1 4 
    #define D2 5
    #define D3 6
    #define D4 7
    
    void setup() {
     pinMode(data,OUTPUT);
     pinMode(clock,OUTPUT);
     pinMode(D1,OUTPUT);
     pinMode(D2,OUTPUT);
     pinMode(D3,OUTPUT);
     pinMode(D4,OUTPUT);
     Serial.begin(9600);
    }
    
    // Angka 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 pada Shift Register
    byte segment[]={B11000000,B01111001,B0100100,
              B0110000,B0011001,B0010010,
              B0000010,B01111000,B0000000,B0010000};
    
    void loop(){
      for (int i = 0; i < 100000; i++){
        for (int j = 0; j <=9;j++){
        shiftOut(data, clock, MSBFIRST, segment[j]); // menampilkan angka 0 sampai 9
        digitalWrite(D1, ON);
        digitalWrite(D2, ON);
        digitalWrite(D3, ON);
        digitalWrite(D4, ON);
            delay(1000);
        }
      }
    }
    

    jika code tersebut sudah berjalan sesuai keinginan. Maka selanjutnya kita akan membuat kode untuk countdown. Pada kode di atas, semua seven segment masih hidup dan menampilkan angka yang sama untuk setiap digit. Bagaimana cara agar tiap digit bisa menghasikan kombinasi angka yang kita inginkan? jawabannya adalah dengan membuat delay sendiri.

    Sistem Arduino mereprensentasikan sebuah rekursif yang terus berjalan (Infinite Loop). Kemudian Shift Register berfungsi untuk memotong arus untuk di nyalakan pada setiap pin output secara bergantian mulai dari Q0 sampai Q7. Secara logika kita tidak mungkin mengunakan delay yang lama untuk membuat sebuah countdown. Oleh karena itu, Kita bisa membuat delay manual sesuai keinginan kita. Yaitu dengan memakai salah satu operator handal yaitu % (Modulo). Modulo merupakan operator yang digunakan untuk menentukan sisa dari sebuah hasil pembagian angka. 

    Modulo berfungsi untuk memecah delay manual buatan sendiri yang dibuat pada masing-masing digit. Sehingga setiap digit berjalan sebagai angka satuan, puluhan, ratusan, dan ribuan. Dengan demikian, kita bisa melakukan perhitungan angka yang ingin kita keluarkan.

    Sistem rangkaian ini mensimulasikan penggunaan countdown yang di mulai dari sebuah angka yang mempunyai maksimal 4 digit angka dan minimal 0. Ketika sudah mencapai angka nol (0000), maka angka nol tersebut akan delay beberapa saat setelah itu akan di lakukan countdown kembali dari angka yang telah ditetapkan angka .

    Berikut kode Countdown dalam detik.
    
    //---------------------------------------//
    // ----------===[ KEBUN IT]===-----------//
    // --=[ Contact : kebunit@gmail.com ]=-- //
    //---------------------------------------//
    
    // for Anode Seven Segment
    #define ON HIGH
    #define OFF LOW
    
    // for Cathode Seven Segment
    #define ON HIGH
    #define OFF LOW
    
    #define data 2
    #define clock 3
    #define D1 4
    #define D2 5
    #define D3 6
    #define D4 7
    
    void setup() {
     pinMode(data,OUTPUT);
     pinMode(clock,OUTPUT);
     pinMode(D1,OUTPUT);
     pinMode(D2,OUTPUT);
     pinMode(D3,OUTPUT);
     pinMode(D4,OUTPUT);
     Serial.begin(9600);
    }
    
    // digit 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    byte segment[]={B11000000,B01111001,B0100100,
              B0110000,B0011001,B0010010,
              B0000010,B01111000,B0000000,B0010000};
    
    // Set angka yang anda inginkan berdasarkan digit
    // contoh Countdown dimulai dari 1000
    int angka1 = 0; // angka satuan
    int angka2 = 0; // angka puluhan
    int angka3 = 0; // angka ratusan
    int angka4 = 1; // angka ribuan
    
    int digit1 = 0, a = angka1; 
    int digit2 = 0, b = angka2; 
    int digit3 = 0, c = angka3; 
    int digit4 = 0, d = angka4; 
    int pembatas = 0;
    bool berhenti = true;
    
    void loop(){
      hitungMundur();
    }
    
    void hitungMundur(){
        digit1--;
        digit2--;
        digit3--;
        digit4--;
        if ((a == angka1)&& (b == angka2 ) && (c == angka3) && (d == angka4)){ 
          for (int x =0 ; x < 200;x++){
            Number(1,angka1);
            clearLED();
            Number(2,angka2);
            clearLED();
            Number(3,angka3);
            clearLED();
            Number(4,angka4);
            clearLED();
          }
          c = angka3-1;
          berhenti = false;
          Serial.println("Tampilan pertama timer dalam detik");
        }
        // delay angka satuan
        if (digit1 % 10 == 0) {
          a--;
          Serial.println("==>> digit1");
          clearLED();
        }
        if (digit1 < 0){
            digit1 = 100;
            a = 9;
            Serial.println("=========>> digit2");
        }
        
        // delay angka puluhan
        if (digit2 % 100 == 0) {
          b--;
          clearLED();
        }
        if (digit2 < 0){
            digit2 = 1000;
            b = 9;
            Serial.println("===================>> digit3 ");
        }
        
        // delay angka ratusan
        if (digit3 % 1000 == 0) {
          c--;
          clearLED();
        }
        if ((digit3 < 0)&&(c < 0)){
            pembatas++;
            digit3 = 1000;
            c = 9;
            Serial.println("==========================================>> digit4");
            d--;  // untuk angka ribuan (digit ke-4)
            if (d < 0) {
              d = 0;
            }
        }   
        
        Number(1,a);
        clearLED();
        Number(2,b);
        clearLED();
        Number(3,c);
        clearLED();
        Number(4,d);
        clearLED();
        
        // delay ketika |0|0|0|0|
        if ((c == 0)&&(d == 0) &&(b == 0 ) && (a == 0)){
          Serial.println("Delay untuk angka |0|0|0|0| ");
          for (int y = 0; y < 500; y++){
            Number(1,a);
            clearLED();
            Number(2,b);
            clearLED();
            Number(3,c);
            clearLED();
            Number(4,d);
            clearLED();
          }
          c = angka3;
          d = angka4;
          b = angka2;
          a = angka1;
          digit1 = 0;
          digit2 = 0;
          digit3 = 0;
          digit4 = 0;
          berhenti = true;
        }
    }
    
    void clearLED(){
      delay(3);  // Untuk setting kecepatan detik, tinggal kurangi atau tambahi nilai delay-nya
      digitalWrite(D1,OFF);
      digitalWrite(D2,OFF);
      digitalWrite(D3,OFF);
      digitalWrite(D4,OFF);
    }
    
    void Number(int digit,int angka){
      switch (digit) {
        case 1:
          digitalWrite(D1,ON);
          break;
        case 2:
          digitalWrite(D2,ON);
          break;
        case 3:
          digitalWrite(D3,ON);
          break;
        case 4:
          digitalWrite(D4,ON);
          break;
      }
      switch (angka){ 
        case 0:
            shiftOut(data, clock, MSBFIRST, segment[0]);
            break;
         case 1:
            shiftOut(data, clock, MSBFIRST, segment[1]);
            break;
        case 2:
            shiftOut(data, clock, MSBFIRST, segment[2]);
            break;
        case 3:
            shiftOut(data, clock, MSBFIRST, segment[3]);
            break;
        case 4:
            shiftOut(data, clock, MSBFIRST, segment[4]);
            break;
        case 5:
            shiftOut(data, clock, MSBFIRST, segment[5]);
            break;
        case 6:
            shiftOut(data, clock, MSBFIRST, segment[6]);
            break;
        case 7:
            shiftOut(data, clock, MSBFIRST, segment[7]);
            break;
        case 8:
            shiftOut(data, clock, MSBFIRST, segment[8]);
            break;
        case 9:
            shiftOut(data, clock, MSBFIRST, segment[9]);
            break;
      }
    }
    

    Untuk melihat log activity program, Anda bisa langsung membuka menu pada IDE Arduino. Yaitu  Tools -> Serial Monitor  atau bisa pake shortkey Ctrl+Shift+M. Anda bisa melihat hasil Looping program yang sedang berjalan.




    Semoga tutorial di atas bermanfaat untuk anda yang memanfaatkan kode di atas untuk sebuah kebaikan yang berarti. 

    Cintai negerimu dengan mencintai hal kecil dalam hidupmu. Mulai dengan berbagi ilmu, bukan maksud untuk menggurui. Namun apalah  daya diriku hanyalah mahluk ciptaan Tuhan yang hanya ingin berbagi sesuatu hal yang sederhana. Disinilah aku berbagi kepada kalian wahai generasi penerus bangsa. 

    --- Kebahagianku ketika aku bisa berbagi kepada mereka yang membutuhkan ---


    Kelemaan pacaran tapi nggak di lamar-lamar = korban PHP
    Sumber gambar

    Terkadang kita terlalu tersibukkan oleh sebuah dunia yang kurang bermanfaat untuk para remaja yaitu pacaran. Sehingga lupa untuk belajar dan meneruskan generasi para pejuang bangsa ini. Para pejuang bangsa ini telah bersusah payah untuk merdeka, namun seiiring berjalannya waktu hal itu semakin menjadi pudar.


    Pacaran menjadi budaya yang nge-tren bagi anak remaja jaman sekarang. Muncullah berbagai istilah yang sudah tidak asing ditelinga seperti Cinta Monyet, CLBK, PHP, dll. Daripada di PHP-in(Pemberi Harapan Palsu) cewek mending kita belajar bahasa yang membuat hidup anda dinamis seperti layaknya web responsive.

    PHP(Hypertext Preprocessor) merupakan server side scipting language dan juga merupakan general purpose programming language yang secara khusus di gunakan untuk mengembangkan situs web dan bisa di masukkan ke dalam HTML. Berikut saya bagi kode simple yang mudah-mudahan bermanfaat.

    <!-- File name : apaaja.php tapi lebih enak pake index.php untuk coba-coba -->
    <!DOCTYPE HTML>
    <html>
        <head>
            <title>Pemberi Harapan Palsu</title>
        </head>
        <body>
            <?php
     echo "Echo : Hai, Aku echo PHP. Kamu siapa? <br/>";
     print(" Print : Aku print PHP. Echo aku ingin mengatakan sesuatu 
    kepadamu <br/>");
     echo "Echo : wah .. so sweet. kau buat aku penasaran. emang 
    kamu mau bilang apa?<br/>";
     print("Print : engg... kasih tau gak yaaaww....haha... <br/>");
            ?>
        </body>
    </html>
    

    itulah sekilah tentang PHP. Jangan lupa PHP tidak bisa berjalan tanpa server. Untuk itu kita harus membuat server lokal dalam laptop/komputer kita agar bisa menjalan PHP. Server lokal bisa pake aplikasi XAMPP untuk Window/Linux,WAMP server untuk Windows, LAMPP server untuk Linux.

    "Sampaikanlah kebaikan meskipun hanya sebuah bahasa PHP"
    "Semangat belajar putra-putri generasi bangsa di masa yang akan datang...".
    "Belajar memang butuh kesabaran dan perjuangan. Urusan hasil itu bukan urusan manusia.."
    --------------------------------------Good Day -------------------------------------------

    Daripada di PHP-in cewek mending belajar PHP

    4 Mei 2015
    Kelemaan pacaran tapi nggak di lamar-lamar = korban PHP
    Sumber gambar

    Terkadang kita terlalu tersibukkan oleh sebuah dunia yang kurang bermanfaat untuk para remaja yaitu pacaran. Sehingga lupa untuk belajar dan meneruskan generasi para pejuang bangsa ini. Para pejuang bangsa ini telah bersusah payah untuk merdeka, namun seiiring berjalannya waktu hal itu semakin menjadi pudar.


    Pacaran menjadi budaya yang nge-tren bagi anak remaja jaman sekarang. Muncullah berbagai istilah yang sudah tidak asing ditelinga seperti Cinta Monyet, CLBK, PHP, dll. Daripada di PHP-in(Pemberi Harapan Palsu) cewek mending kita belajar bahasa yang membuat hidup anda dinamis seperti layaknya web responsive.

    PHP(Hypertext Preprocessor) merupakan server side scipting language dan juga merupakan general purpose programming language yang secara khusus di gunakan untuk mengembangkan situs web dan bisa di masukkan ke dalam HTML. Berikut saya bagi kode simple yang mudah-mudahan bermanfaat.

    <!-- File name : apaaja.php tapi lebih enak pake index.php untuk coba-coba -->
    <!DOCTYPE HTML>
    <html>
        <head>
            <title>Pemberi Harapan Palsu</title>
        </head>
        <body>
            <?php
     echo "Echo : Hai, Aku echo PHP. Kamu siapa? <br/>";
     print(" Print : Aku print PHP. Echo aku ingin mengatakan sesuatu 
    kepadamu <br/>");
     echo "Echo : wah .. so sweet. kau buat aku penasaran. emang 
    kamu mau bilang apa?<br/>";
     print("Print : engg... kasih tau gak yaaaww....haha... <br/>");
            ?>
        </body>
    </html>
    

    itulah sekilah tentang PHP. Jangan lupa PHP tidak bisa berjalan tanpa server. Untuk itu kita harus membuat server lokal dalam laptop/komputer kita agar bisa menjalan PHP. Server lokal bisa pake aplikasi XAMPP untuk Window/Linux,WAMP server untuk Windows, LAMPP server untuk Linux.

    "Sampaikanlah kebaikan meskipun hanya sebuah bahasa PHP"
    "Semangat belajar putra-putri generasi bangsa di masa yang akan datang...".
    "Belajar memang butuh kesabaran dan perjuangan. Urusan hasil itu bukan urusan manusia.."
    --------------------------------------Good Day -------------------------------------------


    Angklung adalah alat musik multitonal (bernada ganda) yang secara tradisional berkembang dalam masyarakat Sunda di Jawa Barat. Alat musik ini dibuat dari bambu, dibunyikan dengan cara digoyangkan (bunyi disebabkan oleh benturan badan pipa bambu) sehingga menghasilkan bunyi yang bergetar dalam susunan nada 2, 3, sampai 4 nada dalam setiap ukuran, baik besar maupun kecil.

    Dictionary of the Sunda Language karya Jonathan Rigg, yang diterbitkan pada tahun 1862 di Batavia, menuliskan bahwa angklung adalah alat musik yang terbuat dari pipa-pipa bambu, yang dipotong ujung-ujungnya, menyerupai pipa-pipa dalam suatu organ, dan diikat bersama dalam suatu bingkai, digetarkan untuk menghasilkan bunyi. Angklung terdaftar sebagai Karya Agung Warisan Budaya Lisan dan Nonbendawi Manusia dari UNESCO sejak November 2010.
    Sumber : http://id.wikipedia.org/wiki/Angklung

    Download Gambar

    Gambar Angklung Transparan Free | Gratis | Full HD

    28 April 2015

    Angklung adalah alat musik multitonal (bernada ganda) yang secara tradisional berkembang dalam masyarakat Sunda di Jawa Barat. Alat musik ini dibuat dari bambu, dibunyikan dengan cara digoyangkan (bunyi disebabkan oleh benturan badan pipa bambu) sehingga menghasilkan bunyi yang bergetar dalam susunan nada 2, 3, sampai 4 nada dalam setiap ukuran, baik besar maupun kecil.

    Dictionary of the Sunda Language karya Jonathan Rigg, yang diterbitkan pada tahun 1862 di Batavia, menuliskan bahwa angklung adalah alat musik yang terbuat dari pipa-pipa bambu, yang dipotong ujung-ujungnya, menyerupai pipa-pipa dalam suatu organ, dan diikat bersama dalam suatu bingkai, digetarkan untuk menghasilkan bunyi. Angklung terdaftar sebagai Karya Agung Warisan Budaya Lisan dan Nonbendawi Manusia dari UNESCO sejak November 2010.
    Sumber : http://id.wikipedia.org/wiki/Angklung

    Download Gambar

    Selalu ada cara untuk membuat diri kita bahagia, Salah satunya adalah dengan berbagi kepada sesama...
    Sumber gambar : http://cdn.klimg.com/vemale.com/p/Menebak_Sifat_Berdasarkan_Tanggal_Lahir2.jpg

    Cara simple menampilkan tanggal dengan JavaScript

    23 April 2015
    Selalu ada cara untuk membuat diri kita bahagia, Salah satunya adalah dengan berbagi kepada sesama...
    Sumber gambar : http://cdn.klimg.com/vemale.com/p/Menebak_Sifat_Berdasarkan_Tanggal_Lahir2.jpg
    IGOS Nusantara disingkat IGN adalah sistem operasi dengan perangkat lunak legal, handal dan tanpa membayar lisensi untuk pengguna di Indonesia

    iGOS Nusantara

    IGOS Nusantara

    13 April 2015
    IGOS Nusantara disingkat IGN adalah sistem operasi dengan perangkat lunak legal, handal dan tanpa membayar lisensi untuk pengguna di Indonesia

    iGOS Nusantara

    The majority of people in developed countries spend at least some time interacting with the Internet, and Governments are abusing that necessity in secret to extend their powers beyond what is necessary and appropriate
    Edward Snowden
    Sumber gambar : salon.com

    Intelijen Australia Sadap Percakapan Ponsel Pejabat RI

    7 Maret 2015
    The majority of people in developed countries spend at least some time interacting with the Internet, and Governments are abusing that necessity in secret to extend their powers beyond what is necessary and appropriate
    Edward Snowden
    Sumber gambar : salon.com

    ~ KEBUN IT ~

    ~ sebuah catatan panjang dalam perjalanan ~

    Copyright © | KEBUN IT | All Right Reserved