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
|
3. Write stuff to the serial device - now it should work
|
||||||
|
|
||||||
### Previously was working
|
### 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 the library code:
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <LiquidCrystal.h>
|
#include <LiquidCrystal.h>
|
||||||
//#include <Time.h>
|
|
||||||
|
|
||||||
// initialize the library by associating any needed LCD interface pin
|
// initialize the library by associating any needed LCD interface pin
|
||||||
// with the arduino pin number it is connected to
|
// with the arduino pin number it is connected to
|
||||||
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
|
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
|
||||||
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
|
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
|
||||||
|
char buffer_line1[16];
|
||||||
|
char buffer_line2[16];
|
||||||
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
// set up the LCD's number of columns and rows:
|
// set up the LCD's number of columns and rows:
|
||||||
lcd.begin(16, 2);
|
lcd.begin(16, 2);
|
||||||
lcd.clear();
|
lcd.clear();
|
||||||
// Print a message to the LCD.
|
|
||||||
//lcd.print("hello, world!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
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) {}
|
while (Serial.available() == 0) {}
|
||||||
//lcd.clear();
|
lcd.clear();
|
||||||
String s = Serial.readString();
|
lcd.setCursor(0, 0);
|
||||||
s.trim();
|
String s1 = Serial.readStringUntil('\n'); // This fixed performance issue
|
||||||
int nl_idx = s.indexOf("?", 0);
|
int nl_idx = s1.indexOf("?", 0);
|
||||||
if (nl_idx == -1) {
|
if (nl_idx == -1) {
|
||||||
lcd.print(s);
|
lcd.print(s1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String l1 = s.substring(0, nl_idx);
|
String s2 = s1.substring(nl_idx+1, s1.length());
|
||||||
String l2 = s.substring(nl_idx+1, s.length());
|
s1 = s1.substring(0, nl_idx);
|
||||||
lcd.print(l1);
|
lcd.print(s1);
|
||||||
lcd.setCursor(0, 1);
|
lcd.setCursor(0, 1);
|
||||||
lcd.print(l2);
|
lcd.print(s2);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue