Many people seem to be using software serial (or software I2C, software SPI)
My question then becomes, "why"? Why bang them in software while you can take advantage of the native hardware on the dedicated pins (on the dedicated
ICSP header)? It solve so many potential issues and make your device run faster.
Now, I understand that you might want to use the pins for other tasks, but why use
software serial when the real serial pins are literally 2cm away?
First of all, because the pins are literally 2cm away I assume wire length is not a problem. Eliminating that, I can't just think of another answer.
I have never used software serial. Or software I2C. Or software SPI. I design my boards (yes) to pull SPI from the
ICSP header (yes, it's a arduino leonardo/zero/due so you can only get them from there). I broke out physical RX/TX pins and physical SDA/SCL pins as well as physical CIPO/COPI/SCK/RST lines.
Like, it's not even hard to wire them up to the real serial/SPI/I2C pins. So the question to software serial then becomes, "why?"
Yes, I understand that on the UNO the serial is connected to the programmer. But that board, because how many pins on the rail is duplicates of the ICSP header (as well as the "broken" rx/tx pins) I consider that board to be "flawed". So in that case I can understand why someone might be using software serial as the real ones are "broken". Leonardo is just in every single way better.
But why use them on, say, a Mega? Why use software SPI?
I don't understand. I want those that use software bit-banged communication protocol to explain.