You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
listen() is notionally for reading, as only one software instance can listen at a time.
However, listen() is also required on NeoSWSerial for writing, or else everything you write out will be written out to the last instantiated NeoSWSerial regardless of which NeoSWSerial instance you wrote to.
Example code below. (Note this code also works around another NeoSWSerial error: you must have a valid pin on RX or it won't write out TX properly. You can't add 255 or whatnot).
#include <NeoSWSerial.h>
#define CV_POT_IN1 A2 // CC 1 Value
#define CV_POT_IN2 A1 // CC 2 Value
#define CV_POT3 A0 // CC 3 Value
#define CV_IN3 A3 // PORT 2
#define CV_AUDIO_IN A4 // PORT 3
#define CV_AUDIO_OUT 11 // MIDI Clock (only when between start/continue and stop)
#define CV_GATE_OUT 8 // PORT 1
#define SERIAL_1_RX 5 // Blank Serial Pin
#define SERIAL_2_RX 6 // Blank Serial Pin
#define SERIAL_3_RX 7 // Blank Serial Pin
NeoSWSerial mySerial1(SERIAL_1_RX, CV_AUDIO_IN);
NeoSWSerial mySerial2(SERIAL_2_RX, CV_IN3);
NeoSWSerial mySerial3(SERIAL_3_RX, CV_GATE_OUT);
void setup()
{
mySerial1.begin(31250);
mySerial2.begin(31250);
mySerial3.begin(31250);
}
void write(NeoSWSerial* sw, uint8_t a, uint8_t b, uint8_t c)
{
// THIS LISTEN IS REQUIRED
sw->listen();
sw->write(a);
sw->write(b);
sw->write(c);
}
void loop() {
write(&mySerial1, 0x90, 60, 127);
delay(1000);
write(&mySerial1, 0x80, 60, 127);
write(&mySerial2, 0x90, 62, 127);
delay(1000);
write(&mySerial2, 0x80, 62, 127);
write(&mySerial3, 0x90, 64, 127);
delay(1000);
write(&mySerial3, 0x80, 64, 127);
}
The text was updated successfully, but these errors were encountered:
eclab
changed the title
NeoSWSerial does not *write* to multiple instances without setting *listen()*
NeoSWSerial does not *write* to multiple instances without setting listen()
Jan 3, 2024
listen() is notionally for reading, as only one software instance can listen at a time.
However, listen() is also required on NeoSWSerial for writing, or else everything you write out will be written out to the last instantiated NeoSWSerial regardless of which NeoSWSerial instance you wrote to.
Example code below. (Note this code also works around another NeoSWSerial error: you must have a valid pin on RX or it won't write out TX properly. You can't add 255 or whatnot).
The text was updated successfully, but these errors were encountered: