I've got a LattePanda 3 Delta, which runs windows on its main processor and an Arduino sketch called StandardFirmata on its coprocessor. It's connected to a lock, which locks at HIGH and unlocks at LOW.
When I boot/reboot the LattePanda, there is a short time window where the lock goes haywire. I've managed to fix the worst of it by explicitly setting default pin values inside setup(), but I guess the pins float before setup() has a chance to run.
The setup() method now looks like this:
void setup() {
// OUTPUT pins
for (int i = 0; i <= 6; i++) {
pinMode(i, OUTPUT);
}
for (int i = 18; i <= 20; i++) {
pinMode(i, OUTPUT);
}
// INPUT pins
for (int i = 7; i <= 13; i++) {
pinMode(i, INPUT_PULLUP);
}
for (int i = 21; i <= 23; i++) {
pinMode(i, INPUT_PULLUP);
}
Firmata.begin(57600);
Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION);
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
Firmata.attach(DIGITAL_MESSAGE, digitalWriteCallback);
Firmata.attach(REPORT_ANALOG, reportAnalogCallback);
Firmata.attach(REPORT_DIGITAL, reportDigitalCallback);
Firmata.attach(SET_PIN_MODE, setPinModeCallback);
Firmata.attach(SET_DIGITAL_PIN_VALUE, setPinValueCallback);
Firmata.attach(START_SYSEX, sysexCallback);
Firmata.attach(SYSTEM_RESET, systemResetCallback);
while (!Serial) {;}
systemResetCallback();
}
Is there a way to set pin values even earlier than setup()? I absolutely need them to NOT float. At all.
