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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user