/*
Program : ...
Dibuat Oleh : ...
Tanggal : ...
Keterangan : ...
*/
// Deklarasi semua Variable Bersama
// Tulis semua Variable bersama di sini
float HallFR=0; // Sensor Hall Effect Kanan Depan
float HallFL=0;
float HallRR=0; // Sensor Hall Effect Kanan Belakang
float HallRL=0;
float Baterai=0; // Tegangan Baterai
float RemoteT=0; // misalkan, data dari Remote Control
float RemoteB=0;
float RemoteC=0; // Perintah dari Remote Control
float BLDCR=0; // Nilai BLDC Kanan
float BLDCL=0;
float LoadCell=0; // Sensor Hall Effect atau lainnya
float Kecepatan=0; // Kecepatan Longboard saat ini
float SetPoint=0; // Setting Point Kecepatan dari bagian Safety
// sesuai dengan Mode yang diputuskan
// Akan digunakan pada bagian Control
#define HOLD 0 // HOLD Mode
#define WALK 1 // WALK Mode
#define RUN 2 // RUN Mode
#define BREAK 3 // BREAK Mode
#define SLIP 4 // SLIP Mode
float Mode=HOLD; // Mode Operasi sesuai hasil keputusan bagian Safety
// Akan digunakan pada bagian Control
void SetupSafety();
void Safety();
void TestSafety();
void SetupControl();
void Control();
void TestControl();
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
// Inisialisasi bersama ...
// Misalkan menampilkan Tulisan tertentu atau Say Hello
// Atau lainnya
SetupSafety(); // Jalankan Inisialisasi bagian Safety
SetupControl(); // Jalankan Inisialisasi bagian Control
}
void loop()
{
// Dua bagian program dijalankan secara bergantian
// Setiap bagian tidak boleh ada loop yang panjang
// karena akan mengganggu bagian lain
Safety(); // Jalankan semua proses yang berkaitan dengan Safety
Control(); // Jalankan semua proses yang berkaitan dengan Control
// Bagian proses bersama, misalkan menampilkan data ke LCD
// Bagian ini juga bisa dilakukan secara terpisah
// pada proses Safety() dan Coontrol()
// WriteLCD ...
// SendRemote ...
// SendIoT ...
}
//
// ================================================================
// Bagian Safety
//
void SetupSafety()
{
// Semua inisialisasi untuk bagian Safety
}
void Safety()
{
// Semua proses untuk bagian Safety
// Tidak boleh ada loop yang panjang
// Baca Sensor Tegangan Bateray
// Baca Sensor Load Cell
// Baca Sensor Hall Effect
// Hitung kecepatan Roda Belakang
// Hitung Kecepatan Roda Depan
// Baca data dari Remote Control
// ...
// Proses pengecekan semua kondisi sensor
// Keputusan ... Mode = ? dan SetPoint = ?
// Tampilkan data-data yang diperlukan ke LCD atau Remote atau IoT,
// agar mudah untuk dilakukan pengecekan/pengujian bagian Safety
TestSafety(); // bisa dibuang kalau tidak diperlukan
}
void TestSafety()
{
// prosedur untuk menguji bagian Safety, bersifat sementara
// kalau tidak diperlukan, bisa dibuang
}
//
// ================================================================
// Bagian Control
//
void SetupControl()
{
// Semua inisialisasi untuk bagian Control
}
void Control()
{
// Semua proses untuk bagian Control
// Tidak boleh ada loop yang panjang
// Cek Status Mode dari bagian Safety
// Lakukan operasi kontrol sesuai Mode Operasi
// Gunakan kontroler PID
// Jalankan motor BLDC
// Tampilkan data-data yang diperlukan ke LCD atau Remote atau IoT,
// agar mudah untuk dilakukan pengecekan/pengujian bagian Safety
TestControl(); // bisa dibuang kalau tidak diperlukan
}
void TestControl()
{
// prosedur untuk menguji bagian Control, bersifat sementara
// kalau tidak diperlukan, bisa dibuang
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK