Removed old comments, fixed high latency issue
This commit is contained in:
parent
753ef6f75f
commit
497de2ec28
|
@ -35,5 +35,6 @@ By default, uploading this program and then writing to the serial device doesn't
|
|||
3. Write stuff to the serial device - now it should work
|
||||
|
||||
### Previously was working
|
||||
I basically had to rewrite this from scratch - the Arduino had the program uploaded on it but I lost the code. That version had fast refresh rates but this one takes like 2 seconds to refresh the LCD. I don't have any applications that would break due to this so it isn't important.
|
||||
I basically had to rewrite this from scratch - the Arduino had the program uploaded on it but I lost the code. ~~That version had fast refresh rates but this one takes like 2 seconds to refresh the LCD. I don't have any applications that would break due to this so it isn't important. ~~
|
||||
I fixed this issue. Apparently `Serial.readString()` is extremely slow, but `Serial.readStringUntil('\n')` (equivalent in this case) is much faster. Not sure on why but it works. I have effectively instant updates now.
|
||||
|
||||
|
|
73
main.cpp
73
main.cpp
|
@ -1,85 +1,36 @@
|
|||
/*
|
||||
LiquidCrystal Library - Hello World
|
||||
|
||||
Demonstrates the use a 16x2 LCD display. The LiquidCrystal
|
||||
library works with all LCD displays that are compatible with the
|
||||
Hitachi HD44780 driver. There are many of them out there, and you
|
||||
can usually tell them by the 16-pin interface.
|
||||
|
||||
This sketch prints "Hello World!" to the LCD
|
||||
and shows the time.
|
||||
|
||||
The circuit:
|
||||
* LCD RS pin to digital pin 12
|
||||
* LCD Enable pin to digital pin 11
|
||||
* LCD D4 pin to digital pin 5
|
||||
* LCD D5 pin to digital pin 4
|
||||
* LCD D6 pin to digital pin 3
|
||||
* LCD D7 pin to digital pin 2
|
||||
* LCD R/W pin to ground
|
||||
* LCD VSS pin to ground
|
||||
* LCD VCC pin to 5V
|
||||
* 10K resistor:
|
||||
* ends to +5V and ground
|
||||
* wiper to LCD VO pin (pin 3)
|
||||
|
||||
Library originally added 18 Apr 2008
|
||||
by David A. Mellis
|
||||
library modified 5 Jul 2009
|
||||
by Limor Fried (http://www.ladyada.net)
|
||||
example added 9 Jul 2009
|
||||
by Tom Igoe
|
||||
modified 22 Nov 2010
|
||||
by Tom Igoe
|
||||
modified 7 Nov 2016
|
||||
by Arturo Guadalupi
|
||||
|
||||
This example code is in the public domain.
|
||||
|
||||
https://docs.arduino.cc/learn/electronics/lcd-displays
|
||||
|
||||
*/
|
||||
|
||||
// include the library code:
|
||||
#include <Arduino.h>
|
||||
#include <LiquidCrystal.h>
|
||||
//#include <Time.h>
|
||||
|
||||
// initialize the library by associating any needed LCD interface pin
|
||||
// with the arduino pin number it is connected to
|
||||
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
|
||||
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
|
||||
char buffer_line1[16];
|
||||
char buffer_line2[16];
|
||||
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
// set up the LCD's number of columns and rows:
|
||||
lcd.begin(16, 2);
|
||||
lcd.clear();
|
||||
// Print a message to the LCD.
|
||||
//lcd.print("hello, world!");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
// set the cursor to column 0, line 1
|
||||
// (note: line 1 is the second row, since counting begins with 0):
|
||||
lcd.setCursor(0, 0);
|
||||
// print the number of seconds since reset:
|
||||
//lcd.print(millis() / 1000);
|
||||
while (Serial.available() == 0) {}
|
||||
//lcd.clear();
|
||||
String s = Serial.readString();
|
||||
s.trim();
|
||||
int nl_idx = s.indexOf("?", 0);
|
||||
lcd.clear();
|
||||
lcd.setCursor(0, 0);
|
||||
String s1 = Serial.readStringUntil('\n'); // This fixed performance issue
|
||||
int nl_idx = s1.indexOf("?", 0);
|
||||
if (nl_idx == -1) {
|
||||
lcd.print(s);
|
||||
lcd.print(s1);
|
||||
}
|
||||
else {
|
||||
String l1 = s.substring(0, nl_idx);
|
||||
String l2 = s.substring(nl_idx+1, s.length());
|
||||
lcd.print(l1);
|
||||
String s2 = s1.substring(nl_idx+1, s1.length());
|
||||
s1 = s1.substring(0, nl_idx);
|
||||
lcd.print(s1);
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print(l2);
|
||||
|
||||
lcd.print(s2);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue