I read a couple of things online that made oblique references to inverting signals, then decided I wanted to invert a TTL signal, despite having no inverter chips lying around, so... this code allows an Arduino to emulate an inverter that could be made from a couple of resistors and a transistor:
void setup(){
pinMode(7,INPUT);
pinMode(8,OUTPUT);
}
void loop(){
if(digitalRead(7) == HIGH) digitalWrite(8, LOW);
else digitalWrite(8,HIGH);
}
which in turn allowed me to successfully read the NMEA data from my antique Standard Horizon CP150C chart plotter. The plotter provides 2 wire connection for the serial NMEA sentences it shares with the world, but for some unknown reason related to RS232 and RS 422 and NMEA, the data is inverted, 5 volts when the listener expects 0 and 0 when the listener expects 5. Suddenly, by magic, I get
$GPGLL,,,,,215457,V*06
instead of
..\%........3g..*.N.Y..L.=..\%........3ge.>>N.Y....=..\%....
and that GLL sentence would have a whole lot more position data between those commas if the antenna could just see a few satellites from here in the workshop.
$GPGLL,4413.734,N,07629.154,W,221318,A*3B
I hope the next person who googles for
CP150C NMEA to RS232 serial
finds this page to answer their question quickly.