Professional Documents
Culture Documents
LAMPIRAN
#include <Servo.h>
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0X3F, 16,2 );
#include "HX711.h"
// HX711.DOUT - pin #7
// HX711.PD_SCK - pin #8
int berat;
int fix;
long val =0;
float count =0;
#define SS_PIN 10
#define RST_PIN 9
#define servo 3
Servo myservo;
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup()
{
long val =0;
float count =0;
int i;
pinMode(4, INPUT );// set pin as input
lcd.begin();
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
myservo.attach(servo);
// myservo.write(0);
myservo.write(90);
lcd.setCursor(0,0);
lcd.backlight();
lcd.print(" SIMULASI ");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("JEMBATAN TIMBANG");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.backlight();
lcd.print("Ibnu Askha. A");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("1604E117");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.backlight();
lcd.print("Fachri Cahyo. P");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("1604E137");
delay(3000);
lcd.setCursor(0,0);
lcd.backlight();
lcd.print("Diah Ayu Anggita");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("1604E086");
delay(3000);
lcd.clear();
}
void timbangan()
fix = ((val-106580)/100.99f);
berat = count + 1;
val = 0.5 * val + 0.5 * cell.read();
void reset_state()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(fix);
void rfid()
{
// membaca ID card
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// memilih salah satu card yang terdeteksi
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//tampilkan ID card di serial monitor
lcd.clear();
//Serial.print("");
lcd.setCursor(0,0);
lcd.print("");
lcd.setCursor(0,1);
String content= "";
byte letter;
Serial.print('(');
for (byte i = 0; i < mfrc522.uid.size; i++)
{
//Serial.println("");
mfrc522.PICC_HaltA();
delay(500);
void loop()
{
lcd.setCursor(0,0);
lcd.backlight();
lcd.print(" SIMULASI ");
lcd.setCursor(0,1);
lcd.backlight();
lcd.print("JEMBATAN TIMBANG");
// lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" TAP YOUR CARD ");
lcd.setCursor(0,1);
// lcd.backlight();
lcd.print(" Berat= ");
lcd.print(fix);
lcd.print(" gr ");
delay(100);
}
if (Serial.available()>0){
char a=Serial.read();
if (a=='A') {
lcd.println(" ID Diterima ");
//Serial.println("A");
myservo.write(0);
//inf();
}
else if (a=='B'){
lcd.print(" ID Ditolak ");
Serial.println("\nUnknown Card");
delay(1000);
}p
}
rfid();
timbangan();
}
Lampiran 3 Coding Delphi
Coding Form Utama
unit Uutama;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, Buttons, CPort, StdCtrls, jpeg, ExtCtrls;
type
TFutama = class(TForm)
btntimbangan: TSpeedButton;
btnregistrasi: TSpeedButton;
btnsetting: TSpeedButton;
XPManifest1: TXPManifest;
btnclose: TSpeedButton;
Label1: TLabel;
btnlaporan: TSpeedButton;
Image1: TImage;
Image2: TImage;
procedure btnregistrasiClick(Sender: TObject);
procedure btnsettingClick(Sender: TObject);
procedure btncloseClick(Sender: TObject);
procedure btntimbanganClick(Sender: TObject);
procedure btnlaporanClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Futama: TFutama;
implementation
{$R *.dfm}
end;
end;
end;
end;
end.
Coding untuk koneksi
unit UDM;
interface
uses
SysUtils, Classes, UniProvider, MySQLUniProvider, DB, DBAccess, Uni,
MemDS;
type
TDM = class(TDataModule)
Connect: TUniConnection;
MySQL: TMySQLUniProvider;
Qcomalat: TUniQuery;
DScomalat: TDataSource;
Qidentitas: TUniQuery;
DSidentitas: TDataSource;
Qtimbang: TUniQuery;
DStimbang: TDataSource;
Qcari1: TUniQuery;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DM: TDM;
implementation
{$R *.dfm}
end.
Coding Menu Laporan
unit Ulaporan;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBGridEhGrouping, StdCtrls, Buttons, ExtCtrls, GridsEh, DBGridEh,
ComCtrls;
type
TFlaporan = class(TForm)
DBG: TDBGridEh;
Panel1: TPanel;
btncancel: TBitBtn;
DTP1: TDateTimePicker;
btncari: TSpeedButton;
Label1: TLabel;
DTP2: TDateTimePicker;
procedure btncancelClick(Sender: TObject);
procedure DBGDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure btncariClick(Sender: TObject);
procedure DTP1KeyPress(Sender: TObject; var Key: Char);
procedure DTP2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Flaporan: TFlaporan;
implementation
{$R *.dfm}
DBG.Canvas.TextOut(Rect.Left+2,Rect.Top,IntToStr(DBG.DataSource.DataSet.
RecNo));
end;
end;
end.
Coding Menu Registrasi
unit Uregistrasi;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBGridEhGrouping, ToolCtrlsEh,
EhLibVCL, GridsEh, DBGridEh, Buttons, StdCtrls,
CPort;
type
TFregistrasi = class(TForm)
Panel1: TPanel;
DBG: TDBGridEh;
Ecari: TEdit;
btncari: TSpeedButton;
Label1: TLabel;
Erfid: TEdit;
Mcom: TMemo;
Ekode: TEdit;
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Esopir: TEdit;
Enopol: TEdit;
Eberat: TEdit;
Btnsave: TBitBtn;
btncancel: TBitBtn;
btndel: TBitBtn;
com: TComPort;
procedure DBGDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure btncancelClick(Sender: TObject);
procedure btncariClick(Sender: TObject);
procedure EcariKeyPress(Sender: TObject; var Key: Char);
procedure DBGDblClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure comRxChar(Sender: TObject; Count: Integer);
procedure BtnsaveClick(Sender: TObject);
procedure btndelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Fregistrasi: TFregistrasi;
implementation
uses UDM, Uni, DB, MemDS, DBAccess;
{$R *.dfm}
DBG.Canvas.TextOut(Rect.Left+2,Rect.Top,IntToStr(DBG.DataSource.DataSet.
RecNo));
end;
end;
com.Port:=DM.Qcomalat.FieldValues['port'];
com.BaudRate:=StrToBaudRate(DM.Qcomalat.FieldValues['baud']);
com.DataBits:=StrToDataBits(DM.Qcomalat.FieldValues['dtbits']);
com.StopBits:=StrToStopBits(DM.Qcomalat.FieldValues['stopbits']);
com.Parity.Bits:=StrToParity(DM.Qcomalat.FieldValues['parity']);
com.FlowControl.FlowControl:=StrToFlowControl(DM.Qcomalat.FieldValues['fl
ow']);
com.Open;
Mcom.Clear;
with DM.Qidentitas do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas ORDER BY sopir ASC';
Open;
end;
end;
procedure TFregistrasi.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
com.Close;
DM.Qidentitas.Close;
end;
rfid1:=0;
rfid2:=0;
berat1:=0;
berat2:=0;
if copy(Mcom.Text,i,1)=')' then
begin
if i>rfid2 then rfid2:=i;
end;
if copy(Mcom.Text,i,1)='*' then
begin
if i>berat1 then berat1:=i;
end;
if copy(Mcom.Text,i,1)='/' then
begin
if i>berat2 then berat2:=i;
end;
rfid:=copy(Mcom.Text,rfid1+1,rfid2-rfid1-1);
berat:=copy(Mcom.Text,berat1+1,berat2-berat1-1);
with DM.Qcari1 do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas WHERE kdrfid='+QuotedStr(rfid);
Open;
end;
if DM.Qcari1.RecordCount=0 then
begin
Erfid.Text:=rfid;
Esopir.Clear;
Enopol.Clear;
Eberat.Text:=berat;
Btnsave.Caption:='&SAVE';
end else
begin
Erfid.Text:=rfid;
Esopir.Text:=DM.Qcari1.FieldValues['sopir'];
Enopol.Text:=DM.Qcari1.FieldValues['nopol'];
Eberat.Text:=FloatToStr(DM.Qcari1.FieldValues['kosong']);
Btnsave.Caption:='&EDIT';
end;
Esopir.SetFocus;
end;
if hsl>0 then
begin
MessageDlg('BERAT TRUCK Tidak Normal!',mtError,[mbOK],0);
end else
begin
if MessageDlg('Yakin Data Sudah
Benar?',mtConfirmation,[mbYes,mbNo],0)=mryes then
begin
if Btnsave.Caption='&SAVE' then
begin
with DM.Qidentitas do
begin
Open;
Append;
FieldValues['kdrfid']:=Erfid.Text;
FieldValues['sopir']:=Esopir.Text;
FieldValues['nopol']:=Enopol.Text;
FieldValues['kosong']:=StrToFloat(Eberat.Text);
Post;
end;
end else
begin
with DM.Qcari1 do
begin
SQL.Clear;
SQL.Text:='UPDATE identitas SET sopir='+QuotedStr(Esopir.Text)
+', nopol='+QuotedStr(Enopol.Text)
+' WHERE kdrfid='+QuotedStr(Erfid.Text);
Execute;
end;
end;
with DM.Qidentitas do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas ORDER BY sopir ASC';
Open;
end;
MessageDlg('Data Telah Tersimpan',mtInformation,[mbOK],0);
com.WriteStr('A');
end;
end;
end;
end;
end
Coding Menu Setting
unit Usetting;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, CPort, CPortCtl, Mask, DBCtrls;
type
TFsetting = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
CBport: TComComboBox;
ComPort1: TComPort;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
CBbaud: TComComboBox;
CBdtbits: TComComboBox;
CBstopbits: TComComboBox;
CBparity: TComComboBox;
CBflow: TComComboBox;
btnsave: TBitBtn;
btncancel: TBitBtn;
GBdata: TGroupBox;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
btnsetting: TBitBtn;
btnclose: TBitBtn;
DBport: TDBEdit;
DBbaud: TDBEdit;
DBdtbits: TDBEdit;
DBstopbits: TDBEdit;
DBparity: TDBEdit;
DBflow: TDBEdit;
procedure btncancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btncloseClick(Sender: TObject);
procedure btnsettingClick(Sender: TObject);
procedure btnsaveClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Fsetting: TFsetting;
implementation
{$R *.dfm}
if DM.Qcomalat.RecordCount=0 then
begin
with DM.Qcomalat do
begin
Open;
Append;
FieldValues['port']:=CBport.Text;
FieldValues['baud']:=CBbaud.Text;
FieldValues['dtbits']:=CBdtbits.Text;
FieldValues['stopbits']:=CBstopbits.Text;
FieldValues['parity']:=CBparity.Text;
FieldValues['flow']:=CBflow.Text;
Post;
end;
end else
begin
with DM.Qcomalat do
begin
SQL.Clear;
SQL.Text:='UPDATE comalat SET port='+QuotedStr(CBport.Text)
+', baud='+QuotedStr(CBbaud.Text)
+', dtbits='+QuotedStr(CBdtbits.Text)
+', stopbits='+QuotedStr(CBstopbits.Text)
+', parity='+QuotedStr(CBparity.Text)
+', flow='+QuotedStr(CBflow.Text);
Execute;
end;
end;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, DBGridEhGrouping, GridsEh, DBGridEh, Buttons,
ComCtrls, CPort, ToolCtrlsEh, EhLibVCL;
type
TFtimbang = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Erfid: TEdit;
Label2: TLabel;
Esopir: TEdit;
Label3: TLabel;
Enopol: TEdit;
Label4: TLabel;
Ebruto: TEdit;
Label5: TLabel;
Ekosong: TEdit;
Label6: TLabel;
Enetto: TEdit;
Btnsave: TBitBtn;
btncancel: TBitBtn;
DBG: TDBGridEh;
Ltanggal: TLabel;
DTPskrg: TDateTimePicker;
T1: TTimer;
com: TComPort;
Mcom: TMemo;
btnclear: TBitBtn;
T2: TTimer;
Eiddata: TEdit;
btnhapus: TBitBtn;
procedure btncancelClick(Sender: TObject);
procedure T1Timer(Sender: TObject);
procedure DBGDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnsaveClick(Sender: TObject);
procedure btnclearClick(Sender: TObject);
procedure T2Timer(Sender: TObject);
procedure comRxChar(Sender: TObject; Count: Integer);
procedure btnhapusClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Ftimbang: TFtimbang;
hitung: integer;
masuk,keluar,netto: double;
implementation
{$R *.dfm}
DBG.Canvas.TextOut(Rect.Left+2,Rect.Top,IntToStr(DBG.DataSource.DataSet.
RecNo));
end;
end;
com.Port:=DM.Qcomalat.FieldValues['port'];
com.BaudRate:=StrToBaudRate(DM.Qcomalat.FieldValues['baud']);
com.DataBits:=StrToDataBits(DM.Qcomalat.FieldValues['dtbits']);
com.StopBits:=StrToStopBits(DM.Qcomalat.FieldValues['stopbits']);
com.Parity.Bits:=StrToParity(DM.Qcomalat.FieldValues['parity']);
com.FlowControl.FlowControl:=StrToFlowControl(DM.Qcomalat.FieldValues['fl
ow']);
com.Open;
Mcom.Clear;
with DM.Qtimbang do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM timbang WHERE
tanggal='+QuotedStr(FormatDateTime('yyyy-mm-dd',Now))
+' ORDER BY IDtimbang ASC';
Open;
end;
Eiddata.Clear;
Erfid.Clear;
Esopir.Clear;
Enopol.Clear;
Ebruto.Text:='0';
Ekosong.Text:='0';
Enetto.Text:='0';
T2.Enabled:=False;
hitung:=0;
//kddaftar:=0;
end;
if hsl<50 then
begin
MessageDlg('BERAT TRUCK MELEBIHI
KAPASITAS',mtError,[mbOK],0);
end else
if (Erfid.Text<>'') and (Esopir.Text<>'') and (Enetto.Text<>'0') and (hsl=0) then
begin
with DM.Qtimbang do
begin
Open;
Append;
FieldValues['IDdata']:=1;
FieldValues['kdrfid']:=Erfid.Text;
FieldValues['sopir']:=Esopir.Text;
FieldValues['nopol']:=Enopol.Text;
FieldValues['bruto']:=masuk;
FieldValues['kosong']:=keluar;
FieldValues['netto']:=netto;
FieldValues['tanggal']:=DTPskrg.Date;
FieldValues['jam']:=FormatDateTime('hh:nn:ss',Now);
Post;
SQL.Clear;
SQL.Text:='SELECT * FROM timbang WHERE
tanggal='+QuotedStr(FormatDateTime('yyyy-mm-dd',Now))
+' ORDER BY IDtimbang ASC';
Open;
end;
com.WriteStr('A');
MessageDlg(' Data Tersimpan',mtInformation,[mbOK],0)
end;
end;
if hitung=5 then
begin
T2.Enabled:=False;
hitung:=0;
btnclearClick(nil);
end;
end;
rfid1:=0;
rfid2:=0;
berat1:=0;
berat2:=0;
if copy(Mcom.Text,i,1)=')' then
begin
if i>rfid2 then rfid2:=i;
end;
if copy(Mcom.Text,i,1)='*' then
begin
if i>berat1 then berat1:=i;
end;
if copy(Mcom.Text,i,1)='/' then
begin
if i>berat2 then berat2:=i;
end;
end;
rfid:=copy(Mcom.Text,rfid1+1,rfid2-rfid1-1);
berat:=copy(Mcom.Text,berat1+1,berat2-berat1-1);
if length(rfid)=8 then
begin
with DM.Qcari1 do
begin
SQL.Clear;
SQL.Text:='SELECT * FROM identitas WHERE kdrfid='+QuotedStr(rfid);
Open;
end;
end;
end;
if (DM.Qcari1.RecordCount<>0) and (length(rfid)=8) then
begin
Erfid.Text:=rfid;
Esopir.Text:=DM.Qcari1.FieldValues['sopir'];
Enopol.Text:=DM.Qcari1.FieldValues['nopol'];
hsl:='';
for i:=1 to length(berat) do
begin
if (ord(berat[i])>47) or (ord(berat[i])<58) then hsl:=hsl+copy(berat,i,1);
end;
Ebruto.Text:=berat;
Ekosong.Text:=hsl;
masuk:=StrToFloatDef(hsl,10);
keluar:=DM.Qcari1.FieldValues['kosong'];
netto:=masuk-keluar;
Ebruto.Text:=FloatToStr(masuk);
Ekosong.Text:=FloatToStr(keluar);
Enetto.Text:=FloatToStr(netto);
end.
.
Lampiran 4 Dokumentasi Wawancara
Lampiran 5 Dokumentasi Observasi