73 #include <SoftwareSerial.h> 77 #define RO 10 // soft UART with interrupt pin. (SSerial RX) 78 #define DI 11 // soft UART with interrupt pin (SSerial TX) 79 #define DE485_F232 3 // RE485B jumpered to here. (SSerialTxControl) 80 #define RE485b 4 // beware of jumper tying to DE485 81 #define MODE485 5 // "select" RS485 if high, 232 if low. 82 #define TE485b 6 // RS485 termination enable BAR 83 #define LB 7 // Loopback 232 or 485 84 #define SHDNb 2 // Shutdown BAR 97 pinMode(
RO, INPUT_PULLUP);
104 pinMode(
SHDNb,OUTPUT);
107 digitalWrite(
DI,LOW);
109 digitalWrite(
RE485b,HIGH);
111 digitalWrite(
TE485b,HIGH);
112 digitalWrite(
LB,LOW);
113 digitalWrite(
SHDNb,LOW);
115 TCCR2B = TCCR2B & 0b11111000 | 0x01;
119 Serial.begin(115200);
129 Serial.print(F(
" "));
131 if (user_command > 0 && user_command < 27)
134 Serial.print(user_command);
137 else if (user_command ==
'm')
140 Serial.print(F(
"m"));
145 Serial.println(F(
"Wrong choice. TRY AGAIN!"));
152 Serial.println(F(
" "));
153 Serial.println(F(
"**************************************************************************"));
154 Serial.println(F(
"DC2364A Demonstration Board for the LTC2873 "));
155 Serial.println(F(
"**************************************************************************"));
156 Serial.println(F(
"PIN CONTROL: MODES:"));
157 Serial.println(F(
"1. Flip SHDNb 10. Shutdown 19. 485 Term"));
158 Serial.println(F(
"2. Flip 485/232b 11. 232 RX+TX Slow 20. 485 RX+Term"));
159 Serial.println(F(
"3. Flip RE485b 12. 232 RX+TX Fast 21. 485 TX+Term"));
160 Serial.println(F(
"4. Flip DE485/F232 13. 232 Loopbk+TX Slow 22. 485 RX+TX+Term"));
161 Serial.println(F(
"5. Flip TE485b 14. 232 Loopbk+TX Fast 23. 485 Loopbk"));
162 Serial.println(F(
"6. Flip LB 15. 485 Ready 24. 485 Loopbk+TX"));
163 Serial.println(F(
"7. Flip DI 16. 485 RX 25. 485 Loopbk+Term"));
164 Serial.println(F(
"8. 31.4kHz 50% on DI* 17. 485 TX 26. 485 Loopbk+TX+Term"));
165 Serial.println(F(
"9. 31.4kHz 10% on DI* 18. 485 RX+TX "));
166 Serial.println(F(
"**************************************************************************"));
167 Serial.println(F(
"Press m to stop 31.4 kHz signal "));
168 Serial.println(F(
" "));
169 Serial.println(F(
"CURRENT STATE:"));
170 Serial.println(F(
"User Entry SHDNb 485 RE485b DE485 TE485b LB DI MODE"));
171 Serial.println(F(
"-----------------------------------------------------------------------------"));
172 Serial.print(F(
" "));
185 Serial.print(F(
"\t\t"));
187 Serial.print(F(
"\t"));
189 Serial.print(F(
"\t"));
191 Serial.print(F(
"\t"));
193 Serial.print(F(
"\t"));
195 Serial.print(F(
"\t"));
196 Serial.print(
LB_val, DEC);
197 Serial.print(F(
"\t"));
208 Serial.print(F(
"\t"));
210 String status_val =
status();
212 Serial.print(status_val);
213 Serial.print(F(
"\n"));
222 return "232 RX+TX SLOW";
224 return "232 LB+TX SLOW";
226 return "232 RX+TX FAST";
228 return "232 LB+TX FAST";
236 return "485 TX+TERM";
240 return "485 RX+TERM";
244 return "485 RX+TX+TERM";
248 return "485 LB+TERM";
252 return "485 LB+TX+TERM";
260 status = status +
"SHUTDOWN";
265 status = status +
"485 ";
267 status = status +
"ENABLE ";
269 status = status +
"DISABLE ";
273 status = status +
"232 ";
275 status = status +
"FAST ";
277 status = status +
"SLOW ";
281 status = status +
"LB ";
283 status = status +
"RX ";
285 status = status +
"TX ";
288 status = status +
"TERM ";
296 int pinValue = digitalRead(pin);
298 digitalWrite(pin, LOW);
300 digitalWrite(pin, HIGH);
306 switch (user_command)
374 digitalWrite(
SHDNb,LOW);
376 digitalWrite(
RE485b,HIGH);
378 digitalWrite(
TE485b,HIGH);
379 digitalWrite(
LB,LOW);
386 digitalWrite(
SHDNb,HIGH);
388 digitalWrite(
RE485b,HIGH);
390 digitalWrite(
TE485b,HIGH);
391 digitalWrite(
LB,LOW);
398 digitalWrite(
SHDNb,HIGH);
400 digitalWrite(
RE485b,HIGH);
402 digitalWrite(
TE485b,HIGH);
403 digitalWrite(
LB,LOW);
410 digitalWrite(
SHDNb,HIGH);
412 digitalWrite(
RE485b,HIGH);
414 digitalWrite(
TE485b,HIGH);
415 digitalWrite(
LB,HIGH);
422 digitalWrite(
SHDNb,HIGH);
424 digitalWrite(
RE485b,HIGH);
426 digitalWrite(
TE485b,HIGH);
427 digitalWrite(
LB,HIGH);
434 digitalWrite(
SHDNb,HIGH);
436 digitalWrite(
RE485b,HIGH);
438 digitalWrite(
TE485b,HIGH);
439 digitalWrite(
LB,LOW);
446 digitalWrite(
SHDNb,HIGH);
450 digitalWrite(
TE485b,HIGH);
451 digitalWrite(
LB,LOW);
458 digitalWrite(
SHDNb,HIGH);
460 digitalWrite(
RE485b,HIGH);
462 digitalWrite(
TE485b,HIGH);
463 digitalWrite(
LB,LOW);
470 digitalWrite(
SHDNb,HIGH);
474 digitalWrite(
TE485b,HIGH);
475 digitalWrite(
LB,LOW);
482 digitalWrite(
SHDNb,HIGH);
484 digitalWrite(
RE485b,HIGH);
487 digitalWrite(
LB,LOW);
494 digitalWrite(
SHDNb,HIGH);
499 digitalWrite(
LB,LOW);
506 digitalWrite(
SHDNb,HIGH);
508 digitalWrite(
RE485b,HIGH);
511 digitalWrite(
LB,LOW);
518 digitalWrite(
SHDNb,HIGH);
523 digitalWrite(
LB,LOW);
530 digitalWrite(
SHDNb,HIGH);
534 digitalWrite(
TE485b,HIGH);
535 digitalWrite(
LB,HIGH);
542 digitalWrite(
SHDNb,HIGH);
546 digitalWrite(
TE485b,HIGH);
547 digitalWrite(
LB,HIGH);
554 digitalWrite(
SHDNb,HIGH);
559 digitalWrite(
LB,HIGH);
566 digitalWrite(
SHDNb,HIGH);
571 digitalWrite(
LB,HIGH);
String find_status(void)
Returns a descriptive string based on status of pins.
unsigned char user_command
String status(void)
Returns a descriptive string based on status of pins.
static int DE485_F232_val
static void print_title(void)
Prints the title block when program first starts.
static void flipPin(uint8_t pin)
Function to toggle the state of a pin.
static void loop()
Repeats Linduino loop.
static void update(uint8_t user_command)
Update the state of pins based on user selection.
static void setup()
Initialize Linduino.
static void print_status(void)
Prints the status of each pin based on user selection.