package Ġcom . example . h _ drone Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . ToggleButton Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġcom . google . firebase . database . k tx . database Ċ import Ġcom . google . firebase . database . k tx . getValue Ċ import Ġcom . google . firebase . k tx . Firebase Ċ import Ġcom . ram otion . fluid slider . Fluid Slider Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) Ċ Ċ // ĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĊĊ Ċ // ĠĠĠĠĠĠĠ ĠDC ĠMotor Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġdc Motor State 1 Ġ= ĠFirebase . database . getReference (" DC ĠMotor "). child (" State 1 ") ĠĠĠĠĠĠ Ġ// Ġ ĠON Ġ/ ĠOFF Ġstate Ġcontrols ĊĠĠĠĠĠĠĠ Ġval Ġdc Motor 1 Speed Ġ= ĠFirebase . database . getReference (" DC ĠMotor "). child (" Speed 1 ") ĠĠĠĠĠĠ Ġ// Ġ ĠSpeed Ġcontrol ĊĠĠĠĠĠĠĠ Ġval Ġdc Motor 1 Rotation Ġ= ĠFirebase . database . getReference (" DC ĠMotor "). child (" Rotation 1 ") Ġ// Ġ ĠRotation Ġcontrol ĊĊ Ċ // ĠĠĠĠĠĠĠ ĠDC ĠMotor Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġdc Motor State 2 Ġ= ĠFirebase . database . getReference (" DC ĠMotor "). child (" State 2 ") ĠĠĠĠĠĠ Ġ// Ġ ĠON Ġ/ ĠOFF Ġstate Ġcontrols ĊĠĠĠĠĠĠĠ Ġval Ġdc Motor 2 Speed Ġ= ĠFirebase . database . getReference (" DC ĠMotor "). child (" Speed 2 ") ĠĠĠĠĠĠ Ġ// Ġ ĠSpeed Ġcontrol ĊĠĠĠĠĠĠĠ Ġval Ġdc Motor 2 Rotation Ġ= ĠFirebase . database . getReference (" DC ĠMotor "). child (" Rotation 2 ") Ġ// Ġ ĠRotation Ġcontrol Ċ Ċ // ĠĠĠĠĠĠĠ ĠDC ĠMotor Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġdc Motor State 3 Ġ= ĠFirebase . database . getReference (" DC ĠMotor "). child (" State 3 ") ĠĠĠĠĠĠ Ġ// Ġ ĠON Ġ/ ĠOFF Ġstate Ġcontrols Ċ Ċ // ĠĠĠĠĠĠĠ ĠDirection Ġof Ġrotation ĊĠĠĠĠĠĠĠ Ġval Ġservo Motor Ġ= ĠFirebase . database . getReference (" Ser vo ĠMotor ") ĊĊĊĠĠĠĠĠĠĠ Ġsb Left Speed . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Left Speed . text Ġ= Ġprogress . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor 1 Speed . setValue ( progress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsb Right Speed . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Right Speed . text Ġ= Ġprogress . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor 2 Speed . setValue ( progress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġtb For Left Motor . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tb For Left Motor . text . toString () Ġ== Ġ" ON ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor State 1 . setValue ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor State 1 . setValue ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtb For Right Motor . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tb For Right Motor . text . toString () Ġ== Ġ" ON ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor State 2 . setValue ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor State 2 . setValue ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtb For Middle Motor . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tb For Middle Motor . text . toString () Ġ== Ġ" ON ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor State 3 . setValue ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor State 3 . setValue ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswitch For Direction Rotation . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservo Motor . setValue ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservo Motor . setValue ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswitch For Left Rotation . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor 1 Rotation . setValue ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor 1 Rotation . setValue ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswitch For Right Rotation . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor 2 Rotation . setValue ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdc Motor 2 Rotation . setValue ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ