/*
program ini dibuat oleh channel youtube vproject makers
silahkan pergunakanan dengan sebaik mungkin
link skema https://wokwi.com/projects/370035202657659905
link apk free https://drive.google.com/open?id=1v_DrMurIXxD_ZFRbyM_0gW68SCX7Dxjb&usp=drive_fs
kalau mau mentahan apk app invertor jangan lupa sawer dulu ya :D, masukan email pada note saweria https://saweria.co/vprojectmakers
note:
untuk pemasangan relay kejalur coil:
*LEPAS KABEL SIGNAL COIL (NEGATIF COIL, BIASANYA ADA WARNA HIJAU PADA SKUN COIL)
*COM RELAY KE KABEL SIGNAL COIL YG DILEPAS
*NC RELAY KE PIN SIGNAL / NEGATIF PADA COIL (BIASANYA ADA WARNA HIJAU PADA SKUN COIL)
*/
#include "BluetoothSerial.h"
#include <EEPROM.h>
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
BluetoothSerial SerialBT;
bool b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16;
int Speed, Speed_map;
bool data_beat[16];
int count = 0;
unsigned long waktu_sekarang = 0;
unsigned long waktu_sebelumnya = 0;
unsigned long waktusebelumnya = 0;
const long interval = 100;
String text = "";
#define relay 22
void setup() {
Serial.begin(115200);
EEPROM.begin(255);
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW);
delay(500);
SerialBT.begin("TimingDrumband_byVproject"); //Bluetooth device name
//Serial.println("The device started, now you can pair it with bluetooth!");
b1 = EEPROM.read(1);
b2 = EEPROM.read(2);
b3 = EEPROM.read(3);
b4 = EEPROM.read(4);
b5 = EEPROM.read(5);
b6 = EEPROM.read(6);
b7 = EEPROM.read(7);
b8 = EEPROM.read(8);
b9 = EEPROM.read(9);
b10 = EEPROM.read(10);
b11 = EEPROM.read(11);
b12 = EEPROM.read(12);
b13 = EEPROM.read(13);
b14 = EEPROM.read(14);
b15 = EEPROM.read(15);
b16 = EEPROM.read(16);
Speed = EEPROM.read(17);
delay(10);
}
void loop() {
EEPROM.commit();
if (SerialBT.available() > 0) {
digitalWrite(relay, LOW);
text = SerialBT.readStringUntil('\n');
//Serial.println(text);
String substring0 = getValue(text, '-', 0);
String substring1 = getValue(text, '-', 1);
String substring2 = getValue(text, '-', 2);
String substring3 = getValue(text, '-', 3);
String substring4 = getValue(text, '-', 4);
String substring5 = getValue(text, '-', 5);
String substring6 = getValue(text, '-', 6);
String substring7 = getValue(text, '-', 7);
String substring8 = getValue(text, '-', 8);
String substring9 = getValue(text, '-', 9);
String substring10 = getValue(text, '-', 10);
String substring11 = getValue(text, '-', 11);
String substring12 = getValue(text, '-', 12);
String substring13 = getValue(text, '-', 13);
String substring14 = getValue(text, '-', 14);
String substring15 = getValue(text, '-', 15);
String substring16 = getValue(text, '-', 16);
String substring17 = getValue(text, '-', 17);
String substring18 = getValue(text, '-', 18);
b1 = substring0.toInt();
b2 = substring1.toInt();
b3 = substring2.toInt();
b4 = substring3.toInt();
b5 = substring4.toInt();
b6 = substring5.toInt();
b7 = substring6.toInt();
b8 = substring7.toInt();
b9 = substring8.toInt();
b10 = substring9.toInt();
b11 = substring10.toInt();
b12 = substring11.toInt();
b13 = substring12.toInt();
b14 = substring13.toInt();
b15 = substring14.toInt();
b16 = substring15.toInt();
Speed = substring16.toInt();
EEPROM.write(1, b1);
EEPROM.write(2, b2);
EEPROM.write(3, b3);
EEPROM.write(4, b4);
EEPROM.write(5, b5);
EEPROM.write(6, b6);
EEPROM.write(7, b7);
EEPROM.write(8, b8);
EEPROM.write(9, b9);
EEPROM.write(10, b10);
EEPROM.write(11, b11);
EEPROM.write(12, b12);
EEPROM.write(13, b13);
EEPROM.write(14, b14);
EEPROM.write(15, b15);
EEPROM.write(16, b16);
EEPROM.write(17, Speed);
Serial.println("Save Data");
for (int x = 0; x < 3; x++) {
Serial.println("Save Data");
delay(1000);
}
delay(5);
}
//EEPROM.commit();
//aktif HIGH---------------------------------------------------------------------------------------
data_beat[1] = b1;
data_beat[2] = b2;
data_beat[3] = b3;
data_beat[4] = b4;
data_beat[5] = b5;
data_beat[6] = b6;
data_beat[7] = b7;
data_beat[8] = b8;
data_beat[9] = b9;
data_beat[10] = b10;
data_beat[11] = b11;
data_beat[12] = b12;
data_beat[13] = b13;
data_beat[14] = b14;
data_beat[15] = b15;
data_beat[16] = b16;
//---------------------------------------------------------------------------------------
//print_data();
Speed_map = map(Speed, 0, 200, 200, 20);
//Serial.println(Speed_map);
waktu_sekarang = millis();
if (waktu_sekarang - waktu_sebelumnya >= Speed_map) {
waktu_sebelumnya = waktu_sekarang;
count++;
if (count > 16) {
count = 0;
}
}
digitalWrite(relay, data_beat[count]);
//print_data();
//delay(20);
}
void print_data() {
Speed_map = map(Speed, 0, 200, 200, 0);
Serial.print(b1);
Serial.print("-");
Serial.print(b2);
Serial.print("-");
Serial.print(b3);
Serial.print("-");
Serial.print(b4);
Serial.print("-");
Serial.print(b5);
Serial.print("-");
Serial.print(b6);
Serial.print("-");
Serial.print(b7);
Serial.print("-");
Serial.print(b8);
Serial.print("-");
Serial.print(b9);
Serial.print("-");
Serial.print(b10);
Serial.print("-");
Serial.print(b11);
Serial.print("-");
Serial.print(b12);
Serial.print("-");
Serial.print(b13);
Serial.print("-");
Serial.print(b14);
Serial.print("-");
Serial.print(b15);
Serial.print("-");
Serial.print(b16);
Serial.print("-");
Serial.print(Speed);
Serial.print("-");
Serial.println(Speed_map);
}
//-------------------------------------------------------------------------------------
String getValue(String data, char separator, int index) {
int found = 0;
int strIndex[] = { 0, -1 };
int maxIndex = data.length() - 1;
for (int i = 0; i <= maxIndex && found <= index; i++) {
if (data.charAt(i) == separator || i == maxIndex) {
found++;
strIndex[0] = strIndex[1] + 1;
strIndex[1] = (i == maxIndex) ? i + 1 : i;
}
}
return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
}
//---------------------------------------------------------------------------------------