From 9c34d4ceaf0295a538372c0a8c5065ce167ec6be Mon Sep 17 00:00:00 2001 From: Mike C Date: Tue, 26 Mar 2013 21:38:14 -0400 Subject: [PATCH] Rough addition of PSP joystick and dedicated push button; Also ran Arduino IDE code formatter --- Universal_Serial_Adapter/Project.h | 2 +- .../Universal_Serial_Adapter.ino | 123 +++++++++++++----- 2 files changed, 89 insertions(+), 36 deletions(-) diff --git a/Universal_Serial_Adapter/Project.h b/Universal_Serial_Adapter/Project.h index 25ca184..1163dbb 100644 --- a/Universal_Serial_Adapter/Project.h +++ b/Universal_Serial_Adapter/Project.h @@ -8,7 +8,7 @@ attribute. */ -#include +#include "ColorLCDShield.h" // Standard colors #define BACKGROUND BLACK diff --git a/Universal_Serial_Adapter/Universal_Serial_Adapter.ino b/Universal_Serial_Adapter/Universal_Serial_Adapter.ino index 77bac91..a1a1f21 100644 --- a/Universal_Serial_Adapter/Universal_Serial_Adapter.ino +++ b/Universal_Serial_Adapter/Universal_Serial_Adapter.ino @@ -1,18 +1,44 @@ /* Serial Adapter Project: Dynamic serial TTY passthroughs - by: Mike Crosson - Nusku Networks - date: 2013/03/09 - license: CC-BY SA 3.0 - Creative commons share-alike 3.0 - use this code however you'd like, just keep this license and - attribute. -*/ + by: Mike Crosson + Nusku Networks + date: 2013/03/09 + license: CC-BY SA 3.0 - Creative commons share-alike 3.0 + use this code however you'd like, just keep this license and + attribute. + */ -#include +#include "ColorLCDShield.h" #include "Project.h" #include "UI.h" +const int okButtonPin= 22; +const int cancelButtonPin = 23; + +// variables will change: +int okButtonState = 0; +int prevOkButtonState = okButtonState; +int cancelButtonState = 0; +int prevCancelButtonState = 0; + +long upCount = 0; +long downCount = 0; + +const int Left = 1; +const int Right = 2; +const int Up = 3; +const int Down = 4; + +int xpin = 0; // After GND / @ edge +int ypin = 1; // Between VCC and gnd + +int xAxis; +int yAxis; +char* myStrings[]={ + "Left","Right","Up","Down"}; +int button; + // Map a mode -> text value char* modeToText[4] = { "Phone UART", @@ -23,19 +49,31 @@ char* modeToText[4] = { // Known and supported line speeds linespeedinfo linespeeds[6] = { - {"2400b", 2400}, - {"9600b", 9600}, - {"19.2k", 19200}, - {"38.4k", 38400}, - {"57.5k", 57600}, - {"115k", 115200} + { + "2400b", 2400 } + , + { + "9600b", 9600 } + , + { + "19.2k", 19200 } + , + { + "38.4k", 38400 } + , + { + "57.5k", 57600 } + , + { + "115k", 115200 } }; // LCD LCDShield lcd; // Line length max is 16 // Buttons -int buttonPins[3] = {3, 4, 5}; +int buttonPins[3] = { + 3, 4, 5}; // Mode info needed serialmode currentMode = none; @@ -55,50 +93,65 @@ void setup() { pinMode(buttonPins[i], INPUT); digitalWrite(buttonPins[i], HIGH); } - + + pinMode(okButtonPin, INPUT); + pinMode(cancelButtonPin, INPUT); + /* Initialize the LCD, set the contrast, clear the screen */ lcd.init(PHILIPS); lcd.contrast(-63); lcd.clear(BACKGROUND); - + // Print the modes // Uses enum trickery -- don't assign values to serialmode enum values for (int i=0; i= 0) { - setSelection(newMode); + if (yAxis > 6 ) { + upCount++; + if (upCount > 768) { + upCount = 0; + serialmode newMode = (serialmode)(selectedMode - 1); + if (newMode >= 0) { + setSelection(newMode); + } } - // Wait for release before going on - while(!digitalRead(buttonPins[2])); + } + else { + upCount = 0; } // Select / Enter - if (!digitalRead(buttonPins[1])) { + if (digitalRead(okButtonPin)) { setMode(selectedMode); - // Wait for release before going on - while(!digitalRead(buttonPins[1])); } - + // Down - if (!digitalRead(buttonPins[0])) { - serialmode newMode = (serialmode)(selectedMode + 1); - if (newMode <= modelinespeed) { - setSelection(newMode); + if (yAxis < 4 ) { + downCount++; + if (downCount > 768) { + serialmode newMode = (serialmode)(selectedMode + 1); + if (newMode <= modelinespeed) { + setSelection(newMode); + } + downCount = 0; } - // Wait for release before going on - while(!digitalRead(buttonPins[0])); + } + else { + downCount = 0; } } +