mirror of
https://github.com/digistump/DigistumpArduino.git
synced 2025-04-28 15:49:02 -07:00
81 lines
2.0 KiB
Arduino
81 lines
2.0 KiB
Arduino
![]() |
/* USB LCD */
|
||
|
|
||
|
//#define DEBUG
|
||
|
#include <TinyWireM.h> // I2C Master lib for ATTinys which use USI - comment this out to use with standard arduinos
|
||
|
#include <LiquidCrystal_I2C.h> // for LCD w/ GPIO MODIFIED for the ATtiny85
|
||
|
#include <DigiUSB.h>
|
||
|
|
||
|
#define GPIO_ADDR 0x27 // (PCA8574A A0-A2 @5V) typ. A0-A3 Gnd 0x20 / 0x38 for A - 0x27 is the address of the Digispark LCD modules.
|
||
|
int currentLine = 0;
|
||
|
boolean clearOnNext = 0;
|
||
|
boolean backlight = 1;
|
||
|
|
||
|
LiquidCrystal_I2C lcd(GPIO_ADDR,16,2); // set address & 16 chars / 2 lines
|
||
|
|
||
|
|
||
|
void setup(){
|
||
|
DigiUSB.begin();
|
||
|
TinyWireM.begin(); // initialize I2C lib - comment this out to use with standard arduinos
|
||
|
lcd.init(); // initialize the lcd
|
||
|
lcd.backlight(); // Print a message to the LCD.
|
||
|
lcd.setCursor(0, currentLine);
|
||
|
}
|
||
|
|
||
|
|
||
|
void get_input() {
|
||
|
|
||
|
int lastRead;
|
||
|
// when there are no characters to read, or the character isn't a newline
|
||
|
while (1==1) {
|
||
|
if(DigiUSB.available()){
|
||
|
//something to read
|
||
|
lastRead = DigiUSB.read();
|
||
|
if(lastRead == '\n'){
|
||
|
|
||
|
|
||
|
if(currentLine > 0)
|
||
|
currentLine = 0;
|
||
|
else
|
||
|
currentLine = 1;
|
||
|
|
||
|
clearOnNext = 1;
|
||
|
|
||
|
lcd.setCursor(0, currentLine);
|
||
|
|
||
|
}
|
||
|
else if(lastRead == 172){ //not sign "¬" send it with the send program to toggle the backlight
|
||
|
if(backlight){
|
||
|
lcd.noBacklight();
|
||
|
backlight = 0;
|
||
|
}
|
||
|
else{
|
||
|
lcd.backlight();
|
||
|
backlight = 1;
|
||
|
}
|
||
|
DigiUSB.read(); //read to nothing to get rid of newline that should come after it
|
||
|
|
||
|
}
|
||
|
else{
|
||
|
if(clearOnNext){
|
||
|
lcd.print(" "); //clear a single line
|
||
|
lcd.setCursor(0, currentLine);
|
||
|
clearOnNext=0;
|
||
|
}
|
||
|
lcd.print(char(lastRead));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
// refresh the usb port
|
||
|
DigiUSB.refresh();
|
||
|
delay(10);
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
void loop(){
|
||
|
get_input();
|
||
|
}
|