mirror of
https://github.com/digistump/DigistumpArduino.git
synced 2025-04-28 15:49:02 -07:00
119 lines
2.4 KiB
Arduino
119 lines
2.4 KiB
Arduino
![]() |
bool start = true;
|
||
|
String message = "";
|
||
|
|
||
|
|
||
|
#include <DigiFi.h>
|
||
|
|
||
|
DigiFi wifi;
|
||
|
|
||
|
//#define DEBUG
|
||
|
#include <Wire.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
|
||
|
|
||
|
#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.
|
||
|
|
||
|
|
||
|
LiquidCrystal_I2C lcd(GPIO_ADDR,16,2); // set address & 16 chars / 2 lines
|
||
|
|
||
|
|
||
|
|
||
|
// Require keyboard control library
|
||
|
#include <KeyboardController.h>
|
||
|
|
||
|
// Initialize USB Controller
|
||
|
USBHost usb;
|
||
|
|
||
|
// Attach keyboard controller to USB
|
||
|
KeyboardController keyboard(usb);
|
||
|
|
||
|
// This function intercepts key press
|
||
|
void keyPressed() {
|
||
|
|
||
|
}
|
||
|
|
||
|
// This function intercepts key release
|
||
|
void keyReleased() {
|
||
|
|
||
|
printKey();
|
||
|
}
|
||
|
|
||
|
void printKey() {
|
||
|
|
||
|
if(start){
|
||
|
lcd.clear();
|
||
|
lcd.home();
|
||
|
start = false;
|
||
|
}
|
||
|
|
||
|
if(keyboard.getOemKey()==40){//enter pressed
|
||
|
lcd.noAutoscroll();
|
||
|
lcd.clear();
|
||
|
lcd.home();
|
||
|
lcd.print("Sending tweet...");
|
||
|
if(wifi.post("api.thingspeak.com","/apps/thingtweet/1/statuses/update","api_key=[YOURTHINGTWEETAPIKEY]&status="+wifi.URLEncode(message))){
|
||
|
lcd.clear();
|
||
|
lcd.home();
|
||
|
lcd.print("Tweet sent!");
|
||
|
}
|
||
|
else{
|
||
|
lcd.clear();
|
||
|
lcd.home();
|
||
|
lcd.print("Error sending!");
|
||
|
}
|
||
|
delay(3000);
|
||
|
lcd.clear();
|
||
|
lcd.home();
|
||
|
lcd.print("DigiX - Ready!");
|
||
|
message ="";
|
||
|
start=true;
|
||
|
lcd.noAutoscroll();
|
||
|
}
|
||
|
else{
|
||
|
// getKey() returns the ASCII translation of OEM key
|
||
|
// combined with modifiers.
|
||
|
|
||
|
char nextChar = keyboard.getKey();
|
||
|
lcd.print(nextChar);
|
||
|
message += nextChar;
|
||
|
if(message.length()==16)
|
||
|
lcd.autoscroll();
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void setup()
|
||
|
{
|
||
|
Wire1.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.print("Starting....");
|
||
|
delay(5000); //give wifi some time to warm up
|
||
|
lcd.clear();
|
||
|
lcd.print("WiFi Starting...");
|
||
|
wifi.begin(9600);
|
||
|
|
||
|
delay(200);
|
||
|
|
||
|
while (wifi.ready() != 1)
|
||
|
{
|
||
|
lcd.home();
|
||
|
lcd.print("WiFi not ready");
|
||
|
delay(15000);
|
||
|
}
|
||
|
lcd.clear();
|
||
|
lcd.home();
|
||
|
lcd.print("DigiX - Ready!");
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
void loop()
|
||
|
{
|
||
|
// Process USB tasks
|
||
|
usb.Task();
|
||
|
}
|