Universitas Gadjah Mada Menara Ilmu Mikrokontroller
Universitas Gadjah Mada
  • Home
  • Kabar Terkini
  • Artikel
    • Teknologi Mikrokontroler
    • Sensor
    • Pemrograman
    • Penelitian
  • Profil
  • Forum

Program Buzzer

Pemrograman Tuesday, 2 October 2018

Buzzer adalah media untuk output suara, buzzer dapat mengeluarkan suara bergantung dari tegangan yang diterima. Apabila diberikan tegangan penuh 5V maka buzzer akan bersuara kencang, dan bila buzzer diberikan tegangan berfrekuensi/osilasi maka suara yang keluar berupa nada.

1. Kebutuhan

  • Arduino UNO
  • (1)Buzzer
  • kabel
  • Breadboard

2. Skematik

Gambar 1. pemasangan buzzer pada Arduino,

kaki GND buzzer dihubungkan langsung ke pin 12 Arduino

3. Program

int speakerPin = 12;    //deklarasi variabel pin

int numTones = 10;        //deklarasi variabel jumlah nada

//deklarasi variabel array berisi nilai nada

int tones[] = {261, 277, 294, 311, 330, 349, 370, 392, 415, 440};

// nadanya : C C# D D# E F F# G G# A

void setup()

{

  //perulangan nada dari 1 sampai 10

  for(int i = 0; i < numTones; i++)

  {

   tone(speakerPin, tones[i]);    //instruksi untuk mengeluarkan nada pada pin

   delay(500);// menunggu 500 milidetik, nada akan tetap berbunyi

  }

  noTone(speakerPin);    //instruksi untuk menghentikan suara

}

void loop()

{

}

4. Video

Program 7segment 4×1

Pemrograman Tuesday, 2 October 2018

7segment 4×1 prinsipnya sama dengan 7 segment 1×1 hanya saja terdapat 4 digit 7segment yang dapat diatur tampilannya. Antara digit 1 sampai digit 4 saling terhubung, apabila diberikan input misalnya angka 1 maka keempat 7segment akan menampilkan angka 1. Nah, agar tampilan masing-masing digit berbeda maka diperlukan teknik switching pada power masing-masing digit 7 segment. Bila ingin menampilkan angka 1234 maka langkahnya, tulis angka 1 lalu nyalakan digit 1, tulis angka 2 lalu nyalakan digit 2, tulis angka 3 lalu nyalakan digit 3, dan tulis angka 4 lalu nyalakan digit 4. Jika cara tersebut dilakukan dengan kecepatan tinggi maka hasilnya terlihat angka 1234 karena mata manusia tidak dapat menangkap perpindahan angka tersebut. 7seg 4×1 tersedia pada integrated output, dan dapat digunakan dengan menyambungkan pin-pin yang ada ke Arduino.

1. Kebutuhan

  • Arduino UNO
  • 7segment 4×1 common anoda
  • kabel
  • Breadboard

2. Skematik

Gambar 1. pin pada 7segment 4×1 common anoda

Gambar 2. Skematik isi LED dan konfigurasi pin pada 7 segment 4x1common anoda

Gambar 4. pemasangan 7segment 4×1 pada Arduino

3. Program

  // rubah nilai 0 menjadi 1 untuk 7segment common katoda

  #define commonCathode 1

  // deklarasi posisi pin digital Arduino untuk setiap segmen

  int segmentA = 2;

  int segmentB = 3; 

  int segmentC = 4; 

  int segmentD = 5; 

  int segmentE = 6;

  int segmentF = 7;

  int segmentG = 8; 

  int segmentDP = 9;

  int digit1 = A0; 

  int digit2 = A1;

  int digit3 = A2; 

  int digit4 = A3;

  int num; 

  int cetak =0;

  int cobo;

  String inputString = “0000”;
  // nilai awal string

  boolean  stringComplete = false;

  //deklarasi variabel array yang berisi angka untuk 7segmen

  byte numbers[10] = { 

  B11000000, // 0

  B11111001, // 1

  B10100100, // 2

  B10110000, // 3

  B10011001, // 4

  B10010010, // 5

  B10000010, // 6

  B11111000, // 7

  B10000000, // 8

  B10010000 // 9

  };

  void setup()
  {

   num = 1234;

   //deklarasi pin segmen sebagai output

   pinMode(segmentA, OUTPUT);

   pinMode(segmentB, OUTPUT);

   pinMode(segmentC, OUTPUT); 

   pinMode(segmentD, OUTPUT);

   pinMode(segmentE, OUTPUT);

   pinMode(segmentF, OUTPUT);

   pinMode(segmentG, OUTPUT);

   pinMode(digit1, OUTPUT);

   pinMode(digit2, OUTPUT);

   pinMode(digit3, OUTPUT);

   pinMode(digit4, OUTPUT);

   writeDot(0);
   // memanggil rutin untuk mematikan titik(dot)

   Serial.begin(9600);

  }

  //rutin yang dijalankan saat dipanggil

  void writeDot(byte dot)
  {

   digitalWrite(segmentDP, dot); //menulis sinyal digital ke segmen dot

  }

  //rutin yang dijalankan saat dipanggil

  void sevenSegWrite(byte digit)
  {

   byte pin = 2;    //deklarasi pin

   int number = numbers[digit];    //deklarasi nilai number sebagai nilai variabel array

   //perulangan dari 0 sampai 6(membaca biner untuk nyala 7segmen)

   for(int bitIndex = 0; bitIndex < 7; bitIndex++){

   //dijalankan saat setingan sebagai common katoda

   if(commonCathode)

   { 

    digitalWrite(pin, 1–bitRead(number, bitIndex)); //menulis sinyal digital sesuai biner

   }

   //dijalankan saat setingan sebagai common anoda

   else
   {

    digitalWrite(pin, bitRead(number, bitIndex));    //menulis sinyal digital sesuai biner

   }

   ++pin;//menambah nilai pin

   }

  }

  //rutin tampilan 7segment dijalankan saat dipanggil

  void dispNumber(int toDisplay)

  {

   #define DIGIT_ON LOW    //set nyala digit saat mendapat sinyal low

   #define DIGIT_OFF HIGH    //set digit mati saat mendapat sinyal high

   //perulangan dari 4 ke 1

   for(int digit = 4; digit > 0; digit–)
   {

   //switching nyala digit

   switch(digit)
   {

    case 1: //jika 1

          digitalWrite(digit1, DIGIT_ON);//digit 1 nyala

          cetak = toDisplay %10;

          sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka
          toDisplay = toDisplay /10;

          digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala

          break; //keluar perulangan


    case 2:    //jika 2

          digitalWrite(digit2, DIGIT_ON);//digit 2 nyala

          cetak = toDisplay % 10;

          sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka

          toDisplay = toDisplay/10;

          digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala

          break;    //keluar perulangan

    case 3:    //jika 3

          digitalWrite(digit3, DIGIT_ON);//digit 3 nyala

          cetak = toDisplay %10;

          sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka

          toDisplay = toDisplay/10;

          digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala

          break;    //keluar perulangan

    case 4:    //jika 4

          digitalWrite(digit4, DIGIT_ON);//digit 4 nyala

          cetak = toDisplay%10;

          sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka

          toDisplay = toDisplay/10;

          digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala

          break;    //keluar perulangan

   }

   delay(2);

   }

  }

  void loop(){

  if (stringComplete) 
  {

   cobo = inputString.toInt();

   inputString = “”;

   stringComplete = false;

  }

   dispNumber(cobo);//tampilkan nilai ke 7segment

  }

  void serialEvent()
  {

   while (Serial.available())

   {

    // membaca inputan serial

    char inChar = (char)Serial.read();

    // menambahkan ke input string

    inputString += inChar;

    // jika terdapat carriage return atau newline maka penambahan string selesai

    if(inChar == ‘\n’)
    {

     stringComplete = true;

    }

   }

  }

4. video

Program 7segment 1×1

Pemrograman Tuesday, 2 October 2018

7segment adalah tampilan yang biasanya berupa susunan segmen yang dapat menyala membentuk bentuk angka atau huruf. Terdapat 7 segmen utama yang berisi LED sehingga setiap segmen dapat menyala secara individual. 7 segmen ada dua macam yaitu common katoda dan common anoda. Yang berbeda arah LEDnya. Common katoda terhubung ke gnd untuk dapat menyalakan LEDnya, sedangkan common anoda terhubung ke vcc untuk dapat menyalakan LEDnya. 7seg 1×1 tersedia pada integrated output dan dapat digunakan dengan menghubungkan pin segment dan pin commonnya.

1. Kebutuhan

  • Arduino UNO
  • (2) 220-ohm resistor
  • 7segment 1×1 common anoda
  • kabel
  • Breadboard

2. Skematik

Gambar 12.1. segmen pada 7segment common anoda, beserta urutan pinnya.

Gambar 12.2. pemasangan 7segment pada pin Arduino, disertai beberapa resistor agar LED tidak kelebihan tegangan.

3. Program

// rubah nilai 0 menjadi 1 untuk 7segment common katoda

#define commonCathode 1

// deklarasi posisi pin digital Arduino untuk setiap segmen

int segmentA = 2;

int segmentB = 3;

int segmentC = 4;

int segmentD = 5;

int segmentE = 6;

int segmentF = 7;

int segmentG = 8;

int segmentDP = 9;

//deklarasi variabel array yang berisi angka untuk 7segmen

byte numbers[10] =

{

  B11000000, // 0

  B11111001, // 1

  B10100100, // 2

  B10110000, // 3

  B10011001, // 4

  B10010010, // 5

  B10000010, // 6

  B11111000, // 7

  B10000000, // 8

  B10010000  // 9

};

void setup()
{

  //deklarasi pin segmen sebagai output

  pinMode(segmentA, OUTPUT);

  pinMode(segmentB, OUTPUT);

  pinMode(segmentC, OUTPUT);

  pinMode(segmentD, OUTPUT);

  pinMode(segmentE, OUTPUT);

  pinMode(segmentF, OUTPUT);

  pinMode(segmentG, OUTPUT); 

  writeDot(0);
  // memanggil rutin untuk mematikan titik(dot)

  //rutin yang dijalankan saat dipanggil

void writeDot(byte dot)
{

  digitalWrite(segmentDP, dot);

  //menulis sinyal digital ke segmen dot

}

//rutin yang dijalankan saat dipanggil

void sevenSegWrite(byte digit)
{

  byte pin = 2;    //deklarasi pin

  int number = numbers[digit];    //deklarasi nilai number sebagai nilai variabel array

  //perulangan dari 0 sampai 6(membaca biner untuk nyala 7segmen)

  for(int bitIndex = 0; bitIndex < 7; bitIndex++){

  //dijalankan saat setingan sebagai common katoda

  if(commonCathode)

  {

   digitalWrite(pin, 1–bitRead(number, bitIndex));
   //menulis sinyal digital sesuai biner

  }

   //dijalankan saat setingan sebagai common anoda

  else

  {

   digitalWrite(pin, bitRead(number, bitIndex));    //menulis sinyal digital sesuai biner

  }

++pin;//menambah nilai pin


 }

}

void loop()

{

 //perulangan dari 10 ke 1

 for(byte count = 10; count > 0; —count)
 {

  delay(1000);

  //menunggu 1000 milidetik

  sevenSegWrite(count – 1);
  //memanggil rutin untuk menampilkan angka

 }


 delay(4000);    //menunggu 4000 milidetik

}

4. Video

Peningkatan presisi pembacaan sensor LM35

Pemrograman Tuesday, 2 October 2018

Pada artikel ini akan ditunjukkan cara meningkatkan presisi pembacaan sensor LM35.

1. Alat dan Bahan

  • Komputer
  • Board Arduino UNO R3
  • Kabel USB
  • Shield Sensor
  • Sensor LM35

2. Kode Program
  //deklarasi variabel
  float tempC;

  int reading; 

  int tempPin = 0;

  void setup()

  {

   analogReference(INTERNAL); //referensi pin analog

   Serial.begin(9600); //open komunikasi serial

  }

  void loop()

  {

   reading = analogRead(tempPin);

   tempC = reading/9.31;            //formula konversi ke Celcius

   Serial.println((byte)tempC); //tulis data ke serial

   delay(1000);

}

3. Langkah Kerja

  • Pasang shield sensor pada Arduino.
  • Sambungkan sensor Lm35 dengan shield sensor menggunakan kabel sensor seperti pada gambar 5.2.
  • Upload kode program ke Arduino
  • Amati keluaran pada terminal Arduino IDE
  • Bandingkan dengan keluaran sebelumnya

4. Video

Berikut video tutorial untuk artikel ini:

Sensor Suhu LM 35

Pemrograman Tuesday, 2 October 2018

Pada artikel ini akan ditunjukkan cara menggunakan sensor LM35 untuk melakukan pengukuran suhu.

1. Alat dan Bahan

  • Komputer
  • Board Arduino UNO R3
  • Kabel USB
  • Shield Sensor
  • Sensor LM35

2. Skematik

Gambar 1. Skematik Sensor LM35

3. Kode Program

  //deklarasi variabel

  float tempC; 

  int tempPin = 0;

  void setup()

  {

  Serial.begin(9600); //open komunikasi serial

  }

  void loop()

  {

   tempC = analogRead(tempPin); //baca nilai sensor

   tempC = (5.0 * tempC * 100.0)/1024.0; //konversi nilai analog ke suhu C

   Serial.println((byte)tempC); //tulis data ke serial

   delay(1000);

  }

4. Langkah Kerja

  • Pasang shield sensor pada Arduino.
  • Sambungkan sensor LM35 dengan shield sensor menggunakan kabel sensor seperti pada gambar 1.
  • Upload kode program ke Arduino
  • keluaran pada terminal Arduino IDE akan menampilkan angka yang merupakan nilai pembacaan suhu pada sensor LM35

5. Video

Berikut video tutorial untuk artikel ini:

1…45678
Universitas Gadjah Mada

Menara Ilmu Mikrokontroler FMIPA
Universitas Gadjah Mada
Kontak :
roghib.muh@ugm.ac.id
+62 856-4781-7270

© Universitas Gadjah Mada

KEBIJAKAN PRIVASI/PRIVACY POLICY