add extended Keys (mode, band, tunestep) and i2clcd working
This commit is contained in:
parent
0e245fc488
commit
f600c18541
@ -24,12 +24,15 @@
|
|||||||
|
|
||||||
//Depending on the type of LCD mounted on the uBITX, uncomment one of the options below.
|
//Depending on the type of LCD mounted on the uBITX, uncomment one of the options below.
|
||||||
//You must select only one.
|
//You must select only one.
|
||||||
#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX
|
//#define UBITX_DISPLAY_LCD1602P //LCD mounted on unmodified uBITX
|
||||||
//#define UBITX_DISPLAY_LCD1602I //I2C type 16 x 02 LCD
|
//#define UBITX_DISPLAY_LCD1602I //I2C type 16 x 02 LCD
|
||||||
//#define UBITX_DISPLAY_LCD1602I_CUST //I2C type 16 x 02 Custom Tiny Library
|
#define UBITX_DISPLAY_LCD1602I_CUST //I2C type 16 x 02 Custom Tiny Library
|
||||||
//#define UBITX_DISPLAY_LCD2004P //24 x 04 LCD
|
//#define UBITX_DISPLAY_LCD2004P //24 x 04 LCD
|
||||||
//#define UBITX_DISPLAY_LCD2004I //I2C type 24 x 04 LCD
|
//#define UBITX_DISPLAY_LCD2004I //I2C type 24 x 04 LCD
|
||||||
|
|
||||||
|
//#define EXTEND_KEY_GROUP1 //MODE, BAND(-), BAND(+), STEP
|
||||||
|
//#define EXTEND_KEY_GROUP2 //Numeric (0~9), Point(.), Enter //Not supported in Version 1.0x
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
// Hardware, Define PIN Usage
|
// Hardware, Define PIN Usage
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
@ -93,9 +96,17 @@
|
|||||||
#define printLineF1(x) (printLineF(1, x))
|
#define printLineF1(x) (printLineF(1, x))
|
||||||
#define printLineF2(x) (printLineF(0, x))
|
#define printLineF2(x) (printLineF(0, x))
|
||||||
|
|
||||||
|
#define FUNCTION_KEY_ADC 80 //MODE, BAND(-), BAND(+), STEP
|
||||||
|
#define FKEY_PRESS 120
|
||||||
|
#define FKEY_MODE 0
|
||||||
|
#define FKEY_BANDUP 1
|
||||||
|
#define FKEY_BANDDOWN 2
|
||||||
|
#define FKEY_STEP 3
|
||||||
|
|
||||||
extern unsigned long frequency;
|
extern unsigned long frequency;
|
||||||
extern byte WsprMSGCount;
|
extern byte WsprMSGCount;
|
||||||
extern byte sMeterLevels[9];
|
extern byte sMeterLevels[9];
|
||||||
|
extern int KeyValues[16][2]; //ADC value Ranges for Extend Key
|
||||||
|
|
||||||
extern void printLine1(const char *c);
|
extern void printLine1(const char *c);
|
||||||
extern void printLine2(const char *c);
|
extern void printLine2(const char *c);
|
||||||
|
@ -182,6 +182,31 @@ byte line2DisplayStatus = 0; //0:Clear, 1 : menu, 1: DisplayFrom Idle,
|
|||||||
char lcdMeter[17];
|
char lcdMeter[17];
|
||||||
byte sMeterLevels[9];
|
byte sMeterLevels[9];
|
||||||
|
|
||||||
|
int KeyValues[16][2];
|
||||||
|
/*= {
|
||||||
|
{1023, 1025}, //1
|
||||||
|
{707, 711}, //5
|
||||||
|
{570, 574}, //9
|
||||||
|
{493, 500}, //13
|
||||||
|
|
||||||
|
{932, 936}, //2
|
||||||
|
{860, 864}, //3
|
||||||
|
{800, 805}, //4
|
||||||
|
|
||||||
|
{672, 676}, //6
|
||||||
|
{642, 646}, //7
|
||||||
|
{616, 620}, //8
|
||||||
|
|
||||||
|
{552, 556}, //10
|
||||||
|
{535, 539}, //11
|
||||||
|
{520, 524}, //12
|
||||||
|
|
||||||
|
{438, 442}, //14
|
||||||
|
{403, 407}, //15
|
||||||
|
{378, 382} //16
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
byte isIFShift = 0; //1 = ifShift, 2 extend
|
byte isIFShift = 0; //1 = ifShift, 2 extend
|
||||||
int ifShiftValue = 0; //
|
int ifShiftValue = 0; //
|
||||||
|
|
||||||
@ -603,7 +628,87 @@ void checkPTT(){
|
|||||||
if (digitalRead(PTT) == 1 && inTx == 1)
|
if (digitalRead(PTT) == 1 && inTx == 1)
|
||||||
stopTx();
|
stopTx();
|
||||||
}
|
}
|
||||||
|
#ifdef EXTEND_KEY_GROUP1
|
||||||
|
void checkButton(){
|
||||||
|
//only if the button is pressed
|
||||||
|
int keyStatus = getBtnStatus();
|
||||||
|
if (keyStatus == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
delay(50);
|
||||||
|
keyStatus = getBtnStatus(); //will be remove 3 lines
|
||||||
|
if (keyStatus == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (keyStatus == FKEY_PRESS) //Menu Key
|
||||||
|
doMenu();
|
||||||
|
else if (keyStatus <= FKEY_STEP) //EXTEND KEY GROUP #1
|
||||||
|
{
|
||||||
|
if (keyStatus == FKEY_MODE) //Press Mode Key
|
||||||
|
{
|
||||||
|
if (cwMode == 1)
|
||||||
|
{
|
||||||
|
cwMode = 2;
|
||||||
|
}
|
||||||
|
else if (cwMode == 2)
|
||||||
|
{
|
||||||
|
cwMode = 0;
|
||||||
|
isUSB = 0;
|
||||||
|
}
|
||||||
|
else if (isUSB == 0)
|
||||||
|
{
|
||||||
|
isUSB = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cwMode = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//else if (keyStatus == FKEY_BANDDOWN) //Press Mode Key
|
||||||
|
//{
|
||||||
|
// setNextHamBandFreq(frequency, -1); //Prior Band
|
||||||
|
//}
|
||||||
|
else if (keyStatus == FKEY_BANDUP || keyStatus == FKEY_BANDDOWN) //Press Mode Key
|
||||||
|
{
|
||||||
|
|
||||||
|
char currentBandIndex = -1;
|
||||||
|
|
||||||
|
//Save Band Information
|
||||||
|
if (tuneTXType == 2 || tuneTXType == 3 || tuneTXType == 102 || tuneTXType == 103) { //only ham band move
|
||||||
|
currentBandIndex = getIndexHambanBbyFreq(frequency);
|
||||||
|
|
||||||
|
if (currentBandIndex >= 0) {
|
||||||
|
saveBandFreqByIndex(frequency, modeToByte(), currentBandIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setNextHamBandFreq(frequency, keyStatus == FKEY_BANDDOWN ? -1 : 1); //Prior Band
|
||||||
|
}
|
||||||
|
else if (keyStatus == FKEY_STEP) //FKEY_BANDUP
|
||||||
|
{
|
||||||
|
if (++tuneStepIndex > 5)
|
||||||
|
tuneStepIndex = 1;
|
||||||
|
|
||||||
|
EEPROM.put(TUNING_STEP, tuneStepIndex);
|
||||||
|
printLine2ClearAndUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
FrequencyToVFO(1);
|
||||||
|
SetCarrierFreq();
|
||||||
|
setFrequency(frequency);
|
||||||
|
//delay_background(delayTime, 0);
|
||||||
|
updateDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
//wait for the button to go up again
|
||||||
|
while(keyStatus == getBtnStatus()) {
|
||||||
|
delay(10);
|
||||||
|
Check_Cat(0);
|
||||||
|
}
|
||||||
|
//delay(50);//debounce
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
void checkButton(){
|
void checkButton(){
|
||||||
//only if the button is pressed
|
//only if the button is pressed
|
||||||
if (!btnDown())
|
if (!btnDown())
|
||||||
@ -621,7 +726,7 @@ void checkButton(){
|
|||||||
}
|
}
|
||||||
//delay(50);//debounce
|
//delay(50);//debounce
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/************************************
|
/************************************
|
||||||
Replace function by KD8CEC
|
Replace function by KD8CEC
|
||||||
@ -832,6 +937,12 @@ void initSettings(){
|
|||||||
sMeterLevels[i + 1] = EEPROM.read(S_METER_LEVELS + i);
|
sMeterLevels[i + 1] = EEPROM.read(S_METER_LEVELS + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//KeyValues
|
||||||
|
for (byte i = 0; i < 16; i++) {
|
||||||
|
KeyValues[i][0] = EEPROM.read(EXTENDED_KEY_RANGE + (i * 2));
|
||||||
|
KeyValues[i][1] = EEPROM.read(EXTENDED_KEY_RANGE + (i * 2) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
//User callsign information
|
//User callsign information
|
||||||
if (EEPROM.read(USER_CALLSIGN_KEY) == 0x59)
|
if (EEPROM.read(USER_CALLSIGN_KEY) == 0x59)
|
||||||
userCallsignLength = EEPROM.read(USER_CALLSIGN_LEN); //MAXIMUM 18 LENGTH
|
userCallsignLength = EEPROM.read(USER_CALLSIGN_LEN); //MAXIMUM 18 LENGTH
|
||||||
|
@ -50,9 +50,9 @@
|
|||||||
// 256 ~ 1023 (EEProm Section #1)
|
// 256 ~ 1023 (EEProm Section #1)
|
||||||
// 255 ~ 101 (EEProm Section #2)
|
// 255 ~ 101 (EEProm Section #2)
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
#define EXTENDED_KEY_RANGE 196 //Extended Key, KEY RANGE (MODE, BAND+, BAND-, TUNE_STEP, NUM0~NUM9, POINT, ENTER
|
||||||
#define S_METER_LEVELS 230 //LEVEL0 ~ LEVEL7
|
#define S_METER_LEVELS 230 //LEVEL0 ~ LEVEL7
|
||||||
|
|
||||||
|
|
||||||
#define ADVANCED_FREQ_OPTION1 240 //Bit0: use IFTune_Value, Bit1 : use Stored enabled SDR Mode, Bit2 : dynamic sdr frequency
|
#define ADVANCED_FREQ_OPTION1 240 //Bit0: use IFTune_Value, Bit1 : use Stored enabled SDR Mode, Bit2 : dynamic sdr frequency
|
||||||
#define IF1_CAL 241
|
#define IF1_CAL 241
|
||||||
#define ENABLE_SDR 242
|
#define ENABLE_SDR 242
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
//John(VK2ETA) Code
|
//John(VK2ETA) Code
|
||||||
#include <LiquidCrystal_I2C.h>
|
#include <LiquidCrystal_I2C.h>
|
||||||
#define I2C_DISPLAY_ADDRESS 0x27
|
#define I2C_DISPLAY_ADDRESS 0x3F //0x27
|
||||||
LiquidCrystal_I2C lcd(I2C_DISPLAY_ADDRESS,16,2); // set the LCD as a 16 chars and 2 line display
|
LiquidCrystal_I2C lcd(I2C_DISPLAY_ADDRESS,16,2); // set the LCD as a 16 chars and 2 line display
|
||||||
|
|
||||||
//LiquidCrystal_I2C lcd(0x27,16,2)
|
//LiquidCrystal_I2C lcd(0x27,16,2)
|
||||||
@ -60,95 +60,13 @@ LiquidCrystal_I2C lcd(I2C_DISPLAY_ADDRESS,16,2); // set the LCD as a 16 chars a
|
|||||||
char c[30], b[30];
|
char c[30], b[30];
|
||||||
char printBuff[2][17]; //mirrors what is showing on the two lines of the display
|
char printBuff[2][17]; //mirrors what is showing on the two lines of the display
|
||||||
|
|
||||||
const PROGMEM uint8_t meters_bitmap[] = {
|
|
||||||
B10000, B10000, B10000, B10000, B10000, B10000, B10000, B10000 , //custom 1
|
|
||||||
B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000 , //custom 2
|
|
||||||
B11100, B11100, B11100, B11100, B11100, B11100, B11100, B11100 , //custom 3
|
|
||||||
B11110, B11110, B11110, B11110, B11110, B11110, B11110, B11110 , //custom 4
|
|
||||||
B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 , //custom 5
|
|
||||||
B01000, B11100, B01000, B00000, B10111, B10101, B10101, B10111 //custom 6
|
|
||||||
};
|
|
||||||
|
|
||||||
PGM_P p_metes_bitmap = reinterpret_cast<PGM_P>(meters_bitmap);
|
|
||||||
|
|
||||||
const PROGMEM uint8_t lock_bitmap[8] = {
|
|
||||||
0b01110,
|
|
||||||
0b10001,
|
|
||||||
0b10001,
|
|
||||||
0b11111,
|
|
||||||
0b11011,
|
|
||||||
0b11011,
|
|
||||||
0b11111,
|
|
||||||
0b00000};
|
|
||||||
PGM_P plock_bitmap = reinterpret_cast<PGM_P>(lock_bitmap);
|
|
||||||
|
|
||||||
|
|
||||||
// initializes the custom characters
|
|
||||||
// we start from char 1 as char 0 terminates the string!
|
|
||||||
void initMeter(){
|
|
||||||
uint8_t tmpbytes[8];
|
|
||||||
byte i;
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(plock_bitmap + i);
|
|
||||||
lcd.createChar(0, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i);
|
|
||||||
lcd.createChar(1, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 8);
|
|
||||||
lcd.createChar(2, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 16);
|
|
||||||
lcd.createChar(3, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 24);
|
|
||||||
lcd.createChar(4, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 32);
|
|
||||||
lcd.createChar(5, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 40);
|
|
||||||
lcd.createChar(6, tmpbytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LCD_Init(void)
|
void LCD_Init(void)
|
||||||
{
|
{
|
||||||
lcd.begin(16, 2);
|
lcd.begin(16, 2);
|
||||||
initMeter(); //for Meter Display
|
initMeter(); //for Meter Display
|
||||||
|
lcd.backlight();
|
||||||
}
|
}
|
||||||
|
|
||||||
//by KD8CEC
|
|
||||||
//0 ~ 25 : 30 over : + 10
|
|
||||||
void drawMeter(int needle) {
|
|
||||||
//5Char + O over
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 5; i++) {
|
|
||||||
if (needle >= 5)
|
|
||||||
lcdMeter[i] = 5; //full
|
|
||||||
else if (needle > 0)
|
|
||||||
lcdMeter[i] = needle; //full
|
|
||||||
else //0
|
|
||||||
lcdMeter[i] = 0x20;
|
|
||||||
|
|
||||||
needle -= 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (needle > 0)
|
|
||||||
lcdMeter[5] = 6;
|
|
||||||
else
|
|
||||||
lcdMeter[5] = 0x20;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// The generic routine to display one line on the LCD
|
// The generic routine to display one line on the LCD
|
||||||
void printLine(unsigned char linenmbr, const char *c) {
|
void printLine(unsigned char linenmbr, const char *c) {
|
||||||
if ((displayOption1 & 0x01) == 0x01)
|
if ((displayOption1 & 0x01) == 0x01)
|
||||||
@ -164,7 +82,10 @@ void printLine(unsigned char linenmbr, const char *c) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void LCD_CreateChar(int aaa, int bbb)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
void printLineF(char linenmbr, const __FlashStringHelper *c)
|
void printLineF(char linenmbr, const __FlashStringHelper *c)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
But keep it as long as the original author of the code.
|
But keep it as long as the original author of the code.
|
||||||
Ian KD8CEC
|
Ian KD8CEC
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
#define I2C_DISPLAY_ADDRESS 0x27
|
#define I2C_DISPLAY_ADDRESS 0x3F //0x27
|
||||||
|
|
||||||
#define En B00000100 // Enable bit
|
#define En B00000100 // Enable bit
|
||||||
#define Rw B00000010 // Read/Write bit
|
#define Rw B00000010 // Read/Write bit
|
||||||
@ -135,10 +135,22 @@ void LCD_Send(uint8_t value, uint8_t mode)
|
|||||||
write4bits((lownib)|mode);
|
write4bits((lownib)|mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Turn the (optional) backlight off/on
|
||||||
|
void noBacklight(void) {
|
||||||
|
_backlightval=LCD_NOBACKLIGHT;
|
||||||
|
expanderWrite(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void backlight(void) {
|
||||||
|
_backlightval=LCD_BACKLIGHT;
|
||||||
|
expanderWrite(0);
|
||||||
|
}
|
||||||
|
|
||||||
void LCD1602_Init()
|
void LCD1602_Init()
|
||||||
{
|
{
|
||||||
//I2C Init
|
//I2C Init
|
||||||
_Addr;
|
_Addr = I2C_DISPLAY_ADDRESS;
|
||||||
_cols = 16;
|
_cols = 16;
|
||||||
_rows = 2;
|
_rows = 2;
|
||||||
_backlightval = LCD_NOBACKLIGHT;
|
_backlightval = LCD_NOBACKLIGHT;
|
||||||
@ -180,6 +192,8 @@ void LCD1602_Init()
|
|||||||
delayMicroseconds(1000); // this command takes a long time!
|
delayMicroseconds(1000); // this command takes a long time!
|
||||||
|
|
||||||
LCD_Command(LCD_ENTRYMODESET | LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT);
|
LCD_Command(LCD_ENTRYMODESET | LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT);
|
||||||
|
|
||||||
|
backlight();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LCD_Print(const char *c)
|
void LCD_Print(const char *c)
|
||||||
@ -219,92 +233,12 @@ LiquidCrystal lcd(8,9,10,11,12,13);
|
|||||||
char c[30], b[30];
|
char c[30], b[30];
|
||||||
char printBuff[2][17]; //mirrors what is showing on the two lines of the display
|
char printBuff[2][17]; //mirrors what is showing on the two lines of the display
|
||||||
|
|
||||||
const PROGMEM uint8_t meters_bitmap[] = {
|
|
||||||
B10000, B10000, B10000, B10000, B10000, B10000, B10000, B10000 , //custom 1
|
|
||||||
B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000 , //custom 2
|
|
||||||
B11100, B11100, B11100, B11100, B11100, B11100, B11100, B11100 , //custom 3
|
|
||||||
B11110, B11110, B11110, B11110, B11110, B11110, B11110, B11110 , //custom 4
|
|
||||||
B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 , //custom 5
|
|
||||||
B01000, B11100, B01000, B00000, B10111, B10101, B10101, B10111 //custom 6
|
|
||||||
};
|
|
||||||
|
|
||||||
PGM_P p_metes_bitmap = reinterpret_cast<PGM_P>(meters_bitmap);
|
|
||||||
|
|
||||||
const PROGMEM uint8_t lock_bitmap[8] = {
|
|
||||||
0b01110,
|
|
||||||
0b10001,
|
|
||||||
0b10001,
|
|
||||||
0b11111,
|
|
||||||
0b11011,
|
|
||||||
0b11011,
|
|
||||||
0b11111,
|
|
||||||
0b00000};
|
|
||||||
PGM_P plock_bitmap = reinterpret_cast<PGM_P>(lock_bitmap);
|
|
||||||
|
|
||||||
|
|
||||||
// initializes the custom characters
|
|
||||||
// we start from char 1 as char 0 terminates the string!
|
|
||||||
void initMeter(){
|
|
||||||
uint8_t tmpbytes[8];
|
|
||||||
byte i;
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(plock_bitmap + i);
|
|
||||||
LCD_CreateChar(0, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i);
|
|
||||||
LCD_CreateChar(1, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 8);
|
|
||||||
LCD_CreateChar(2, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 16);
|
|
||||||
LCD_CreateChar(3, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 24);
|
|
||||||
LCD_CreateChar(4, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 32);
|
|
||||||
LCD_CreateChar(5, tmpbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
|
||||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 40);
|
|
||||||
LCD_CreateChar(6, tmpbytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LCD_Init(void)
|
void LCD_Init(void)
|
||||||
{
|
{
|
||||||
LCD1602_Init();
|
LCD1602_Init();
|
||||||
initMeter(); //for Meter Display
|
initMeter(); //for Meter Display
|
||||||
}
|
}
|
||||||
|
|
||||||
//by KD8CEC
|
|
||||||
//0 ~ 25 : 30 over : + 10
|
|
||||||
void drawMeter(int needle) {
|
|
||||||
//5Char + O over
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 5; i++) {
|
|
||||||
if (needle >= 5)
|
|
||||||
lcdMeter[i] = 5; //full
|
|
||||||
else if (needle > 0)
|
|
||||||
lcdMeter[i] = needle; //full
|
|
||||||
else //0
|
|
||||||
lcdMeter[i] = 0x20;
|
|
||||||
|
|
||||||
needle -= 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (needle > 0)
|
|
||||||
lcdMeter[5] = 6;
|
|
||||||
else
|
|
||||||
lcdMeter[5] = 0x20;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The generic routine to display one line on the LCD
|
// The generic routine to display one line on the LCD
|
||||||
void printLine(unsigned char linenmbr, const char *c) {
|
void printLine(unsigned char linenmbr, const char *c) {
|
||||||
|
@ -162,12 +162,37 @@ void drawMeter(int needle)
|
|||||||
|
|
||||||
//returns true if the button is pressed
|
//returns true if the button is pressed
|
||||||
int btnDown(void){
|
int btnDown(void){
|
||||||
|
#ifdef EXTEND_KEY_GROUP1
|
||||||
|
if (analogRead(FBUTTON) > FUNCTION_KEY_ADC)
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
#else
|
||||||
if (digitalRead(FBUTTON) == HIGH)
|
if (digitalRead(FBUTTON) == HIGH)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
return 1;
|
return 1;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef EXTEND_KEY_GROUP1
|
||||||
|
int getBtnStatus(void){
|
||||||
|
int readButtonValue = analogRead(FBUTTON);
|
||||||
|
|
||||||
|
if (analogRead(FBUTTON) < FUNCTION_KEY_ADC)
|
||||||
|
return FKEY_PRESS;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
if (KeyValues[i][0] <= readButtonValue && KeyValues[i][1] >= readButtonValue)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int enc_prev_state = 3;
|
int enc_prev_state = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user