hello!
my 2 cents on blynk_read / write:
it would be much compact / nicer / readable to use just one instance of the BLYNK_READ() function, and put all Blynk.virtualWrite(pin, value); stuff inside.
currently, i have to write something like this - i can’t even use a “for” cycle
// send stuff to phone:
BLYNK_READ(BATTLOW) {
Blynk.virtualWrite(BATTLOW, battLow);
}
BLYNK_READ(BATTERY) {
Blynk.virtualWrite(BATTERY, battery);
}
BLYNK_READ(SPD) {
Blynk.virtualWrite(SPD, spd);
}
BLYNK_READ(SPDAVG) {
Blynk.virtualWrite(SPDAVG, spdAvg);
}
BLYNK_READ(SPDMAX) {
Blynk.virtualWrite(SPDMAX, spdMax);
}
BLYNK_READ(RPM) {
Blynk.virtualWrite(RPM, rpm);
}
BLYNK_READ(RPMAVG) {
Blynk.virtualWrite(RPMAVG, rpmAvg);
}
BLYNK_READ(RPMMAX) {
Blynk.virtualWrite(RPMMAX, rpmMax);
}
BLYNK_READ(TRIP) {
Blynk.virtualWrite(TRIP, tripMM / 1000000.0);
}
BLYNK_READ(ODO) {
Blynk.virtualWrite(ODO, odo);
}
BLYNK_READ(INCLINATION) {
Blynk.virtualWrite(INCLINATION, inclination);
}
BLYNK_READ(AUTO_MODE) {
Blynk.virtualWrite(AUTO_MODE, autoMode);
}
BLYNK_READ(TOTSHIFT) {
Blynk.virtualWrite(TOTSHIFT, readEp(7));
}
BLYNK_READ(GEAR) {
Blynk.virtualWrite(GEAR, EEPROM.read(2));
}
BLYNK_READ(UPTIME) {
Blynk.virtualWrite(UPTIME, millis() / 1000);
}
…not really meets the “do not repeat yourself” principle…
this could be:
// send stuff to phone:
BLYNK_READ()
{
Blynk.virtualWrite(BATTLOW, battLow);
Blynk.virtualWrite(BATTERY, battery);
Blynk.virtualWrite(SPD, spd);
Blynk.virtualWrite(SPDAVG, spdAvg);
Blynk.virtualWrite(SPDMAX, spdMax);
Blynk.virtualWrite(RPM, rpm);
Blynk.virtualWrite(RPMAVG, rpmAvg);
Blynk.virtualWrite(RPMMAX, rpmMax);
Blynk.virtualWrite(TRIP, tripMM / 1000000);
Blynk.virtualWrite(ODO, odo);
Blynk.virtualWrite(INCLINATION, inclination);
Blynk.virtualWrite(AUTO_MODE, autoMode);
Blynk.virtualWrite(TOTSHIFT, readEp(7));
Blynk.virtualWrite(GEAR, EEPROM.read(2));
Blynk.virtualWrite(UPTIME, millis() / 1000);
}
than i could do something like this:
BLYNK_READ()
{
byte virtualWriteBytes[8] = {battlow, battery, spd, spdAvg, spdMax, rpm, rpmAvg, rpmMax};
int virtualWriteInts[6] = {tripMM / 1000000, odo, inclination, autoMode, readEp(7), millis() / 1000};
for (byte i = 0; i < 8; i++) {
Blynk.virtualWrite(i, vwBytes[i]);
}
for (byte i = 0; i < 6; i++) {
Blynk.virtualWrite(i + 8, vwInts[i]);
}
}
the same goes to BLYNK_WRITE(). it could be:
BLYNK_WRITE()
{
autoMode = param.asInt(vpin);
if (param.asInt(vpin) == 1 && EEPROM.read(2) < 14) shiftUp = true;
if (param.asInt(vpin) == 1 && EEPROM.read(2) > 1) shiftDown = true;
if (param.asInt(vpin) == 1) tripMM = 0, rpmAvg = 0, rpmMax = 0, spdAvg = 0, spdMax = 0;
opRpm = param.asInt(vpin);
}
or there is a better way currently to do a lots of virtual writes / read without repeating all this lines?
think of it, if you have to use all the 128 virtual pins on a arduino mega?