Tasmota/lib/lib_display/arduino-tm1637/examples/SerialPrint/SerialPrint.ino

80 lines
2.8 KiB
Arduino
Raw Normal View History

/*
Serial Print example
Prints text typed to the Serial Monitor on the display. Connect an Arduino to a TM1637 4 digit 7-segment display. Connect the wires as descibed below. Run the sketch and open the Serial Monitor. Set the the speed to 9600 baud, set the line ending to Newline. Now type some text and press enter, the text will be displayed on the 7-segment display.
Note: make sure to set your serial monitor to line end: NEW LINE!
The circuit:
* connect TM1637 pin CLK to Arduino pin D4
* connect TM1637 pin DIO to Arduino pin D5
* connect TM1637 pin Vcc to Arduino pin 5V
* connect TM1637 pin GND to Arduino pin GND
Created 25 September 2015
By Bram Harmsen
http://url/of/online/tutorial.cc
*/
// include the SevenSegmentTM1637 library
#include "SevenSegmentTM1637.h"
/* initialize global TM1637 Display object
* The constructor takes two arguments, the number of the clock pin and the digital output pin:
* SevenSegmentTM1637(byte pinCLK, byte pinDIO);
*/
const byte PIN_CLK = 4; // define CLK pin (any digital pin)
const byte PIN_DIO = 5; // define DIO pin (any digital pin)
SevenSegmentTM1637 display(PIN_CLK, PIN_DIO);
// define a fixed buffer size for receiving characters via Serial
const byte BUFFER_SIZE = 128;
char serialBuffer[BUFFER_SIZE]; // initialize global serial buffer
// run setup code
void setup() {
display.begin(); // initializes the display
Serial.begin(9600); // initializes the Serial connection @ 9600 baud
Serial.println(F("Enter some text followed by ENTER"));
Serial.println(F("also make sure to set the line ending to Newline (\\n)"));
};
// run loop (forever)
void loop() {
// if received new serial data, print to display
if ( receivedSerialString() ) {
display.print(serialBuffer); // Print received serial data to display
Serial.print(F("Echo:\t")); // Echo serial data back to Serial Monitor
Serial.println(serialBuffer);
};
};
// Read in bytes from Serial Monitor and return true is ether the serialBuffer is full or a Newline character is received
bool receivedSerialString() {
static unsigned int i=0; // init static counter to keep track of count
while( Serial.available() ) { // check if new data arrived
if ( i == BUFFER_SIZE-1) { // if buffer is full RETURN true
serialBuffer[i] = '\0'; // add termination char
i = 0;
Serial.println(F("Buffer full!"));
return true;
};
char c = Serial.read(); // read new char from serial port
if ( c == '\n') { // if new line RETURN true
serialBuffer[i] = '\0'; // add termination char
i = 0;
return true;
} else {
serialBuffer[i] = c; // add received character to buffer
}
i++; // increase counter
};
return false; // default RETURN false
};