mirror of
				https://github.com/digistump/DigistumpArduino.git
				synced 2025-11-03 21:14:46 -08:00 
			
		
		
		
	Initial import of support files for all Digistump boards - Digispark, Pro, DigiX - including libraries, examples, tools, and other support files for the Arduino IDE
This commit is contained in:
		@@ -0,0 +1,81 @@
 | 
			
		||||
/* 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();
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user