does anyone know how to set the logic to start at LOW instead of HIGH. I am sending my data with serial.write but the problem is my start bit is a ('0') and my stop bit is ('1') because the logic is a HIGH. I want the logic to be low so my start bit will be ('1') and my stop bit will be ('0'). I would like to know a way in software and if there is none how about hardware?
I agree with Lefty, serial is always high (1) for idle state (eg. stop bits) and low (0) for a start bit. I doubt you can change that behaviour of the hardware in software (of course, modifying SoftwareSerial would do it).
So either do your "inverted" version of SoftwareSerial or use a logic-inverting gate/op-amp.
Look at page 181 of the Atmega328 spec:
Start bit, always low.
Data bits (0 to 8).
Parity bit. Can be odd or even.
Stop bit, always high.
IDLE No transfers on the communication line (RxDn or TxDn). An IDLE line must be high.