17,6 → 17,8 |
#include "display_oled_ssd1331.h" |
#include "display_oled_NHD-0216KZW-AB5.h" |
#include "comm_xbee.h" |
#include "sensor_gyro_L3G.h" |
#include "sensor_accel_LSM303.h" |
|
// <editor-fold defaultstate="collapsed" desc="Configuration Bits"> |
/* --------------------------- Configuration Bits --------------------------- */ |
62,7 → 64,7 |
/* -------------------------------------------------------------------------- */ |
// </editor-fold> |
|
#if defined(_TEST_UART) |
#if defined(_TEST_UART) |
// <editor-fold defaultstate="collapsed" desc="_TEST_UART"> |
int main() { |
char buffer[100]; |
259,6 → 261,88 |
} |
} |
// </editor-fold> |
#elif defined(_TEST_ADC) |
// <editor-fold defaultstate="collapsed" desc="_TEST_ADC"> |
void main(void) { |
unsigned int x, y, z; |
char buffer[60]; |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
UART_DATA uart_data; |
UART1_Init(&uart_data); // Initialize the UART handler code |
SPI_DATA spi_data; |
SPI2_Init(&spi_data, SPI2_FOSC_8); // Initialize the SPI module |
SSD1306_DATA ssd1306_data; |
SSD1306_Init(&ssd1306_data); // Initialize the SSD1331 OLED display (uses SPI2) |
ADC_DATA adc_data; |
ADC_Init(&adc_data, ADC_TAD_20, ADC_FOSC_64_); |
|
SSD1306_Begin(SSD1306_SWITCHCAPVCC); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
sprintf(buffer, "\r\nBegin Program\r\n"); |
SSD1306_Write_String(buffer, strlen(buffer)); |
|
memset(buffer, 0, 60); |
SSD1306_Clear_Display(); |
SSD1306_Display(); |
|
while (1) { |
// ADC read from AN0-AN2 and prints to display |
ADC_Start(ADC_CHANNEL_AN2); |
// SSD1306_Fill_Rect(0, 0, SSD1306_LCDWIDTH, 8, SSD1331_BLACK); |
SSD1306_Set_Cursor(0, 0); |
while (!ADC_Get_Result(&x)); |
sprintf(buffer, "X: %u", x); |
SSD1306_Write_String(buffer, strlen(buffer)); |
SSD1306_Display(); |
|
ADC_Start(ADC_CHANNEL_AN1); |
// SSD1306_Fill_Rect(0, 8, SSD1306_LCDWIDTH, 8, SSD1331_BLACK); |
SSD1306_Set_Cursor(0, 8); |
while (!ADC_Get_Result(&y)); |
sprintf(buffer, "Y: %u", y); |
SSD1306_Write_String(buffer, strlen(buffer)); |
SSD1306_Display(); |
|
ADC_Start(ADC_CHANNEL_AN0); |
// SSD1306_Fill_Rect(0, 16, SSD1306_LCDWIDTH, 8, SSD1331_BLACK); |
SSD1306_Set_Cursor(0, 16); |
while (!ADC_Get_Result(&z)); |
sprintf(buffer, "Z: %u", z); |
SSD1306_Write_String(buffer, strlen(buffer)); |
SSD1306_Display(); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_TIMER1_RTC) |
// <editor-fold defaultstate="collapsed" desc="_TEST_TIMER1_RTC"> |
void main(void) { |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
Timer1_Init(); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
LED_BLUE_TRIS = 0; |
LED_RED_TRIS = 0; |
|
Timer1_Enable(); |
|
while (1) { |
|
} |
} |
// </editor-fold> |
#elif defined(_TEST_NFC) |
// <editor-fold defaultstate="collapsed" desc="_TEST_NFC"> |
void main(void) { |
422,6 → 506,177 |
} |
} |
// </editor-fold> |
#elif defined(_TEST_LUX) |
// <editor-fold defaultstate="collapsed" desc="_TEST_LUX"> |
void main(void) { |
char output[64]; |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
UART_DATA uart_data; |
UART1_Init(&uart_data); |
I2C_DATA i2c_data; |
I2C_Init(&i2c_data); |
TSL2561_DATA lux_data; |
LUX_Init(&lux_data, TSL2561_ADDR_FLOAT); |
|
I2C_Configure_Master(I2C_100KHZ); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
LUX_Begin(); |
|
// You can change the gain on the fly, to adapt to brighter/dimmer light situations |
// LUX_Set_Gain(TSL2561_GAIN_0X); // set no gain (for bright situtations) |
LUX_Set_Gain(TSL2561_GAIN_16X); // set 16x gain (for dim situations) |
|
// Changing the integration time gives you a longer time over which to sense light |
// longer timelines are slower, but are good in very low light situtations! |
// LUX_Set_Timing(TSL2561_INTEGRATIONTIME_13MS); // shortest integration time (bright light) |
LUX_Set_Timing(TSL2561_INTEGRATIONTIME_101MS); // medium integration time (medium light) |
// LUX_Set_Timing(TSL2561_INTEGRATIONTIME_402MS); // longest integration time (dim light) |
|
sprintf(output, "\r\nBegin Program\r\n"); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
while (1) { |
unsigned long lum = LUX_Get_Full_Luminosity(); |
unsigned int ir = lum >> 16; |
unsigned int full = lum & 0xFFFF; |
sprintf(output, "IR: %d\r\n", ir); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Visible: %d\r\n", full - ir); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Full: %d\r\n", full); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Lux: %ld\r\n\r\n", LUX_Calculate_Lux(full, ir)); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_BMP) |
// <editor-fold defaultstate="collapsed" desc="_TEST_BMP"> |
void main(void) { |
char output[64]; |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
UART_DATA uart_data; |
UART1_Init(&uart_data); |
I2C_DATA i2c_data; |
I2C_Init(&i2c_data); |
BMP085_DATA bmp_data; |
BMP_Init(&bmp_data); |
|
I2C_Configure_Master(I2C_400KHZ); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
BMP_Begin(BMP085_ULTRAHIGHRES); |
|
BMP_Read_Temperature(); |
BMP_Read_Pressure(); |
BMP_Read_Altitude(101592); |
|
while (1) { |
sprintf(output, "Temp: %f *C\r\n", BMP_Read_Temperature()); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Pressure: %ld Pa\r\n", BMP_Read_Pressure()); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Altitude: %f meters\r\n", BMP_Read_Altitude(101592)); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_GYRO) |
// <editor-fold defaultstate="collapsed" desc="_TEST_GYRO"> |
void main(void) { |
char output[64]; |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
UART_DATA uart_data; |
UART1_Init(&uart_data); |
I2C_DATA i2c_data; |
I2C_Init(&i2c_data); |
L3G_DATA gyro_data; |
L3G_Init(&gyro_data, L3GD20_DEVICE, L3G_SA0_HIGH); |
|
I2C_Configure_Master(I2C_100KHZ); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
sprintf(output, "\r\nBegin Program\r\n"); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
L3G_Begin(); |
int x,y,z; |
while (1) { |
L3G_Read(&x, &y, &z); |
sprintf(output, "X: %d Y: %d Z: %d\r\n", x, y, z); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
Delay10KTCYx(100); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_ACCEL) |
// <editor-fold defaultstate="collapsed" desc="_TEST_ACCEL"> |
void main(void) { |
char output[64]; |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
UART_DATA uart_data; |
UART1_Init(&uart_data); |
I2C_DATA i2c_data; |
I2C_Init(&i2c_data); |
LSM303_DATA acc_data; |
LSM303_Init(&acc_data, LSM303DLHC_DEVICE, ACC_ADDRESS_SA0_A_LOW); |
|
I2C_Configure_Master(I2C_100KHZ); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
sprintf(output, "\r\nBegin Program\r\n"); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
LSM303_Begin(); |
int a_x, a_y, a_z, m_x, m_y, m_z; |
while (1) { |
LSM303_Read_Acc(&a_x, &a_y, &a_z); |
LSM303_Read_Mag(&m_x, &m_y, &m_z); |
sprintf(output, "A - X: %d Y: %d Z: %d\r\n", a_x, a_y, a_z); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "M - X: %d Y: %d Z: %d\r\n", m_x, m_y, m_z); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
Delay10KTCYx(100); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_LED_BACKPACK) |
// <editor-fold defaultstate="collapsed" desc="_TEST_LED_BACKPACK"> |
void main(void) { |
720,85 → 975,6 |
} |
} |
// </editor-fold> |
#elif defined(_TEST_TIMER1_RTC) |
// <editor-fold defaultstate="collapsed" desc="_TEST_TIMER1_RTC"> |
void main(void) { |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
Timer1_Init(); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
LED_BLUE_TRIS = 0; |
LED_RED_TRIS = 0; |
|
Timer1_Enable(); |
|
while (1) { |
|
} |
} |
// </editor-fold> |
#elif defined(_TEST_LUX) |
// <editor-fold defaultstate="collapsed" desc="_TEST_LUX"> |
void main(void) { |
char output[64]; |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
UART_DATA uart_data; |
UART1_Init(&uart_data); |
I2C_DATA i2c_data; |
I2C_Init(&i2c_data); |
TSL2561_DATA lux_data; |
LUX_Init(&lux_data, TSL2561_ADDR_FLOAT); |
|
I2C_Configure_Master(I2C_100KHZ); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
LUX_Begin(); |
|
// You can change the gain on the fly, to adapt to brighter/dimmer light situations |
// LUX_Set_Gain(TSL2561_GAIN_0X); // set no gain (for bright situtations) |
LUX_Set_Gain(TSL2561_GAIN_16X); // set 16x gain (for dim situations) |
|
// Changing the integration time gives you a longer time over which to sense light |
// longer timelines are slower, but are good in very low light situtations! |
// LUX_Set_Timing(TSL2561_INTEGRATIONTIME_13MS); // shortest integration time (bright light) |
LUX_Set_Timing(TSL2561_INTEGRATIONTIME_101MS); // medium integration time (medium light) |
// LUX_Set_Timing(TSL2561_INTEGRATIONTIME_402MS); // longest integration time (dim light) |
|
sprintf(output, "\r\nBegin Program\r\n"); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
while (1) { |
unsigned long lum = LUX_Get_Full_Luminosity(); |
unsigned int ir = lum >> 16; |
unsigned int full = lum & 0xFFFF; |
sprintf(output, "IR: %d\r\n", ir); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Visible: %d\r\n", full - ir); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Full: %d\r\n", full); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Lux: %ld\r\n\r\n", LUX_Calculate_Lux(full, ir)); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_OLED_CHAR) |
// <editor-fold defaultstate="collapsed" desc="_TEST_OLED_CHAR"> |
void main(void) { |
964,8 → 1140,8 |
|
// Changing the integration time gives you a longer time over which to sense light |
// longer timelines are slower, but are good in very low light situtations! |
LUX_Set_Timing(TSL2561_INTEGRATIONTIME_13MS); // shortest integration time (bright light) |
// LUX_Set_Timing(TSL2561_INTEGRATIONTIME_101MS); // medium integration time (medium light) |
// LUX_Set_Timing(TSL2561_INTEGRATIONTIME_13MS); // shortest integration time (bright light) |
LUX_Set_Timing(TSL2561_INTEGRATIONTIME_101MS); // medium integration time (medium light) |
// LUX_Set_Timing(TSL2561_INTEGRATIONTIME_402MS); // longest integration time (dim light) |
|
while (1) { |
981,111 → 1157,10 |
sprintf(output, "Lux: %ld ", LUX_Calculate_Lux(full, ir)); |
NHD_Write_String(output, strlen(output)); |
|
Delay10KTCYx(100); |
// Delay10KTCYx(100); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_ADC) |
// <editor-fold defaultstate="collapsed" desc="_TEST_ADC"> |
void main(void) { |
unsigned int x, y, z; |
char buffer[60]; |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
UART_DATA uart_data; |
UART1_Init(&uart_data); // Initialize the UART handler code |
SPI_DATA spi_data; |
SPI2_Init(&spi_data, SPI2_FOSC_8); // Initialize the SPI module |
SSD1306_DATA ssd1306_data; |
SSD1306_Init(&ssd1306_data); // Initialize the SSD1331 OLED display (uses SPI2) |
ADC_DATA adc_data; |
ADC_Init(&adc_data, ADC_TAD_20, ADC_FOSC_64_); |
|
SSD1306_Begin(SSD1306_SWITCHCAPVCC); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
sprintf(buffer, "\r\nBegin Program\r\n"); |
SSD1306_Write_String(buffer, strlen(buffer)); |
|
memset(buffer, 0, 60); |
SSD1306_Clear_Display(); |
SSD1306_Display(); |
|
while (1) { |
// ADC read from AN0-AN2 and prints to display |
ADC_Start(ADC_CHANNEL_AN2); |
// SSD1306_Fill_Rect(0, 0, SSD1306_LCDWIDTH, 8, SSD1331_BLACK); |
SSD1306_Set_Cursor(0, 0); |
while (!ADC_Get_Result(&x)); |
sprintf(buffer, "X: %u", x); |
SSD1306_Write_String(buffer, strlen(buffer)); |
SSD1306_Display(); |
|
ADC_Start(ADC_CHANNEL_AN1); |
// SSD1306_Fill_Rect(0, 8, SSD1306_LCDWIDTH, 8, SSD1331_BLACK); |
SSD1306_Set_Cursor(0, 8); |
while (!ADC_Get_Result(&y)); |
sprintf(buffer, "Y: %u", y); |
SSD1306_Write_String(buffer, strlen(buffer)); |
SSD1306_Display(); |
|
ADC_Start(ADC_CHANNEL_AN0); |
// SSD1306_Fill_Rect(0, 16, SSD1306_LCDWIDTH, 8, SSD1331_BLACK); |
SSD1306_Set_Cursor(0, 16); |
while (!ADC_Get_Result(&z)); |
sprintf(buffer, "Z: %u", z); |
SSD1306_Write_String(buffer, strlen(buffer)); |
SSD1306_Display(); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_BMP) |
// <editor-fold defaultstate="collapsed" desc="_TEST_BMP"> |
void main(void) { |
char output[64]; |
|
// Set all ports as digial I/O except for AN0-AN2 (pins 2-4) |
ANCON0 = 0xF8; |
ANCON1 = 0x1F; |
|
UART_DATA uart_data; |
UART1_Init(&uart_data); |
I2C_DATA i2c_data; |
I2C_Init(&i2c_data); |
BMP085_DATA bmp_data; |
BMP_Init(&bmp_data); |
|
I2C_Configure_Master(I2C_400KHZ); |
|
Interrupt_Init(); // Initialize the interrupt priorities |
Interrupt_Enable(); // Enable high-priority interrupts and low-priority interrupts |
|
BMP_Begin(BMP085_ULTRAHIGHRES); |
|
BMP_Read_Temperature(); |
BMP_Read_Pressure(); |
BMP_Read_Altitude(101592); |
|
while (1) { |
sprintf(output, "Temp: %f *C\r\n", BMP_Read_Temperature()); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Pressure: %ld Pa\r\n", BMP_Read_Pressure()); |
DBG_PRINT_MAIN(output, strlen(output)); |
sprintf(output, "Altitude: %f meters\r\n", BMP_Read_Altitude(101592)); |
DBG_PRINT_MAIN(output, strlen(output)); |
|
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
Delay10KTCYx(255); |
} |
} |
// </editor-fold> |
#elif defined(_TEST_XBEE) |
// <editor-fold defaultstate="collapsed" desc="_TEST_XBEE"> |
void main(void) { |