Translate

Mengakses RFID ID-12 Menggunakan Arduino dan Interface Visual Basic 6.0

Mengakses RFID ID-12 Menggunakan Arduino dan Interface Visual Basic 6.0


              Kali ini saya akan menjelaskan mengenai bagaimana cara mengekases RFID Reader ID-12 menggunakan Arduino dengan interface yaitu visual basic 6.0, jadi prinsip kerjanya yaitu mengambil data dari tag card kemudian dikirimkan ke komputer atau interface VB 6 menggunakan Arduino. jadi Arduino hanya berfungsi untuk mengambil data atau membaca data dari tag card yang selanjutnya dikirimkan ke komputer dan diolah di program interface. untuk lebih jelasnya berikut adalah program dan skemanya. 



 a. Arduino Mega




b. RFID ID-12




c. Program Arduino

 void setup() {
  Serial.begin(9600);                                 // connect to the serial port
}

void loop () {
  byte i = 0;
  byte val = 0;
  byte code[6];
  byte checksum = 0;
  byte bytesread = 0;
  byte tempbyte = 0;

  if(Serial.available() > 0) {
    if((val = Serial.read()) == 2) {                  // check for header
      bytesread = 0;
      while (bytesread < 12) {                        // read 10 digit code + 2 digit checksum
        if( Serial.available() > 0) {
          val = Serial.read();
          if((val == 0x0D)||(val == 0x0A)||(val == 0x03)||(val == 0x02)) { // if header or stop bytes before the 10 digit reading
            break;                                    // stop reading
          }

          // Do Ascii/Hex conversion:
          if ((val >= '0') && (val <= '9')) {
            val = val - '0';
          } else if ((val >= 'A') && (val <= 'F')) {
            val = 10 + val - 'A';
          }

          // Every two hex-digits, add byte to code:
          if (bytesread & 1 == 1) {
            // make some space for this hex-digit by
            // shifting the previous hex-digit with 4 bits to the left:
            code[bytesread >> 1] = (val | (tempbyte << 4));

            if (bytesread >> 1 != 5) {                // If we're at the checksum byte,
              checksum ^= code[bytesread >> 1];       // Calculate the checksum... (XOR)
            };
          } else {
            tempbyte = val;                           // Store the first hex digit first...
          };

          bytesread++;                                // ready to read next digit
        }
      }

      // Output to Serial:

      if (bytesread == 12) {                          // if 12 digit read is complete
        //Serial.print("5-byte code: ");
        for (i=0; i<5; i++) {
          if (code[i] < 16) Serial.print("0");
          Serial.print(code[i], HEX);
         // Serial.print(" ");
        }
        Serial.println();

        //Serial.print("Checksum: ");
        //Serial.print(code[5], HEX);
        //Serial.println(code[5] == checksum ? " -- passed." : " -- error.");
        //Serial.println();
      }

      bytesread = 0;
    }
  }
}



 d. Program Interface VB 6.0


 

FORM 1

Private Sub cmdConnect_Click()

Dim port As Integer
On Error GoTo errcode

If MSComm1.PortOpen = False Then
    MSComm1.CommPort = Combo1.ListIndex + 1
    MSComm1.RThreshold = 1
    MSComm1.InputLen = 0
    MSComm1.Settings = Combo2.List(Combo2.ListIndex) & ",N,8,1"
    MSComm1.PortOpen = True
cmdConnect.Enabled = False
cmdDisconnect.Enabled = True
End If

Exit Sub

errcode:
    MsgBox "Port Salah !", vbOKOnly, "Peringatan"
    Combo1.SetFocus


End Sub

Private Sub cmdDisconnect_Click()
If MSComm1.PortOpen = True Then
    MSComm1.PortOpen = False
End If
cmdConnect.Enabled = True
cmdDisconnect.Enabled = False

End Sub

Private Sub Command3_Click()
Form2.Show

End Sub

Private Sub Command4_Click()
Unload Me
Unload Form2

End Sub

Private Sub Form_Load()
Dim i As Byte
For i = 1 To 16
Combo1.AddItem (i)
Next i
With Combo2
        .AddItem "2400"
        .AddItem "4800"
        .AddItem "9600"
        .AddItem "19200"
        .AddItem "38400"
        .AddItem "56600"
       
End With
Timer1.Enabled = False
cmdConnect.Enabled = True
cmdDisconnect.Enabled = False

End Sub

Private Sub Timer1_Timer()
MSComm1_OnComm
End Sub

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

FORM 2

Private Sub Form_Load()
 Form2.Timer2.Enabled = True

End Sub


Private Sub Timer2_Timer()
Dim data As String
        Dim buffer As String
        If Form1.MSComm1.InBufferCount > 0 Then
       
       
        buffer = Form1.MSComm1.Input
        data = Mid$(buffer, 2, 12)

        Form2.Text1.Text = data
        'Form1.MSComm1.Output = "A" & Chr$(13)
             
        End If

End Sub

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




e. VIDEO HASILNYA











Cara Mengubah Resolusi ADC Mikrokontroller 10 Bit (1024) Menjadi 8 Bit (256) Bascom AVR

Cara Mengubah Resolusi ADC Mikrokontroller 10 Bit (1024) Menjadi 8 Bit (256) Bascom AVR


       Kali ini saya akan menjelaskan mengenai bagaimana cara merubah resolusi ADC mikrokontroller ATMega menggunakan bahasa Bascom AVR, jadi prinsip kerjanya merubah resolusi adc yang dari 0 - 1023 menjadi resolusi 0 - 255. Disini dicontohkan menggunakan potensiometer sebagai sensor yang akan membuktikan resolusi adc, jika biasanya setting default adc adalah 10 bit harusnya 0 - 1023 maka sekarang dirubah menjadi 0 - 255. Kegunaan adc resolusi ini yaitu bisa digunakan untuk setting pwm 8 bit atau untuk setting port 8 bit sesuai kebutuhan. untuk lebih jelasnya berikut adalah skema dan programnya.



a. Minimum System 

 


b. Potensiometer




c.  Rangkaian RS232




d. Program Bascom AVR

$regfile = "m8535.dat"
$crystal = 11059200
$baud = 9600

$hwstack = 64
$swstack = 64
$framesize = 64

'map(value, fromLow, fromHigh, toLow, toHigh)
Declare Function Map(byval X As Word , Byval In_min As Word , Byval In_max As Word , Byval Out_min As Word , Byval Out_max As Word ) As Word

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

Dim H As Word
Dim Dataadc As Word

Start Adc

Do
Dataadc = Getadc(0)

   H = Map(dataadc , 0 , 1023 , 0 , 255)
   Print H

Waitms 200

Loop
End

Function Map(byval X As Word , Byval In_min As Word , Byval In_max As Word , Byval Out_min As Word , Byval Out_max As Word ) As Word
   Local A As Single
   Local B As Single
   A = X - In_min
   B = Out_max - Out_min
   A = A * B
   B = In_max - In_min
   A = A / B
   Map = A + Out_min
End Function




e. Video Hasilnya









Jual Alat Kendali Motor DC 3 Channel X Y Z

Jual Alat Kendali Motor DC 3 Channel X Y Z


       Kami menjual alat terbaru dari kami yaitu kendali motor dc 3 channel menggunakan mikrokontroller, resolusi channel bisa 10 bit dan bisa 8 bit sesuai kebutuhan, kelebihan dari alat ini yaitu bisa dikendalikan menggunakan Android smartphone atau komputer dan juga bisa dikendalikan secara wireless tergantung media pengembangannya. alat ini cocok untuk kendali alat yang membutuhkan 3 channel XYZ seperti alat pemotong atau cutting dan lain sebagainya. Berikut adalah gambar alat dan harganya. 


Harga Rp. 950.000 ( Include Program dan Tutorialnya )















Membuat Alat Kendali 3 Buah Motor DC ( Smooth Start dan Smooth Stop )

Membuat Alat Kendali 3 Buah Motor DC ( Smooth Start dan Smooth Stop )


             Kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat untuk kendali 3 buah motor DC atau nama lainnya 3 channel. Alat ini bisa mengendalikan kecepatan putaran motor dc dan arah putarannya, maksimal arus motor dc atau arus beban adalah 2A karena menggunakan L298. Alat ini memiliki keunggulan yaitu smooth start dan smooth stop, maksudnya jika motor akan berjalan atau running, dia tidak langsung berputar cepat melainkan berjalan secara perlahan hingga mencapai kecepatan yang telah diatur menggunakan potensiometer, begitu pula dengan saat motor berhenti, motor tidak langsung berhenti melainkan akan mengurangi secara perlahan hingga dia berhenti. untuk lebih jelasnya berikut skema dan programnya.



a. Minimum System 




b. Joystick X-Y




c. Program Bascom AVR

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

'setting pwm
Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Timer2 = Pwm , , Prescale = 1024 , Compare Pwm = Clear Up

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

Dim X As Word
Dim Y As Word
Dim Z As Word

Dim A As Word
Dim B As Word
Dim G As Word
G = 0
Dim Mark As Integer
Mark = 0
Dim Jj As Integer
Dim Kk As Integer
Jj = 0
Kk = 0

Ddrc = &B11111111
Enable Timer2
Timer2 = 0
Start Timer2
Enable Interrupts

Ddrb.0 = 0
Ddrb.1 = 0

Set Portb.0
Set Portb.1


Start Adc

Main:
G = 0
Do
Portc.5 = 0
Portc.4 = 0

Ocr2 = 0

Portc.3 = 0
Portc.2 = 0

Pwm1a = 0

Portc.1 = 0
Portc.0 = 0

Pwm1b = 0

'X = Getadc(1)
'Y = Getadc(0)
'Z = Getadc(2)

A = Getadc(3)
B = Getadc(4)

'Print A
'Print B
'Waitms 200


'motor1
If A > 500 Then
Waitms 200
Portc.3 = 0
Portc.2 = 1
Goto Startup1

Elseif A < 10 Then
Waitms 200
Portc.3 = 1
Portc.2 = 0
Goto Startup1

Else
Portc.3 = 0
Portc.2 = 0

Pwm1a = 0

End If


'motor2
If B > 500 Then
Waitms 200
Portc.1 = 0
Portc.0 = 1
Goto Startup2

Elseif B < 10 Then
Waitms 200
Portc.1 = 1
Portc.0 = 0
Goto Startup2

Else
Portc.1 = 0
Portc.0 = 0
Pwm1b = 0

End If


'motor 3
If Pinb.0 = 0 Then
Waitms 200
Portc.5 = 1
Portc.4 = 0

Goto Startup


Elseif Pinb.1 = 0 Then
Waitms 200
Portc.5 = 0
Portc.4 = 1

Goto Startup

Else
Portc.5 = 0
Portc.4 = 0

If Z > 255 Then
Z = 255
End If

Ocr2 = Z

End If

Loop



Startup:

G = 0
Do

Z = Getadc(2)
Y = Getadc(0)

If Z > 255 Then
Z = 255
End If

If Pinb.0 = 0 Or Pinb.1 = 0 Then
G = G + 1
Ocr2 = G
End If


If G > Z Then
G = Z
Ocr2 = Z

End If

Portb.0 = 1
Portb.1 = 1
If Pinb.0 = 1 And Pinb.1 = 1 Then
Waitms 200
G = Z
Goto Stopx
End If

Waitms Y

Loop



Stopx:
Do
Y = Getadc(0)

If G < 1 Then
G = 0
Portc.5 = 0
Portc.4 = 0
Goto Main
End If


Ocr2 = G

G = G - 1

Waitms Y

Loop


Startup1:

G = 0
Do

Z = Getadc(1)
Y = Getadc(0)
A = Getadc(3)

If Z > 255 Then
Z = 255
End If

If A < 10 Or A > 500 Then
G = G + 1
Pwm1a = G
End If


If G > Z Then
G = Z
Pwm1a = Z

End If

If A > 100 And A < 500 Then
G = Z
Goto Stopx1
End If

Waitms Y

Loop



Stopx1:

Do
Y = Getadc(0)

If G < 1 Then
G = 0
Portc.3 = 0
Portc.2 = 0
Goto Main
End If


Pwm1a = G

G = G - 1

Waitms Y

Loop



Startup2:

G = 0
Do

Z = Getadc(1)
Y = Getadc(0)
B = Getadc(4)

If Z > 255 Then
Z = 255
End If

If B < 10 Or B > 500 Then
G = G + 1
Pwm1b = G
End If


If G > Z Then
G = Z
Pwm1b = Z

End If

If B > 100 And B < 500 Then
G = Z
Goto Stopx2
End If

Waitms Y

Loop



Stopx2:

Do
Y = Getadc(0)

If G < 1 Then
G = 0
Portc.1 = 0
Portc.0 = 0
Goto Main
End If


Pwm1b = G

G = G - 1

Waitms Y

Loop




d. Program 3 AXIS X Y Z

$regfile = "m32def.dat"
$crystal = 11059200
$baud = 9600

'setting pwm
Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Config Timer2 = Pwm , , Prescale = 1024 , Compare Pwm = Clear Up

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

Dim X As Word
Dim Y As Word
Dim Z As Word

Dim A As Word
Dim B As Word

Dim L As Integer
Dim K As Integer
Dim S As Integer
L = 0
K = 0
S = 0

Ddrc = &B11111111
Enable Timer2
Timer2 = 0
Start Timer2
Enable Interrupts

Ddrb.0 = 0
Ddrb.1 = 0

Set Portb.0
Set Portb.1


Start Adc

Main:

Do
'motor 3
Portc.5 = 0
Portc.4 = 0

Ocr2 = 0

'motor 1
Portc.3 = 0
Portc.2 = 0

Pwm1a = 0

'motor 2
Portc.1 = 0
Portc.0 = 0

Pwm1b = 0

X = Getadc(1)
Y = Getadc(0)
Z = Getadc(2)

A = Getadc(3)
B = Getadc(4)



'kondisi 1
If A > 1000 And B > 1000 And Pinb.0 = 0 Then

'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup



Elseif A > 1000 And B > 1000 And Pinb.1 = 0 Then

'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 1
Goto Startup


Elseif A > 1000 And B > 1000 And Pinb.0 = 1 And Pinb.1 = 1 Then

'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 0
Goto Startup





'kondisi 2
Elseif A > 1000 And B > 10 And B < 1000 And Pinb.0 = 0 Then

'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 0
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup


Elseif A > 1000 And B > 10 And B < 1000 And Pinb.1 = 0 Then

'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 1
Goto Startup


Elseif A > 1000 And B > 10 And B < 1000 And Pinb.0 = 1 And Pinb.1 = 1 Then

'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 0
Goto Startup




'kondisi 3
Elseif A > 1000 And B < 10 And Pinb.0 = 0 Then

'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup



Elseif A > 1000 And B < 10 And Pinb.1 = 0 Then

'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 0
Portc.4 = 1
Goto Startup




Elseif A > 1000 And B < 10 And Pinb.0 = 1 And Pinb.1 = 1 Then
'motor 1
Portc.3 = 1
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 0
Portc.4 = 0
Goto Startup




'kondisi 4
Elseif A > 10 And A < 1000 And B < 10 And Pinb.0 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup


Elseif A > 10 And A < 1000 And B < 10 And Pinb.1 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 0
Portc.4 = 1
Goto Startup


Elseif A > 10 And A < 1000 And B < 10 And Pinb.0 = 1 And Pinb.1 = 1 Then
'motor 1
Portc.3 = 0
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 0
Portc.4 = 0
Goto Startup



'kondisi 5
Elseif A < 10 And B < 10 And Pinb.0 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup


Elseif A < 10 And B < 10 And Pinb.1 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 0
Portc.4 = 1
Goto Startup


Elseif A < 10 And B < 10 And Pinb.0 = 1 And Pinb.1 = 1 Then
'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 0
Portc.0 = 1
'motor 3
Portc.5 = 0
Portc.4 = 0
Goto Startup



'kondisi 6
Elseif A < 10 And B > 10 And B < 1000 And Pinb.0 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 0
Portc.0 = 0
'motor 3
Portc.5 = 1
Portc.4 = 0

Goto Startup


Elseif A < 10 And B > 10 And B < 1000 And Pinb.1 = 0 Then

'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 0
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 1

Goto Startup


Elseif A < 10 And B > 10 And B < 1000 And Pinb.0 = 1 And Pinb.1 = 1 Then
'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 0
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 0
Goto Startup



'kodisi 7
Elseif A < 10 And B > 1000 And Pinb.0 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup


Elseif A < 10 And B > 1000 And Pinb.1 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup


Elseif A < 10 And B > 1000 And Pinb.0 = 1 And Pinb.1 = 1 Then
'motor 1
Portc.3 = 0
Portc.2 = 1
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 0
Goto Startup



'kondisi 8
Elseif A > 10 And A < 1000 And B > 1000 And Pinb.0 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 0
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup

Elseif A > 10 And A < 1000 And B > 1000 And Pinb.1 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 0
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 1
Goto Startup

Elseif A > 10 And A < 1000 And B > 1000 And Pinb.0 = 1 And Pinb.1 = 1 Then
'motor 1
Portc.3 = 0
Portc.2 = 0
'motor 2
Portc.1 = 1
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 0

Goto Startup


'kondisi 9
Elseif A > 10 And A < 1000 And B > 10 And B < 1000 And Pinb.0 = 0 And Pinb.1 = 1 Then
'motor 1
Portc.3 = 0
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 0
'motor 3
Portc.5 = 1
Portc.4 = 0
Goto Startup

Elseif A > 10 And A < 1000 And B > 10 And B < 1000 And Pinb.0 = 1 And Pinb.1 = 0 Then
'motor 1
Portc.3 = 0
Portc.2 = 0
'motor 2
Portc.1 = 0
Portc.0 = 0
'motor 3
Portc.5 = 0
Portc.4 = 1
Goto Startup

End If
Loop


Startup:
L = 0
K = 0
S = 0

Do
X = Getadc(1)
Y = Getadc(0)
Z = Getadc(2)

If Pinb.0 = 0 Then
Portc.5 = 1
Portc.4 = 0
Elseif Pinb.1 = 0 Then
Portc.5 = 0
Portc.4 = 1
End If



If A > 1000 Then
Portc.3 = 1
Portc.2 = 0
Elseif A < 10 Then
Portc.3 = 0
Portc.2 = 1

End If


If B > 1000 Then
Portc.1 = 1
Portc.0 = 0
Elseif B < 10 Then
Portc.1 = 0
Portc.0 = 1

End If


If X > 255 Then
X = 255
End If
If Y > 255 Then
Y = 255
End If
If Z > 255 Then
Z = 255
End If

A = Getadc(3)
B = Getadc(4)

Pwm1a = L
Pwm1b = K
Ocr2 = S

Incr L
Incr K
Incr S

If L > X Then
L = X
End If

If K > Y Then
K = Y
End If

If S > Z Then
S = Z
End If

Waitms 10

If A > 10 And A < 600 And B > 10 And B < 600 And Pinb.0 = 1 And Pinb.1 = 1 Then
Goto Berhenti
End If

Loop


Berhenti:
Do

Pwm1a = L
Pwm1b = K
Ocr2 = S

Decr L
Decr K
Decr S

If L < 1 Then
L = 0
End If

If K < 1 Then
K = 0
End If

If S < 1 Then
S = 0
End If

If L < 1 And K < 1 And S < 1 Then
Goto Main
End If

Waitms 10

Loop




e. VIDEO HASILNYA







Membuat Frequency PWM Menggunakan Arduino Uno ( Frequency Generator / FREKUENSI GENERATOR )

Membuat Frekuensi PWM / Frequency PWM Menggunakan Arduino Uno


         Hari ini saya akan menjelaskan mengenai bagaimana cara membuat sinyal PWM dengan frequency yang diinginkan, pada contoh ini dijelaskan cara membuat sinyal PWM dengan frequency 25 KHz, jika ingin merubah frequency dan duty cycle-nya maka bisa atur pada programnya saja. alat ini difungsikan untuk buck-boost controller, sehingga harus sesuai dengan frequensi dan duty cycle yang diinginkan. sebagai tambahan bahwa alat ini menggunakan potensiometer untuk mengatur duty cyclenya. untuk lebih jelasnya berikut skema dan programnya.




 a. Arduino Uno




b. Potensiometer




c. Program Arduino IDE

#include <PWM.h>

//use pin 11 on the Mega instead, otherwise there is a frequency cap at 31 Hz
int led = 9;                // the pin that the LED is attached to
int brightness = 0;         // how bright the LED is
int fadeAmount = 125;         // duty cycle
int32_t frequency = 25000; //frequency (in Hz)

void setup()
{
 
  //initialize all timers except for 0, to save time keeping functions
  InitTimersSafe();
  Serial.begin(9600);
  //sets the frequency for the specified pin
  bool success = SetPinFrequencySafe(led, frequency);
 
  //if the pin frequency was set successfully, turn pin 13 on
  if(success) {
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);   
  }
}

void loop()
{
  int sensorValue = analogRead(A0);
 
  if (sensorValue > 255)
 {
  sensorValue = 255;
 }

 //float teg = sensorValue * (4.7 / 1023.0);

  //use this functions instead of analogWrite on 'initialized' pins
  pwmWrite(led, brightness);
 
  //merubah duty cycle sesuai nilai ADC
  brightness = sensorValue;
       
}



d. VIDEO HASILNYA










Monitoring Tegangan Menggunakan Mikrokontroller Bascom AVR Dengan Interface Delphi 7

Monitoring Tegangan Menggunakan Mikrokontroller Bascom AVR Dengan Interface Delphi 7


           Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat interface menggunakan Delphi 7 dengan alat pengirimnya adalah mikrokontroller dan bahasa Bascom AVR, prinsip kerjanya sangat sederhana yaitu mikrokontroller mengirimkan dua data ke komputer kemudian pada interface ditampilkan grafik menggunakan software Delphi 7. jadi mikrokontroller mengirimkan data berupa data adc, yang berjumlah 2 buah yaitu adc A dan adc B. kemudian didalam delphi ada dua buah program yaitu menampilkan kedua data tersebut kedalam satu grafik dan yang kedua yaitu menampilkan kedua data tersebut ke grafik yang terpisah atau sendiri-sendiri. yang harus diperhatikan yaitu pertama install dulu comport untuk delphinya, disini saya menggunakan cport 3.10. untuk lebih jelasnya berikut program dan skemanya.



a. Minimum System




b. Rangkaian RS232




c. Program Bascom AVR

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

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

Dim Dataadc1 As Word
Dim Dataadc2 As Word

Cls
Cursor Off

Start Adc

Do

Dataadc1 = Getadc(0)
Dataadc2 = Getadc(1)

Print Dataadc1 ; "a"
Print Dataadc2 ; "b"

Waitms 50

Loop
'------------------------ end



d. Program Interface Grafik Delphi 7 ( Satu Grafik isi 2 Data )


unit TA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,strutils, TeeProcs, TeEngine, Chart, CPort, mmsystem,
  Series, Buttons;

type
  TForm1 = class(TForm)
    ComPort1: TComPort;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Chart1: TChart;
    Shape1: TShape;
    Shape2: TShape;
    GroupBox2: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    Label7: TLabel;
    Label8: TLabel;
    GroupBox4: TGroupBox;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn1: TBitBtn;
    Series1: TFastLineSeries;
    Series2: TFastLineSeries;
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var buff:string;
begin
comport1.ReadStr(buff,count);
memo1.Text:=memo1.Text+buff;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if button2.Caption='Connect' then
   begin
   button2.Caption:='Disconnect';
   comport1.Open;
   end
else if button2.Caption='Disconnect' then
   begin
   button2.Caption:='Connect';
   comport1.Close;
   end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Color:=clwhite;
Edit2.Color:=clwhite;
edit1.text:='';
edit2.text:='';
memo1.Text:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ThousandSeparator:=',';
DecimalSeparator:='.';
end;

procedure TForm1.Memo1Change(Sender: TObject);
var ruang,kulit:double;
    rin,kin:string;
    jumlahdata:integer;

begin
  shape1.Brush.Color:=clgreen;
  shape2.Brush.Color:=clgreen;
  jumlahdata:=chart1.GetMaxValuesCount;
  form1.Caption:=inttostr(jumlahdata);
  if jumlahdata =10000 then
     begin
     chart1.Series[0].Clear;
     chart1.Series[1].Clear;
     end;

  rin:=memo1.Lines[memo1.Lines.count-2];
  kin:=memo1.Lines[memo1.Lines.count-1];

  if rightstr(rin,1)= 'a' then
     begin
     edit1.Text:=leftstr(rin,length(rin)-1);
     ruang:=strtofloat(edit1.text);
     chart1.Series[0].Add(ruang,'',clred) ;
     shape1.Brush.Color:=clred;
     end;
  if rightstr(kin,1)='b' then
     begin
     edit2.Text:=leftstr(kin,length(kin)-1);
     kulit:=strtofloat(edit2.text);
     chart1.Series[1].Add(kulit,'',clgreen) ;
     shape2.Brush.Color:=clred;
     end;


end;


procedure TForm1.Edit1Change(Sender: TObject);
var ruang:double;
begin
ruang:=strtofloat(edit1.text);
if ruang<30 then
   begin
   edit1.Color:=clblue;
   edit3.text:= 'Lembab';
   end;
if ruang>31 then
   begin
   edit1.Color:=clred;
   edit3.text:= 'Kering';
   end;
if (ruang>=31) and (ruang<=30) then
   begin
   edit1.Color:=clwhite;
   edit3.text:= 'Normal';
   end;
end;


procedure TForm1.Edit2Change(Sender: TObject);
var kulit:double;
begin
kulit:=strtofloat(edit2.text);
if kulit<60 then
   begin
   edit2.Color:=clblue;
   edit4.text:= 'Kering';
   end;
if kulit>61 then
   begin
   edit2.Color:=clred;
   edit4.text:= 'Lembab';
   end;
if (kulit>=61) and (kulit<=60) then
   begin
   edit2.Color:=clwhite;
   edit4.text:= 'Normal';
   end;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
label7.Caption:='Date  '+ FormatdateTime('d/mm/yyyy',Date);
label8.Caption:='Time  '+ FormatDateTime('hh:nn:ss',Time);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;

end.




e. Program Interface Grafik Delphi 7 ( Dua Grafik isi 2 Data )


 unit TA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,strutils, TeeProcs, TeEngine, Chart, CPort, mmsystem,
  Series, Buttons;

type
  TForm1 = class(TForm)
    ComPort1: TComPort;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Chart1: TChart;
    Shape1: TShape;
    Shape2: TShape;
    GroupBox2: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    Label7: TLabel;
    Label8: TLabel;
    GroupBox4: TGroupBox;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn1: TBitBtn;
    Chart2: TChart;
    Series1: TFastLineSeries;
    Series2: TFastLineSeries;
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var buff:string;
begin
comport1.ReadStr(buff,count);
memo1.Text:=memo1.Text+buff;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if button2.Caption='Connect' then
   begin
   button2.Caption:='Disconnect';
   comport1.Open;
   end
else if button2.Caption='Disconnect' then
   begin
   button2.Caption:='Connect';
   comport1.Close;
   end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Color:=clwhite;
Edit2.Color:=clwhite;
edit1.text:='';
edit2.text:='';
memo1.Text:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ThousandSeparator:=',';
DecimalSeparator:='.';
end;

procedure TForm1.Memo1Change(Sender: TObject);
var ruang,kulit:double;
    rin,kin:string;
    jumlahdata:integer;

begin
  shape1.Brush.Color:=clgreen;
  shape2.Brush.Color:=clgreen;
  jumlahdata:=chart1.GetMaxValuesCount;
  form1.Caption:=inttostr(jumlahdata);
  if jumlahdata =10000 then
     begin
     Series1.Clear;
     Series2.Clear;
     end;

  rin:=memo1.Lines[memo1.Lines.count-2];
  kin:=memo1.Lines[memo1.Lines.count-1];

  if rightstr(rin,1)= 'a' then
     begin
     edit1.Text:=leftstr(rin,length(rin)-1);
     ruang:=strtofloat(edit1.text);
     Series1.Add(ruang,'',clred) ;
     shape1.Brush.Color:=clred;
     end;
  if rightstr(kin,1)='b' then
     begin
     edit2.Text:=leftstr(kin,length(kin)-1);
     kulit:=strtofloat(edit2.text);
     Series2.Add(kulit,'',clgreen) ;
     shape2.Brush.Color:=clred;
     end;


end;


procedure TForm1.Edit1Change(Sender: TObject);
var ruang:double;
begin
ruang:=strtofloat(edit1.text);
if ruang<30 then
   begin
   edit1.Color:=clblue;
   edit3.text:= 'Lembab';
   end;
if ruang>31 then
   begin
   edit1.Color:=clred;
   edit3.text:= 'Kering';
   end;
if (ruang>=31) and (ruang<=30) then
   begin
   edit1.Color:=clwhite;
   edit3.text:= 'Normal';
   end;
end;


procedure TForm1.Edit2Change(Sender: TObject);
var kulit:double;
begin
kulit:=strtofloat(edit2.text);
if kulit<60 then
   begin
   edit2.Color:=clblue;
   edit4.text:= 'Kering';
   end;
if kulit>61 then
   begin
   edit2.Color:=clred;
   edit4.text:= 'Lembab';
   end;
if (kulit>=61) and (kulit<=60) then
   begin
   edit2.Color:=clwhite;
   edit4.text:= 'Normal';
   end;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
label7.Caption:='Date  '+ FormatdateTime('d/mm/yyyy',Date);
label8.Caption:='Time  '+ FormatDateTime('hh:nn:ss',Time);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;

end.




f. VIDEO HASILNYA













Monitoring Tegangan Dengan Arduino dan Interface DELPHI 7

Monitoring Tegangan Dengan Arduino dan Interface DELPHI 7


             Pada kesempatan emas ini saya akan menjelaskan mengenai bagaimana cara membuat interface Delphi 7 dari mikrokontroller Arduino, jadi prinsip kerjanya begini, Arduino mengirimkan data berupa data adc, yang berjumlah 2 buah yaitu adc A dan adc B. kemudian didalam delphi ada dua buah program yaitu menampilkan kedua data tersebut kedalam satu grafik dan yang kedua yaitu menampilkan kedua data tersebut ke grafik yang terpisah atau sendiri-sendiri. yang harus diperhatikan yaitu pertama install dulu comport untuk delphinya, disini saya menggunakan cport 3.10. untuk lebih jelasnya berikut program dan skemanya.



a. Arduino Uno




b. Program Arduino

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  float sensorValue = analogRead(A0);
  float sensorValue1 = analogRead(A1);
 
  // print out the value you read:
  Serial.print(sensorValue),Serial.println ('a');
  Serial.print(sensorValue1),Serial.println ('b');
 
  delay(50);        // delay in between reads for stability
}



c. Program Interface Grafik Delphi 7 ( Satu Grafik isi 2 Data )

 unit TA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,strutils, TeeProcs, TeEngine, Chart, CPort, mmsystem,
  Series, Buttons;

type
  TForm1 = class(TForm)
    ComPort1: TComPort;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Chart1: TChart;
    Shape1: TShape;
    Shape2: TShape;
    GroupBox2: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    Label7: TLabel;
    Label8: TLabel;
    GroupBox4: TGroupBox;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn1: TBitBtn;
    Series1: TFastLineSeries;
    Series2: TFastLineSeries;
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var buff:string;
begin
comport1.ReadStr(buff,count);
memo1.Text:=memo1.Text+buff;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if button2.Caption='Connect' then
   begin
   button2.Caption:='Disconnect';
   comport1.Open;
   end
else if button2.Caption='Disconnect' then
   begin
   button2.Caption:='Connect';
   comport1.Close;
   end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Color:=clwhite;
Edit2.Color:=clwhite;
edit1.text:='';
edit2.text:='';
memo1.Text:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ThousandSeparator:=',';
DecimalSeparator:='.';
end;

procedure TForm1.Memo1Change(Sender: TObject);
var ruang,kulit:double;
    rin,kin:string;
    jumlahdata:integer;

begin
  shape1.Brush.Color:=clgreen;
  shape2.Brush.Color:=clgreen;
  jumlahdata:=chart1.GetMaxValuesCount;
  form1.Caption:=inttostr(jumlahdata);
  if jumlahdata =10000 then
     begin
     chart1.Series[0].Clear;
     chart1.Series[1].Clear;
     end;

  rin:=memo1.Lines[memo1.Lines.count-2];
  kin:=memo1.Lines[memo1.Lines.count-1];

  if rightstr(rin,1)= 'a' then
     begin
     edit1.Text:=leftstr(rin,length(rin)-1);
     ruang:=strtofloat(edit1.text);
     chart1.Series[0].Add(ruang,'',clred) ;
     shape1.Brush.Color:=clred;
     end;
  if rightstr(kin,1)='b' then
     begin
     edit2.Text:=leftstr(kin,length(kin)-1);
     kulit:=strtofloat(edit2.text);
     chart1.Series[1].Add(kulit,'',clgreen) ;
     shape2.Brush.Color:=clred;
     end;


end;


procedure TForm1.Edit1Change(Sender: TObject);
var ruang:double;
begin
ruang:=strtofloat(edit1.text);
if ruang<30 then
   begin
   edit1.Color:=clblue;
   edit3.text:= 'Lembab';
   end;
if ruang>31 then
   begin
   edit1.Color:=clred;
   edit3.text:= 'Kering';
   end;
if (ruang>=31) and (ruang<=30) then
   begin
   edit1.Color:=clwhite;
   edit3.text:= 'Normal';
   end;
end;


procedure TForm1.Edit2Change(Sender: TObject);
var kulit:double;
begin
kulit:=strtofloat(edit2.text);
if kulit<60 then
   begin
   edit2.Color:=clblue;
   edit4.text:= 'Kering';
   end;
if kulit>61 then
   begin
   edit2.Color:=clred;
   edit4.text:= 'Lembab';
   end;
if (kulit>=61) and (kulit<=60) then
   begin
   edit2.Color:=clwhite;
   edit4.text:= 'Normal';
   end;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
label7.Caption:='Date  '+ FormatdateTime('d/mm/yyyy',Date);
label8.Caption:='Time  '+ FormatDateTime('hh:nn:ss',Time);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;

end.




 d. Program Interface Grafik Delphi 7 ( Dua Grafik isi 2 Data )


 unit TA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,strutils, TeeProcs, TeEngine, Chart, CPort, mmsystem,
  Series, Buttons;

type
  TForm1 = class(TForm)
    ComPort1: TComPort;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Chart1: TChart;
    Shape1: TShape;
    Shape2: TShape;
    GroupBox2: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    Label7: TLabel;
    Label8: TLabel;
    GroupBox4: TGroupBox;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn1: TBitBtn;
    Chart2: TChart;
    Series1: TFastLineSeries;
    Series2: TFastLineSeries;
    procedure ComPort1RxChar(Sender: TObject; Count: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var buff:string;
begin
comport1.ReadStr(buff,count);
memo1.Text:=memo1.Text+buff;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
comport1.ShowSetupDialog;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if button2.Caption='Connect' then
   begin
   button2.Caption:='Disconnect';
   comport1.Open;
   end
else if button2.Caption='Disconnect' then
   begin
   button2.Caption:='Connect';
   comport1.Close;
   end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Color:=clwhite;
Edit2.Color:=clwhite;
edit1.text:='';
edit2.text:='';
memo1.Text:='';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ThousandSeparator:=',';
DecimalSeparator:='.';
end;

procedure TForm1.Memo1Change(Sender: TObject);
var ruang,kulit:double;
    rin,kin:string;
    jumlahdata:integer;

begin
  shape1.Brush.Color:=clgreen;
  shape2.Brush.Color:=clgreen;
  jumlahdata:=chart1.GetMaxValuesCount;
  form1.Caption:=inttostr(jumlahdata);
  if jumlahdata =10000 then
     begin
     Series1.Clear;
     Series2.Clear;
     end;

  rin:=memo1.Lines[memo1.Lines.count-2];
  kin:=memo1.Lines[memo1.Lines.count-1];

  if rightstr(rin,1)= 'a' then
     begin
     edit1.Text:=leftstr(rin,length(rin)-1);
     ruang:=strtofloat(edit1.text);
     Series1.Add(ruang,'',clred) ;
     shape1.Brush.Color:=clred;
     end;
  if rightstr(kin,1)='b' then
     begin
     edit2.Text:=leftstr(kin,length(kin)-1);
     kulit:=strtofloat(edit2.text);
     Series2.Add(kulit,'',clgreen) ;
     shape2.Brush.Color:=clred;
     end;


end;


procedure TForm1.Edit1Change(Sender: TObject);
var ruang:double;
begin
ruang:=strtofloat(edit1.text);
if ruang<30 then
   begin
   edit1.Color:=clblue;
   edit3.text:= 'Lembab';
   end;
if ruang>31 then
   begin
   edit1.Color:=clred;
   edit3.text:= 'Kering';
   end;
if (ruang>=31) and (ruang<=30) then
   begin
   edit1.Color:=clwhite;
   edit3.text:= 'Normal';
   end;
end;


procedure TForm1.Edit2Change(Sender: TObject);
var kulit:double;
begin
kulit:=strtofloat(edit2.text);
if kulit<60 then
   begin
   edit2.Color:=clblue;
   edit4.text:= 'Kering';
   end;
if kulit>61 then
   begin
   edit2.Color:=clred;
   edit4.text:= 'Lembab';
   end;
if (kulit>=61) and (kulit<=60) then
   begin
   edit2.Color:=clwhite;
   edit4.text:= 'Normal';
   end;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
label7.Caption:='Date  '+ FormatdateTime('d/mm/yyyy',Date);
label8.Caption:='Time  '+ FormatDateTime('hh:nn:ss',Time);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;

end.



e. Cara Penggunaan Alat

            Untuk menggunakan alat ini yaitu pertama download / upload program Arduino terlebih dahulu, kemudian pastikan Arduino mengirimkan data secara serial dengan menggunakan fitur serial monitor pada software Arduino. jika semua berhasil maka buat interface Delphi 7 dan pastikan tidak error saat RUN. langkah terakhir yaitu lihat COM port pada Arduino lalu pilih COM tersebut. jika berhasil maka tampilan grafik akan muncul pada interface Delphi 7. jika mau download program diatas bisa melalui link dibawah ini.