Translate

Membuat Alat Perhitungan Kalori Menggunakan Keypad

Membuat Alat Perhitungan Kalori Menggunakan Keypad


         kali ini saya akan menjelskan mengenai bagaimana cara membuat alat untuk perhitungan kalori, jadi alat ini bisa menghitung kalori seseorang dengan menggunakan beberapa input data dan sebuah timbangan badan. alat ini menggunakan keypad matrik yang berfungsi sebagai input nilai dan kontrol penyimpanan data, selain itu alat ini dilengkapi dengan display LCD 16x2 sebagai penampilnya agar user bisa mengetahui nilai yang didapat dan juga nilai hasil perhitungan. Terdapat 4 buah push button yang digunakan untuk input level aktifitas, yang mana tiap tombol mewakili suatu nilai terkait level aktifitas orang yang akan dihitung kalorinya.



a.Minimum System ATMega

 


b. Keypad Matrix




c. Push Button




d. Load Cell 100kg + Amplifier




e. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 11059200

Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Dataadc As Word

Declare Sub Keypad
Declare Sub Entri_data
Declare Sub Keypad2
Declare Sub Entri_data2
Declare Sub Keypad3
Declare Sub Keypad5

Dim Urut As Byte
Dim Kode As Byte
Dim Flag As Bit
Dim I As Word
Dim Nilai As Long
Dim Angka As Integer
Dim Valtinggi As Integer

Dim Urut2 As Byte
Dim Kode2 As Byte
Dim Flag2 As Bit
Dim I2 As Word
Dim Valusia As Integer

Dim Urut3 As Byte
Dim Kode3 As Byte
Dim Flag3 As Bit
Dim I3 As Word
Dim Valgender As Integer

Dim Aktifitas As Single

Dim Urut5 As Byte
Dim Kode5 As Byte
Dim Flag5 As Bit
Dim I5 As Word

Dim Male1 As Single
Dim Male2 As Single
Dim Male3 As Single
Dim Female1 As Single
Dim Female2 As Single
Dim Female3 As Single
Dim Bmrmale As Single
Dim Bmrfemale As Single
Dim Hasil As Single
Dim W As String * 6

Cls
Cursor Off

Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Pinb.3 = Input
Tombol1 Alias Pinb.0
Tombol2 Alias Pinb.1
Tombol3 Alias Pinb.2
Tombol4 Alias Pinb.3
Set Portb.0
Set Portb.1
Set Portb.2
Set Portb.3

Ddrd = &B11110000
Portd = &HFF

Inputdata1:

Cls
Locate 1 , 1
Lcd "Kalori Counter"
Locate 2 , 1
Lcd "Mulai Tekan * "

Gosub Keypad

'Baca Keypad
Sub Keypad()
Kode = 0
Urut = 0
Flag = 0

I = 0
Do

For I = 0 To 20000

'KOLOM 1
Portd = &B11101111

'tombol A
If Pind.0 = 0 Then
Waitms 200

Elseif Pind.1 = 0 Then
Angka = 4
Gosub Entri_data
Waitms 200

Elseif Pind.2 = 0 Then
Angka = 7
Gosub Entri_data
Waitms 200

'tombol *
Elseif Pind.3 = 0 Then
Waitms 200
Goto Datain

End If

'KOLOM 2
Portd = &B11011111
If Pind.0 = 0 Then
Angka = 1
Gosub Entri_data
Waitms 200

Elseif Pind.1 = 0 Then
Angka = 5
Gosub Entri_data
Waitms 200

Elseif Pind.2 = 0 Then
Angka = 8
Gosub Entri_data
Waitms 200

Elseif Pind.3 = 0 Then
Angka = 0
Gosub Entri_data
Waitms 200
End If

'KOLOM 3
Portd = &B10111111
If Pind.0 = 0 Then
Angka = 2
Gosub Entri_data
Waitms 200

Elseif Pind.1 = 0 Then
Angka = 6
Gosub Entri_data
Waitms 200

Elseif Pind.2 = 0 Then
Angka = 9
Gosub Entri_data
Waitms 200

'tombol #
Elseif Pind.3 = 0 Then
Waitms 200
Valtinggi = Nilai
Cls
Upperline
Lcd "Simpan...."
Wait 1
Cls
Goto Inputdata2

End If

'KOLOM 4
Portd = &B01111111

If Pind.0 = 0 Then
Angka = 3
Gosub Entri_data
Waitms 200

' tombol B
Elseif Pind.1 = 0 Then
Waitms 200

'tombol C
Elseif Pind.2 = 0 Then
Waitms 200

'tombol D
Elseif Pind.3 = 0 Then
Waitms 200

End If

Next
Loop

End Sub

'Entri Data
Sub Entri_data()
Incr Urut

Select Case Urut
Case 1 : Nilai = Angka
Lcd Angka

Case 2 : Nilai = Nilai * 10
Nilai = Nilai + Angka
Lcd Angka
Valtinggi = Nilai

Case 3 : Nilai = Nilai * 10
Nilai = Nilai + Angka
Lcd Angka
Valtinggi = Nilai

Case 4 : Nilai = Nilai * 10
Nilai = Nilai + Angka
Lcd Angka
Valtinggi = Nilai

Case 5 : Nilai = Nilai * 10
Nilai = Nilai + Angka
Lcd Angka
Urut = 0
Locate 2 , 1
Valtinggi = Nilai
End Select
End Sub

Datain:
Cls
Cursor Blink
Cursor On
Locate 1 , 1
Lcd "Tnput Tinggi:"
Locate 2 , 1
Cursor Blink
Cursor On
Waitms 200
Return

'================================================

Inputdata2:
Nilai = 0
Cls
Locate 1 , 1
Lcd "Data Usia"
Locate 2 , 1
Lcd "Mulai Tekan * "

Gosub Keypad2

'Baca Keypad
Sub Keypad2()
Kode2 = 0
Urut2 = 0
Flag2 = 0

I2 = 0

Do

For I2 = 0 To 20000

'KOLOM 1
Portd = &B11101111

'tombol A
If Pind.0 = 0 Then
Waitms 200

Elseif Pind.1 = 0 Then
Angka = 4
Gosub Entri_data2
Waitms 200

Elseif Pind.2 = 0 Then
Angka = 7
Gosub Entri_data2
Waitms 200

'tombol *
Elseif Pind.3 = 0 Then
Waitms 200
Goto Datain2

End If

'KOLOM 2
Portd = &B11011111
If Pind.0 = 0 Then
Angka = 1
Gosub Entri_data2
Waitms 200

Elseif Pind.1 = 0 Then
Angka = 5
Gosub Entri_data2
Waitms 200

Elseif Pind.2 = 0 Then
Angka = 8
Gosub Entri_data2
Waitms 200

Elseif Pind.3 = 0 Then
Angka = 0
Gosub Entri_data2
Waitms 200
End If

'KOLOM 3
Portd = &B10111111
If Pind.0 = 0 Then
Angka = 2
Gosub Entri_data2
Waitms 200

Elseif Pind.1 = 0 Then
Angka = 6
Gosub Entri_data2
Waitms 200

Elseif Pind.2 = 0 Then
Angka = 9
Gosub Entri_data2
Waitms 200

'tombol #
Elseif Pind.3 = 0 Then
Waitms 200
Valusia = Nilai
Cls
Upperline
Lcd "Simpan...."
Wait 1
Goto Inputdata3

End If

'KOLOM 4
Portd = &B01111111

If Pind.0 = 0 Then
Angka = 3
Gosub Entri_data2
Waitms 200

' tombol B
Elseif Pind.1 = 0 Then
Waitms 200

'tombol C
Elseif Pind.2 = 0 Then
Waitms 200

'tombol D
Elseif Pind.3 = 0 Then
Waitms 200

End If

Next
Loop

End Sub

'Entri Data
Sub Entri_data2()
Incr Urut2

Select Case Urut
Case 1 : Nilai = Angka
Lcd Angka

Case 2 : Nilai = Nilai * 10
Nilai = Nilai + Angka
Lcd Angka
Valusia = Nilai

Case 3 : Nilai = Nilai * 10
Nilai = Nilai + Angka
Lcd Angka
Valusia = Nilai

Case 4 : Nilai = Nilai * 10
Nilai = Nilai + Angka
Lcd Angka
Valusia = Nilai

Case 5 : Nilai = Nilai * 10
Nilai = Nilai + Angka
Lcd Angka
Urut2 = 0
Locate 2 , 1
Valusia = Nilai
End Select
End Sub

Datain2:
Cls
Cursor Blink
Cursor On
Locate 1 , 1
Lcd "Tnput Usia:"
Locate 2 , 1
Cursor Blink
Cursor On
Waitms 200
Return

'================================================

Inputdata3:

Cls
Locate 1 , 1
Lcd "Tekan A atau B"
Locate 2 , 1
Lcd "A:Male" ; " " ; "B:Female"

Gosub Keypad3

'Baca Keypad
Sub Keypad3()
Kode3 = 0
Urut3 = 0
Flag3 = 0

I3 = 0

Do

For I3 = 0 To 20000

'KOLOM 1
Portd = &B11101111

'tombol A
If Pind.0 = 0 Then
Waitms 200
Valgender = 1

Cls
Goto Inputdata4

Elseif Pind.1 = 0 Then
Waitms 200

Elseif Pind.2 = 0 Then
Waitms 200

'tombol *
Elseif Pind.3 = 0 Then
Waitms 200

End If

'KOLOM 2
Portd = &B11011111
If Pind.0 = 0 Then
Waitms 200

Elseif Pind.1 = 0 Then
Waitms 200

Elseif Pind.2 = 0 Then
Waitms 200

Elseif Pind.3 = 0 Then
Waitms 200
End If

'KOLOM 3
Portd = &B10111111
If Pind.0 = 0 Then
Waitms 200

Elseif Pind.1 = 0 Then
Waitms 200

Elseif Pind.2 = 0 Then
Waitms 200

'tombol #
Elseif Pind.3 = 0 Then
Waitms 200

End If

'KOLOM 4
Portd = &B01111111

If Pind.0 = 0 Then
Waitms 200

' tombol B
Elseif Pind.1 = 0 Then
Waitms 200
Valgender = 2

Cls
Goto Inputdata4

'tombol C
Elseif Pind.2 = 0 Then
Waitms 200

'tombol D
Elseif Pind.3 = 0 Then
Waitms 200

End If

Next
Loop

End Sub

'================================================

Inputdata4:

Do

Upperline
Lcd "Level Aktivitas"

If Tombol1 = 0 Then
Waitms 200
Aktifitas = 1.200
Cls
Upperline
Lcd "Tidak Aktif"
Wait 3
Cls
Goto Inputdata5

Elseif Tombol2 = 0 Then
Waitms 200
Aktifitas = 1.375
Cls
Upperline
Lcd "Aktifitas Ringan"
Wait 3
Cls
Goto Inputdata5

Elseif Tombol3 = 0 Then
Waitms 200
Aktifitas = 1.550
Cls
Upperline
Lcd "Aktifitas Sedang"
Wait 3
Cls
Goto Inputdata5

Elseif Tombol4 = 0 Then
Waitms 200
Aktifitas = 1.725
Cls
Upperline
Lcd "Aktifitas Berat"
Wait 3
Cls
Goto Inputdata5

End If

Loop

'===========================================

Inputdata5:
Wait 1

Cls
Start Adc

Gosub Keypad5

'Baca Keypad
Sub Keypad5()
Kode5 = 0
Urut5 = 0
Flag5 = 0

I5 = 0

Do
'kalibrasi loadcell

Dataadc = Getadc(0)

Upperline
Lcd "Berat = " ; Dataadc

For I5 = 0 To 20000

'KOLOM 1
Portd = &B11101111

'tombol A
If Pind.0 = 0 Then
Waitms 200


Elseif Pind.1 = 0 Then
Waitms 200

Elseif Pind.2 = 0 Then
Waitms 200

'tombol *
Elseif Pind.3 = 0 Then
Waitms 200

End If

'KOLOM 2
Portd = &B11011111
If Pind.0 = 0 Then
Waitms 200

Elseif Pind.1 = 0 Then
Waitms 200

Elseif Pind.2 = 0 Then
Waitms 200

Elseif Pind.3 = 0 Then
Waitms 200
End If

'KOLOM 3
Portd = &B10111111
If Pind.0 = 0 Then
Waitms 200

Elseif Pind.1 = 0 Then
Waitms 200

Elseif Pind.2 = 0 Then
Waitms 200

'tombol #
Elseif Pind.3 = 0 Then
Waitms 200
Goto Proses

End If

'KOLOM 4
Portd = &B01111111

If Pind.0 = 0 Then
Waitms 200

' tombol B
Elseif Pind.1 = 0 Then
Waitms 200

'tombol C
Elseif Pind.2 = 0 Then
Waitms 200

'tombol D
Elseif Pind.3 = 0 Then
Waitms 200

End If

Next
Loop

End Sub

'================================================

Proses:
Cls

If Valgender = 1 Then
Male1 = 13.7516 * Dataadc
Male2 = 5.003 * Valtinggi
Male3 = 6.7550 * Valusia
Bmrmale = 66.4730 + Male1
Bmrmale = Bmrmale + Male2
Bmrmale = Bmrmale - Male3
Hasil = Bmrmale * Aktifitas
W = "Pria"

Elseif Valgender = 2 Then
Female1 = 9.5634 * Dataadc
Female2 = 1.8496 * Valtinggi
Female3 = 4.6756 * Valusia
Bmrfemale = 655.0955 + Female1
Bmrfemale = Bmrfemale + Female2
Bmrfemale = Bmrfemale - Female3
Hasil = Bmrfemale * Aktifitas
W = "Wanita"

End If

Do

Upperline
Lcd "Hasil Kalori"
Lowerline
Lcd W ; " " ; Fusing(hasil , "#.###")

Loop





f. VIDEO HASILNYA










Membuat Alat Blood Shaker dengan Load Cell , Solenoid Valve dan Motor Stepper

Membuat Alat Blood Shaker dengan Load Cell, Solenoid Valve dan Motor Stepper


          Pada malam ini adalah malam penuh kebimbangan dan sakit yang begitu mendalam, tapi tak mengapa semuanya kan baik2 saja. Kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat blood shaker menggunakan beberapa komponen utama yaitu motor stepper, load cell dan solenoid valve, jadi prinsip kerjanya yaitu alat akan nge-shake selama nilai berat belum terpenuhi, tapi jika nilai berat sudah terpenuhi maka alat akan berhenti dan membunyikan alarm.


 
a. Minimum System dan Skema





b. Driver Stepper





c. Load Cell + Amplifier INA114







d. Solenoid Valve 





e. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Ddrb = &B11111111

'relay
Ddrc.1 = 1

'led
Ddrd.0 = 1
Ddrd.1 = 1
Ddrd.2 = 1

'buzzer
Ddrd.3 = 1

'button
Ddrd.7 = 0
Ddrd.4 = 0
Ddrd.5 = 0

Set Portd.7
Set Portd.4
Set Portd.5

Cls
Cursor Off

Dim Dataadc As Word
Dim A As Integer
A = 0

Start Adc

Menu:

Portd.3 = 1
Wait 3
Portd.3 = 0

Do
Portc.1 = 1

Portd.0 = 1
Portd.1 = 1
Portd.2 = 1

Upperline
Lcd "PILIH MENU"

If Pind.4 = 0 Then
Upperline
Lcd "Dipilih Shake "
Lowerline
Lcd "Sampai 250 ml"
Wait 3
Goto Shake250

Elseif Pind.7 = 0 Then
Upperline
Lcd "Dipilih Shake "
Lowerline
Lcd "Sampai 350 ml"
Wait 3
Goto Shake350

Elseif Pind.5 = 0 Then
Upperline
Lcd "Dipilih Shake "
Lowerline
Lcd "Sampai 450 ml"
Wait 3
Goto Shake450

End If

Loop

Shake250:
Cls
Portd.0 = 0
Portd.1 = 1
Portd.2 = 1

Portc.1 = 0

Do

Dataadc = Getadc(7)

Locate 1 , 1
Lcd Dataadc

Portb = &B00000001
Waitms 15

Portb = &B00000010
Waitms 15

Portb = &B00000100
Waitms 15

Portb = &B00001000
Waitms 15

Loop Until Dataadc >= 400 And Dataadc <= 415

Goto Menu

Return

Shake350:
Cls
Portd.0 = 1
Portd.1 = 0
Portd.2 = 1

Portc.1 = 0

Do

Dataadc = Getadc(7)

Locate 1 , 1
Lcd Dataadc

Portb = &B00000001
Waitms 15

Portb = &B00000010
Waitms 15

Portb = &B00000100
Waitms 15

Portb = &B00001000
Waitms 15

Loop Until Dataadc >= 380 And Dataadc <= 395

Goto Menu

Return

Shake450:
Cls
Portd.0 = 1
Portd.1 = 1
Portd.2 = 0

Portc.1 = 0

Do

Dataadc = Getadc(7)

Locate 1 , 1
Lcd Dataadc

Portb = &B00000001
Waitms 15

Portb = &B00000010
Waitms 15

Portb = &B00000100
Waitms 15

Portb = &B00001000
Waitms 15

Loop Until Dataadc >= 370 And Dataadc <= 380

Goto Menu
Return




f. VIDEO HASILNYA










Mengakses Sensor Magnetometer dan Servo Menggunakan Arduino

Mengakses Sensor Magnetometer dan Servo Menggunakan Arduino


                   Malam ini saya akan menjelaskan mengenai bagaimana cara mengakses sensor magnetometer dan servo menggunakan arduino, alat yang akan dibuat ini aplikasinya yaitu untuk penunjukan arah mata angin utara dan selatan, jadi alat ini akan memberikan arah posisi utara dan selatan dimanapun berada sehingga akan memudahkan orang dalam melangkah. Alat ini bagus dipakai untuk nelayan atau orang yang lagi berada di hutan, sehingga jika ingin melihat arah utara hanya perlu melihat alat dan mengikuti petunjuknya, alat penunjuk menggunakan motor servo dan sensor untuk menentukan arah utara dan selatan adalah sensor HMC5883L. Untuk lebih jelasnya berikut penjelasan program dan skemanya.



1. Arduino Uno




b. Sensor HMC5883L




c. Motor Servo




d. Program Arduino

#include <Wire.h> //I2C Arduino Library
#include <Servo.h>
#define addr 0x1E //I2C Address for The HMC5883

Servo servo1; Servo servo2;

void setup(){
 
  Serial.begin(9600);
  Wire.begin();
 
  Wire.beginTransmission(addr); //start talking
  Wire.write(0x02); // Set the Register
  Wire.write(0x00); // Tell the HMC5883 to Continuously Measure
  Wire.endTransmission();
 
  pinMode(13,OUTPUT);
  servo1.attach(14); //analog pin 0
  servo2.attach(15); //analog pin 1

}

void loop(){
 
  int x,y,z; //triple axis data

  //Tell the HMC what regist to begin writing data into
  Wire.beginTransmission(addr);
  Wire.write(0x03); //start with register 3.
  Wire.endTransmission();
 

 //Read the data.. 2 bytes for each axis.. 6 total bytes
  Wire.requestFrom(addr, 6);
  if(6<=Wire.available()){
    x = Wire.read()<<8; //MSB  x
    x |= Wire.read(); //LSB  x
    z = Wire.read()<<8; //MSB  z
    z |= Wire.read(); //LSB z
    y = Wire.read()<<8; //MSB y
    y |= Wire.read(); //LSB y
  }
 
  // Show Values
  Serial.print("X Value: ");
  Serial.println(x);
  Serial.print("Y Value: ");
  Serial.println(y);
  Serial.print("Z Value: ");
  Serial.println(z);
  Serial.println();
  
  delay(500);
 
  if ((y >= 400) && (y <= 600)) {
    servo1.write(85);
    servo2.write(85);
    digitalWrite(13, HIGH);
  }
 
  else if ((y >= -550) && (y <= -400)) {
    servo1.write(85);
    servo2.write(85);
    digitalWrite(13, LOW);
   
  }
 
  else
  {
   servo1.write(200);
   servo2.write(200); 
  
   digitalWrite(13, HIGH);
 
  }
  }



e. Cara Penggunaan Alat

            Hubungkan alat dengan supply adaptor 12 volt, kemudian untuk supply servo 5 volt menggunakan UBEC 3A sehingga jalannya lebih stabil dan tidak panas, kemudian baca nilai output dari sensor HMC5883L, jika sudah ditentukan nilai untuk utara dan selatan maka upload program arduino dan uji coba menggunakan motor servo. jika diarahkan ke utara harusnya dia akan menghadap keutara, kemudian hadapkan sensor ke barat, harusnya servo tetap akan menunjuk arah utara, begitu seterunya, dan jika sensor menunjuk arah selatan maka led arduino akan hidup.








Membuat Alat Monitoring Gas Menggunakan AVR dan VB.NET / visual studio 2010 - MS. ACCESS 2007 VIA BLUETOOTH

Membuat Alat Monitoring Gas Menggunakan AVR dan VB.NET / visual studio 2010 - MS. ACCESS 2007 VIA BLUETOOTH


          Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang digunakan untuk monitoring gas menggunakan komputer dengan interface visual studio, media transfer data yang digunakan adalah bluetooth dengan baudrate 9600. alat ini menggunakan mikrokontroller ATMega16 dan bluetooth HC-05. jadi alat ini akan mengirimkan data gas yang masih berbentuk nilai ADC satu detik sekali, kemudian di interface visual studio akan menampilkan nilai gas, jam dan tanggal, setelah menampilkan maka akan disimpan secara otomatis di database microsoft access 2007. untuk lebih jelasnya berikut program dan skemanya.

Software pairing bluetooth HC-05 ( Bluesoleil )
Download Link

Tutorial Pairing Bluetooth
https://www.youtube.com/watch?v=FVIUOoE9GNo



a. Minimum System




b. Sensor Gas 




c. Bluetooth HC-05



d. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Dataadc As Word

Start Adc

Do

Dataadc = Getadc(0)

Print Dataadc

Wait 1
Loop



e. Program VB.NET



Public Class Form1
    Dim WithEvents SerialPort As New IO.Ports.SerialPort
    Dim con As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    Sub connectDB()
        con.Open("provider=microsoft.jet.oledb.4.0;data source=Database1.mdb")
        rs.Open("Select * From tblgas", con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'Database1DataSet.tblgas' table. You can move, or remove it, as needed.
        Me.TblgasTableAdapter.Fill(Me.Database1DataSet.tblgas)
        ConnectSerial()
    End Sub

    Private Sub ConnectSerial()
        Try
            SerialPort.BaudRate = 9600
            SerialPort.PortName = "COM5" 'notice how the ports are named? they HAVE to have COM in front of the number
            SerialPort.Open()
        Catch
            SerialPort.Close()
        End Try
    End Sub

    Delegate Sub myMethodDelegate(ByVal [text] As String)
    Dim myD1 As New myMethodDelegate(AddressOf myShowStringMethod)

    Sub myShowStringMethod(ByVal myString As String)
        'display text to our textbox called SerialText
        SerialText.AppendText(myString)
        gastxt.Text = SerialText.Text

    End Sub

    Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
        Dim str As String = SerialPort.ReadExisting()
        Invoke(myD1, str)
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Call connectDB()
        rs.AddNew()
        rs(0).Value = gastxt.Text
        rs(1).Value = TextBox4.Text
        rs(2).Value = TextBox5.Text
        rs.Update()
        con.Close()

        SerialText.Text = " "
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        TextBox5.Text = Format(Now, "dd / MMM / yyyy")
        TextBox4.Text = Format(Now, "HH:mm:ss")

    End Sub

End Class




f. Tampilan Database





g. VIDEO TUTORIAL

    Link = https://www.youtube.com/watch?v=qN3GyEa-efU




h. VIDEO HASILNYA







Membuat Alat Simulasi Matematika Relasi dan Fungsi

Membuat Alat Simulasi Matematika Relasi dan Fungsi


       Pagi yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat peraga untuk guru matematika tentang Relasi dan Fungsi, jadi desain alat seperti gambar diatas yang mana terdapat 4 buah anggota domain dan 16 buah anggota kodomain. ada dua buah led dan dua buah push button. sistem kerjanya seperti berikut.

Konsep Materi Relasi dan Fungsi
•    Relasi dari himpunan domain ke himpunan kodomain adalah aturan yang memasangan anggota himpunan domain dan anggota himpunan kodomain dengan aturan tertentu   

•    Fungsi/pemetaan dari himpunan domain ke himpunan kodomain adalah relasi yang memasangkan setiap anggota himpunan domain dengan tepat satu anggota himpunan kodomain   

Keterangan Alat Peraga
•    Jika tombol fungsi yang ditekan hanya fungsi yang berlaku
•    Jika tombol Relasi yang ditekan hanya relasi yang berlaku
•    Untuk fungsi, jika suatu fungsi maka akan ditunjukkan oleh lampu indikator hijau, dan jika bukan fungsi maka lampu indikator tidak menyala
•    jika suatu Relasi maka akan ditunjukkan oleh lampu indikator merah, dan jika bukan relasimaka lampu indikator tidak menyala
•    Untuk relasi, tidak ada batasan banyaknya kabel dari domain menuju kodomain
•    Untuk fungsi, kabel dari domain menuju kodomain satu kabel yang menuju ke tepat satu menuju kodomain (tunggal)
•    Jika ada domain yang menggunakan lebih dari satu kabel sebagai penghubung dan satu domain dapat menyalakan dua lampu maka hanya disebut sebagai relasi
•    Tanda panah adalah kabel yang menghubungkan sekaligus menunjukkan relasi ataupun fungsi







1. Skema Rangkaian




2. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600

Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Cls
Cursor Off

'adc0 = 1023
'adc1 = 686
'adc2 = 343
'adc3 = 0

Config Adc = Single , Prescaler = Auto , Reference = Avcc

'led merah
Ddrb.0 = 1
'led hijau
Ddrb.1 = 1

'button merah relasi
Ddrb.2 = 0
'button merah fungsi
Ddrb.3 = 0

Dim Dataadc0 As Word
Dim Dataadc1 As Word
Dim Dataadc2 As Word
Dim Dataadc3 As Word

Set Portb.2
Set Portb.3

Start Adc

Main:

Do
Cls
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 1
Portb.1 = 0

If Pinb.2 = 0 Then
Cls
Goto Relasi

Elseif Pinb.3 = 0 Then
Cls
Goto Fungsi

End If

Loop

Relasi:

Do

Dataadc0 = Getadc(0)
Dataadc1 = Getadc(1)
Dataadc2 = Getadc(2)
Dataadc3 = Getadc(3)

If Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 680 And Dataadc0 < 690 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 340 And Dataadc0 < 500 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 < 10 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 1000 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 340 And Dataadc1 < 500 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 < 10 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 680 And Dataadc2 < 690 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 < 10 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 340 And Dataadc3 < 500 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Kurang Dari"

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Setengah Dari"

Elseif Dataadc0 > 1000 And Dataadc1 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Faktor Dari"

Elseif Dataadc3 > 1000 And Dataadc2 > 1000 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "Relasi "
Lowerline
Lcd "Lebih Dari"

Else

Ddrb.0 = 0
Ddrb.1 = 0
Portb.0 = 0
Portb.1 = 0

Upperline
Lcd "SALAH "
Lowerline
Lcd "Bukan Relasi"

End If

If Pinb.3 = 0 Then
Wait 1
Goto Main
End If

Loop

Return

'===============================

Fungsi:

Do

Dataadc0 = Getadc(0)
Dataadc1 = Getadc(1)
Dataadc2 = Getadc(2)
Dataadc3 = Getadc(3)

If Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 1000 And Dataadc1 > 1000 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 680 And Dataadc3 < 690 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 1000 And Dataadc1 > 1000 And Dataadc2 > 1000 And Dataadc3 > 1000 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 680 And Dataadc0 < 690 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 680 And Dataadc2 < 690 And Dataadc3 > 680 And Dataadc3 < 690 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 340 And Dataadc0 < 500 And Dataadc1 > 340 And Dataadc1 < 500 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 340 And Dataadc3 < 500 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "

Elseif Dataadc0 < 10 And Dataadc1 < 10 And Dataadc2 < 10 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "

Elseif Dataadc0 > 680 And Dataadc0 < 690 And Dataadc1 > 1000 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "

Elseif Dataadc0 < 10 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 1000 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 1000 And Dataadc1 > 680 And Dataadc1 < 690 And Dataadc2 > 340 And Dataadc2 < 500 And Dataadc3 > 340 And Dataadc3 < 500 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Elseif Dataadc0 > 1000 And Dataadc1 > 340 And Dataadc1 < 500 And Dataadc2 > 680 And Dataadc2 < 690 And Dataadc3 < 10 Then
Ddrb.0 = 1
Ddrb.1 = 1
Portb.0 = 0
Portb.1 = 1

Upperline
Lcd "FUNGSI "
Lowerline
Lcd ""

Else

Ddrb.0 = 0
Ddrb.1 = 0
Portb.0 = 0
Portb.1 = 0

Upperline
Lcd "BUKAN FUNGSI "

Waitms 200

End If

If Pinb.2 = 0 Then
Wait 1
Goto Main
End If

Loop

Return




3. VIDEO HASILNYA












Membuat Alat HeartRate / HeartBeat (BPM) , Respiration Rate, dan Suhu Tubuh

Membuat Alat HeartRate / HeartBeat (BPM) , Respiration Rate, dan Suhu Tubuh


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat untuk monitoring HeartBeat / HeartRate, Respiration Rate dan suhu tubuh, alat ini menggunakan sensor finger clip dan amplifier pendukung untuk heartbeat yang mana outputnya berupa sinyal kotak, untuk respiration rate menggunakan sensor suara dan micondenser yang outputnya berupa tegangan, terakhir yaitu suhu tubuh menggunakan sensor LM35 yang sudah umum digunakan. BPM dan RR digunakan sampling 100 ms selama satu menit. untuk lebih jelasnya berikut program dan skemanya.


a. Minimum System





b. Finger clip






c. Sensor Suara





d. Sensor Suhu LM35





e. Program Bascom AVR

$regfile = "m8535.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portc.7 , E = Portc.6 , Db4 = Portc.5
Config Lcdpin = Pin , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2
Config Lcd = 16 * 2

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Databpm As Word
Dim Dataadc As Word
Dim Datarr As Word

Dim Suhu As Single

Dim A As Integer
Dim B As Integer
Dim C As Integer

Dim W As Integer
Dim Y As Integer
Dim Z As Integer

Ddrd.5 = 0
Set Portd.5

A = 0
B = 0
C = 0

W = 0
Y = 0
Z = 0

Cls
Cursor Off

Start Adc

Do

If Pind.5 = 0 Then
Cls
Waitms 200

Do
Databpm = Getadc(0)

If Databpm > 300 And A = 0 Then
Incr B
A = 1
End If

If Databpm < 300 And A = 1 Then
A = 0
End If

Waitms 100

Upperline
Lcd "Detak = " ; B

Incr C

Loop Until C = 600
Cls

Wait 1

Do
Datarr = Getadc(2)

If Datarr < 1000 And Z = 0 Then
Incr Y
Z = 1
End If

If Datarr > 1000 And Z = 1 Then
Z = 0
End If

Waitms 100

Upperline
Lcd "RR = " ; Y

Incr W

Loop Until W = 600
Cls

Dataadc = Getadc(1)

Suhu = Dataadc * 5
Suhu = Suhu / 1023
Suhu = Suhu * 100

Print "BPM = " ; B
Print "SUHU = " ; Fusing(suhu , "#.#")
Print "Respiration Rate = " ; Y
Print ""

Upperline
Lcd "BPM = " ; B ; " RR = " ; Y
Lowerline
Lcd "Suhu = " ; Fusing(suhu , "#.#")

Wait 10

A = 0
B = 0
C = 0

W = 0
Y = 0
Z = 0

Cls

Else

Upperline
Lcd "Tekan START"

End If

Loop





f. Cara Penggunaan Alat

           Pertama hubungkan alat dengan power supply, kemudian pasangkan finger clip ke jari telunjuk dan respiration rate ke hidung, lalu sensor suhu tubuh diletakkan di antara ketiak. setelah semua terpasang, tekan tombol start untuk memulai pengukuran, jika telah selesai pengukuran maka akan ada tampilan hasilnya seperti hasil BPM, RR dan suhunya pada LCD.






Membuat JAM DIGITAL dilengkapi SET ALARM dan STOPWATCH menggunakan ARDUINO

Membuat JAM DIGITAL dilengkapi SET ALARM dan STOPWATCH menggunakan ARDUINO


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang memiliki fitur jam digital, setting alarm dan stopwatch, sistem kerjanya yaitu alat ini menggunakan Arduino sebagai kendali atau kontroller yang akan mengakses RTC, buzzer dan tombol. terdapat 5 buah tombol yang akan digunakan sebagai selektor menu dan kendali tampilan, buzzer sebagai output alarmnya dan RTC sebagai pemberi data jam dan tanggal. Untuk tampilan display menggunakan LCD 16x2 dengan backlight warna kuning. untuk lebih jelasnya berikut program dan skema alatnya.



a. Arduino UNO





b. LCD Display 16x2






c. RTC DS1307



*KET :
SCL = PIN A5
SDA = PIN A4




d. PUSH BUTTON






e. BUZZER






f. Program Arduino IDE

#include "Wire.h"
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
  return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return( (val/16*10) + (val%16) );
}

const int buttonPin1 = A0;     // the number of the pushbutton pin
const int buttonPin2 = A1;     // the number of the pushbutton pin
const int buttonPin3 = A2;     // the number of the pushbutton pin
const int buttonPin4 = 9;     // the number of the pushbutton pin
const int buttonPin5 = 10;     // the number of the pushbutton pin

int buttonState1 = 0;       
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonState5 = 0;

int a = 0;
int mmz = 0;
int detz = 0;
int menz = 0;
int jamz = 0;

int stm = 0;
int stj = 0;
int savestj = 0;
int savestm = 0;

void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
  Wire.begin();
  pinMode(8, OUTPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(buttonPin4, INPUT);
  pinMode(buttonPin5, INPUT);
 
 
  //Serial.begin(9600);
  // set the initial time here:
  // DS3231 seconds, minutes, hours, day, date, month, year
  // setDS3231time(0,12,02,2,5,1,16);
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
{
  // sets time and date data to DS3231
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set next input to start at the seconds register
  Wire.write(decToBcd(second)); // set seconds
  Wire.write(decToBcd(minute)); // set minutes
  Wire.write(decToBcd(hour)); // set hours
  Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
  Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
  Wire.write(decToBcd(month)); // set month
  Wire.write(decToBcd(year)); // set year (0 to 99)
  Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set DS3231 register pointer to 00h
  Wire.endTransmission();
  Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
  // request seven bytes of data from DS3231 starting from register 00h
  *second = bcdToDec(Wire.read() & 0x7f);
  *minute = bcdToDec(Wire.read());
  *hour = bcdToDec(Wire.read() & 0x3f);
  *dayOfWeek = bcdToDec(Wire.read());
  *dayOfMonth = bcdToDec(Wire.read());
  *month = bcdToDec(Wire.read());
  *year = bcdToDec(Wire.read());
}


void displayTime()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  // retrieve data from DS3231
  readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
  &year);
  // send it to the serial monitor
  lcd.setCursor(0, 0);
  lcd.print(hour, DEC);
  // convert the byte variable to a decimal number when displayed
  lcd.print(":");
  if (minute<10)
  {
    lcd.print("0");
  }
  lcd.print(minute, DEC); 
  lcd.print(":");
  if (second<10)
  {
    lcd.print("0");
  }
  lcd.print(second, DEC);
 
  lcd.setCursor(0, 1);
  lcd.print(dayOfMonth, DEC);
  lcd.print("/");
  lcd.print(month, DEC);
  lcd.print("/");
  lcd.print(year, DEC);

  if ((hour == savestj) && (minute == savestm)) {
  digitalWrite(8, HIGH);
  }

}

void loop()
{
  digitalWrite(8, LOW);

  mmz = 0;
  detz = 0;
  menz = 0;
  jamz = 0;
 
  stj = savestj;
  stm = savestm;
    
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);

  if ( buttonState2 == LOW ){
  delay(200);
  a = a + 1;
  
  if ( a > 2 ) {
  a = 0;
  } else if (a < 0) {
  a = 2;
  }
 
  }
 
  else if ( buttonState3 == LOW ) {
  delay(200);
  a = a - 1;
  
  if ( a > 2 ) {
  a = 0;
  } else if (a < 0) {
  a = 2;
  }
 
  }

 
  if ( a == 0 ) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("PILIH MENU");
  lcd.setCursor(0, 1);
  lcd.print(" JAM ");
  delay(500);
       
  }

  else if ( a == 1 ) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("PILIH MENU");
  lcd.setCursor(0, 1);
  lcd.print(" SET ALARM ");
  delay(500);
  }

  else if ( a == 2 ) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("PILIH MENU");
  lcd.setCursor(0, 1);
  lcd.print(" STOPWATCH ");
  delay(500);
  }
  
  if (( buttonState5 == LOW ) && ( a == 0 )) {
  lcd.clear();
 
  while ( buttonState1 == HIGH ) 
  {
    delay(200);
    buttonState1 = digitalRead(buttonPin1);
    displayTime();
      
  }
     
  }
 
 
  if (( buttonState5 == LOW ) && ( a == 1 )) {
  lcd.clear();
 
  while ( buttonState1 == HIGH ) 
  {
   
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);

  lcd.setCursor(0, 0);
  lcd.print("Set Jam : ");
  lcd.print(stj);
  lcd.setCursor(0, 1);
  lcd.print("Set Menit : ");
  lcd.print(stm); 
  delay(200);
 
  if ( buttonState3 == LOW ){
  stj = 0;
  stm = 0;
  lcd.clear(); 
  }
  else if ( buttonState4 == LOW ){
  stj = stj + 1;
  lcd.clear(); 
  }
  else if ( buttonState5 == LOW ){
  stm = stm + 1;
  lcd.clear(); 
  }
  else if ( buttonState1 == LOW ){
  savestm = stm;
  savestj = stj;
  }

   }     
  }
 
 
  if (( buttonState5 == LOW ) && ( a == 2 )) {
  lcd.clear();
 
  while ( buttonState1 == HIGH ) 
  {
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);
     
  mmz = mmz + 1;
  delay(10);
 
  if (mmz == 100) {
  detz = detz + 1;
  mmz = 0;
  }
  if (detz == 60) {
  menz = menz + 1;
  detz = 0;
  } 
  if (menz == 60) {
  jamz = jamz + 1;
  menz = 0;
  } 
   
  lcd.setCursor(0, 0);
  lcd.print(jamz);
  lcd.print(":");
  lcd.print(menz);
  lcd.print(":");
  lcd.print(detz);
  lcd.print(":");
  lcd.print(mmz);
 
  if ( buttonState4 == LOW ){
  delay(200);
  while (buttonState3 == HIGH)
  { 
  lcd.setCursor(0, 0);
  lcd.print(jamz);
  lcd.print(":");
  lcd.print(menz);
  lcd.print(":");
  lcd.print(detz);
  lcd.print(":");
  lcd.print(mmz);
  delay(1000);
  buttonState3 = digitalRead(buttonPin3);
  buttonState1 = digitalRead(buttonPin1);

 
  }
   
  }
      
  }
       
  } 
}

 


  
g. VIDEO HASILNYA