This file provides an example for the QT60168 driver.
Definition in file qt60168_example.c.
#include "board.h"
#include "gpio.h"
#include "spi.h"
#include "pm.h"
#include "print_funcs.h"
#include "usart.h"
#include "et024006dhu.h"
#include "qt60168.h"
#include "conf_qt60168.h"
Go to the source code of this file.
Defines | |
#define | COS0 1 |
#define | COS30 0.87 |
#define | COS60 0.5 |
#define | COS90 0 |
#define | DEMO_SIZE_X ET024006_WIDTH |
#define | DEMO_SIZE_Y 160 |
#define | DEMO_START_X 0 |
#define | DEMO_START_Y 38 |
#define | DEMO_WHEEL_RADIUS 60 |
#define | DEMO_WHEEL_SIZE_X 20 |
#define | DEMO_WHEEL_SIZE_Y 20 |
#define | DEMO_WHEEL_START_X ET024006_WIDTH/2 - DEMO_WHEEL_SIZE_X/2 |
#define | DEMO_WHEEL_START_Y ET024006_HEIGHT/2 - DEMO_WHEEL_SIZE_Y/2 |
#define | SIN0 0 |
#define | SIN30 0.5 |
#define | SIN60 0.87 |
#define | SIN90 1 |
Enumerations | |
enum | demo_color_t { DEMO_COLOR_ALL = 0, DEMO_COLOR_BLUE, DEMO_COLOR_RED, DEMO_COLOR_GREEN, DEMO_COLOR_MAX } |
enum | demo_display_t { DEMO_DISPLAY_BOXES = 0, DEMO_DISPLAY_WHEEL, DEMO_DISPLAY_MAX } |
Functions | |
int | main (void) |
Main function. | |
static void | qt60168_resources_init (void) |
Initializes QT60168 resources: GPIO and SPI. |
#define COS0 1 |
#define COS30 0.87 |
#define COS60 0.5 |
#define COS90 0 |
#define DEMO_SIZE_X ET024006_WIDTH |
#define DEMO_SIZE_Y 160 |
#define DEMO_START_X 0 |
#define DEMO_START_Y 38 |
#define DEMO_WHEEL_RADIUS 60 |
#define DEMO_WHEEL_SIZE_X 20 |
#define DEMO_WHEEL_SIZE_Y 20 |
#define DEMO_WHEEL_START_X ET024006_WIDTH/2 - DEMO_WHEEL_SIZE_X/2 |
#define DEMO_WHEEL_START_Y ET024006_HEIGHT/2 - DEMO_WHEEL_SIZE_Y/2 |
#define SIN0 0 |
#define SIN30 0.5 |
#define SIN60 0.87 |
#define SIN90 1 |
enum demo_color_t |
Definition at line 158 of file qt60168_example.c.
00159 { 00160 DEMO_COLOR_ALL=0 00161 , DEMO_COLOR_BLUE 00162 , DEMO_COLOR_RED 00163 , DEMO_COLOR_GREEN 00164 , DEMO_COLOR_MAX 00165 } demo_color_t;
enum demo_display_t |
Definition at line 167 of file qt60168_example.c.
00168 { 00169 DEMO_DISPLAY_BOXES=0 00170 , DEMO_DISPLAY_WHEEL 00171 , DEMO_DISPLAY_MAX 00172 } demo_display_t;
int main | ( | void | ) |
Main function.
Definition at line 176 of file qt60168_example.c.
References COS0, COS30, COS60, COS90, DEMO_COLOR_ALL, DEMO_COLOR_BLUE, DEMO_COLOR_GREEN, DEMO_COLOR_MAX, DEMO_COLOR_RED, DEMO_DISPLAY_BOXES, DEMO_DISPLAY_MAX, DEMO_DISPLAY_WHEEL, DEMO_SIZE_X, DEMO_SIZE_Y, DEMO_START_X, DEMO_START_Y, DEMO_WHEEL_RADIUS, DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, DEMO_WHEEL_START_X, DEMO_WHEEL_START_Y, qt60168_init(), qt60168_is_key_pressed(), qt60168_resources_init(), SIN0, SIN30, SIN60, and SIN90.
00177 { 00178 int i; 00179 U32 x_start; 00180 U32 y_start; 00181 U32 x_size; 00182 U32 y_size; 00183 U32 color; 00184 demo_color_t demo_color=DEMO_COLOR_ALL; 00185 demo_display_t demo_display=DEMO_DISPLAY_WHEEL; 00186 Bool touch_states[QT60168_TOUCH_NUMBER_OF_SENSORS]; 00187 00188 // Switch the main clock to the external oscillator 0 00189 pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); 00190 00191 // Initialize RS232 debug text output. 00192 init_dbg_rs232(FOSC0); 00193 00194 // Initialize QT60168 resources: GPIO, SPI and QT60168. 00195 qt60168_resources_init(); 00196 00197 // Initialize QT60168 component. 00198 qt60168_init(FOSC0); 00199 00200 // Initialize the LCD. 00201 et024006_Init( FOSC0/*CPU*/, FOSC0/*HSB*/); 00202 00203 // Clear the display i.e. make it black 00204 et024006_DrawFilledRect(0, 0, ET024006_WIDTH, ET024006_HEIGHT, BLACK ); 00205 00206 // Set the backlight. 00207 gpio_set_gpio_pin(ET024006DHU_BL_PIN); 00208 00209 // Display welcome string. 00210 et024006_PrintString("QT60168 EXAMPLE", (const unsigned char *)&FONT8x8, 110, 5, WHITE, -1); 00211 et024006_PrintString("Press the QTouch sensors.", (const unsigned char *)&FONT6x8, 95, 20, WHITE, -1); 00212 et024006_PrintString("Color: All", (const unsigned char *)&FONT6x8, 10, 200, WHITE, -1); 00213 et024006_PrintString("Display sensors", (const unsigned char *)&FONT6x8, 120, 200, WHITE, -1); 00214 00215 et024006_DrawLine(DEMO_START_X, DEMO_START_Y-1, DEMO_START_X+DEMO_SIZE_X, DEMO_START_Y-1, WHITE ); 00216 et024006_DrawLine(DEMO_START_X, DEMO_START_Y+DEMO_SIZE_Y+1, DEMO_START_X+DEMO_SIZE_X, DEMO_START_Y+DEMO_SIZE_Y+1, WHITE ); 00217 00218 // Memorize the status for each key. 00219 for( i=0 ; i<QT60168_TOUCH_NUMBER_OF_SENSORS ; i++ ) 00220 touch_states[i] = qt60168_is_key_pressed(i); 00221 00222 while(1) 00223 { 00224 for( i=0 ; i<QT60168_TOUCH_NUMBER_OF_SENSORS ; i++) 00225 { 00226 // Test sensors press 00227 // 00228 if( !touch_states[i] && qt60168_is_key_pressed(i) ) 00229 { 00230 touch_states[i] = TRUE; 00231 00232 if( i==QT60168_TOUCH_SENSOR_BUTTON_0 ) 00233 { 00234 gpio_tgl_gpio_pin(LED0_GPIO); 00235 et024006_PrintString("B0", (const unsigned char *)&FONT6x8, 10, 215, WHITE, -1); 00236 demo_color=(demo_color+1) % DEMO_COLOR_MAX; 00237 00238 // Erase previous line 00239 et024006_DrawFilledRect(10, 200, 80, 10, BLACK ); 00240 switch( demo_color ) 00241 { 00242 case DEMO_COLOR_BLUE: 00243 et024006_PrintString("Color: Blue", (const unsigned char *)&FONT6x8, 10, 200, WHITE, -1); 00244 break; 00245 case DEMO_COLOR_RED: 00246 et024006_PrintString("Color: Red", (const unsigned char *)&FONT6x8, 10, 200, WHITE, -1); 00247 break; 00248 case DEMO_COLOR_GREEN: 00249 et024006_PrintString("Color: Green", (const unsigned char *)&FONT6x8, 10, 200, WHITE, -1); 00250 break; 00251 default: 00252 et024006_PrintString("Color: All", (const unsigned char *)&FONT6x8, 10, 200, WHITE, -1); 00253 break; 00254 } 00255 continue; 00256 } 00257 00258 if( i==QT60168_TOUCH_SENSOR_BUTTON_1 ) 00259 { 00260 gpio_tgl_gpio_pin(LED1_GPIO); 00261 et024006_PrintString("B1", (const unsigned char *)&FONT6x8, 30, 215, WHITE, -1); 00262 demo_display=(demo_display+1) % DEMO_DISPLAY_MAX; 00263 00264 // Erase previous line 00265 et024006_DrawFilledRect(120, 200, 160, 10, BLACK ); 00266 switch( demo_display ) 00267 { 00268 case DEMO_DISPLAY_WHEEL: 00269 et024006_PrintString("Display sensors", (const unsigned char *)&FONT6x8, 120, 200, WHITE, -1); 00270 break; 00271 case DEMO_DISPLAY_BOXES: 00272 default: 00273 et024006_PrintString("Display random boxes", (const unsigned char *)&FONT6x8, 120, 200, WHITE, -1); 00274 break; 00275 } 00276 // Erase display 00277 et024006_DrawFilledRect(DEMO_START_X, DEMO_START_Y, DEMO_SIZE_X, DEMO_SIZE_Y, BLACK ); 00278 continue; 00279 } 00280 00281 // Here, the detected sensor is dedicated to the wheel. 00282 if( demo_display==DEMO_DISPLAY_BOXES ) 00283 { // Display a box randomly on the screen. 00284 x_start = DEMO_START_X + rand()%DEMO_SIZE_X; 00285 y_start = DEMO_START_Y + rand()%DEMO_SIZE_Y; 00286 x_size = rand()%(DEMO_START_X+DEMO_SIZE_X-x_start); 00287 y_size = rand()%(DEMO_START_Y+DEMO_SIZE_Y-y_start); 00288 color = rand()%0x10000; 00289 switch( demo_color ) 00290 { 00291 case DEMO_COLOR_BLUE: 00292 color = color & BLUE; 00293 break; 00294 case DEMO_COLOR_RED: 00295 color = color & RED; 00296 break; 00297 case DEMO_COLOR_GREEN: 00298 color = color & GREEN; 00299 break; 00300 default: 00301 break; 00302 } 00303 00304 et024006_DrawFilledRect( 00305 x_start 00306 , y_start 00307 , x_size 00308 , y_size 00309 , color ); 00310 } 00311 00312 // Draw Wheel[i] 00313 et024006_DrawFilledRect(80 + 16*i, 215-2, 10, 10, WHITE ); 00314 gpio_tgl_gpio_pin(LED2_GPIO); 00315 } 00316 00317 // Test sensors release 00318 // 00319 if(touch_states[i] && !qt60168_is_key_pressed(i)) 00320 { 00321 touch_states[i] = FALSE; 00322 if( i==QT60168_TOUCH_SENSOR_BUTTON_0 ) 00323 { 00324 // Erase "B0" 00325 et024006_DrawFilledRect(10, 215-2, 12, 12, BLACK ); 00326 continue; 00327 } 00328 00329 if( i==QT60168_TOUCH_SENSOR_BUTTON_1 ) 00330 { 00331 // Erase "B1" 00332 et024006_DrawFilledRect(30, 215-2, 12, 12, BLACK ); 00333 continue; 00334 } 00335 00336 // Erase Wheel[i] 00337 et024006_DrawFilledRect(80 + 16*i, 215-2, 10, 10, BLACK ); 00338 } 00339 } // for... 00340 00341 if( demo_display==DEMO_DISPLAY_WHEEL ) 00342 { 00343 if( touch_states[QT60168_TOUCH_SENSOR_BUTTON_0] ) color = WHITE; 00344 else color = BLUE; 00345 et024006_DrawFilledRect(30, 50, DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00346 00347 if( touch_states[QT60168_TOUCH_SENSOR_BUTTON_1] ) color = WHITE; 00348 else color = BLUE; 00349 et024006_DrawFilledRect(30, 80, DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00350 00351 if( touch_states[QT60168_TOUCH_SENSOR_BUTTON_2] ) color = WHITE; 00352 else color = BLUE; 00353 et024006_DrawFilledRect(30, 110, DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00354 00355 if( touch_states[QT60168_TOUCH_SENSOR_BUTTON_3] ) color = WHITE; 00356 else color = BLUE; 00357 et024006_DrawFilledRect(30, 140, DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00358 00359 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_0] ) color = WHITE; 00360 else color = BLUE; 00361 et024006_DrawFilledRect(DEMO_WHEEL_START_X + DEMO_WHEEL_RADIUS*SIN0, 00362 DEMO_WHEEL_START_Y - DEMO_WHEEL_RADIUS*COS0, 00363 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00364 00365 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_1] ) color = WHITE; 00366 else color = BLUE; 00367 et024006_DrawFilledRect(DEMO_WHEEL_START_X + DEMO_WHEEL_RADIUS*SIN30, 00368 DEMO_WHEEL_START_Y - DEMO_WHEEL_RADIUS*COS30, 00369 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00370 00371 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_2] ) color = WHITE; 00372 else color = BLUE; 00373 et024006_DrawFilledRect(DEMO_WHEEL_START_X + DEMO_WHEEL_RADIUS*SIN60, 00374 DEMO_WHEEL_START_Y - DEMO_WHEEL_RADIUS*COS60, 00375 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00376 00377 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_3] ) color = WHITE; 00378 else color = BLUE; 00379 et024006_DrawFilledRect(DEMO_WHEEL_START_X + DEMO_WHEEL_RADIUS*SIN90, 00380 DEMO_WHEEL_START_Y - DEMO_WHEEL_RADIUS*COS90, 00381 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00382 00383 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_4] ) color = WHITE; 00384 else color = BLUE; 00385 et024006_DrawFilledRect(DEMO_WHEEL_START_X + DEMO_WHEEL_RADIUS*SIN60, 00386 DEMO_WHEEL_START_Y + DEMO_WHEEL_RADIUS*COS60, 00387 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00388 00389 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_5] ) color = WHITE; 00390 else color = BLUE; 00391 et024006_DrawFilledRect(DEMO_WHEEL_START_X + DEMO_WHEEL_RADIUS*SIN30, 00392 DEMO_WHEEL_START_Y + DEMO_WHEEL_RADIUS*COS30, 00393 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00394 00395 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_6] ) color = WHITE; 00396 else color = BLUE; 00397 et024006_DrawFilledRect(DEMO_WHEEL_START_X - DEMO_WHEEL_RADIUS*SIN0, 00398 DEMO_WHEEL_START_Y + DEMO_WHEEL_RADIUS*COS0, 00399 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00400 00401 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_7] ) color = WHITE; 00402 else color = BLUE; 00403 et024006_DrawFilledRect(DEMO_WHEEL_START_X - DEMO_WHEEL_RADIUS*SIN30, 00404 DEMO_WHEEL_START_Y + DEMO_WHEEL_RADIUS*COS30, 00405 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00406 00407 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_8] ) color = WHITE; 00408 else color = BLUE; 00409 et024006_DrawFilledRect(DEMO_WHEEL_START_X - DEMO_WHEEL_RADIUS*SIN60, 00410 DEMO_WHEEL_START_Y + DEMO_WHEEL_RADIUS*COS60, 00411 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00412 00413 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_9] ) color = WHITE; 00414 else color = BLUE; 00415 et024006_DrawFilledRect(DEMO_WHEEL_START_X - DEMO_WHEEL_RADIUS*SIN90, 00416 DEMO_WHEEL_START_Y + DEMO_WHEEL_RADIUS*COS90, 00417 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00418 00419 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_10] ) color = WHITE; 00420 else color = BLUE; 00421 et024006_DrawFilledRect(DEMO_WHEEL_START_X - DEMO_WHEEL_RADIUS*SIN60, 00422 DEMO_WHEEL_START_Y - DEMO_WHEEL_RADIUS*COS60, 00423 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00424 00425 if( touch_states[QT60168_TOUCH_SENSOR_WHEEL_11] ) color = WHITE; 00426 else color = BLUE; 00427 et024006_DrawFilledRect(DEMO_WHEEL_START_X - DEMO_WHEEL_RADIUS*SIN30, 00428 DEMO_WHEEL_START_Y - DEMO_WHEEL_RADIUS*COS30, 00429 DEMO_WHEEL_SIZE_X, DEMO_WHEEL_SIZE_Y, color ); 00430 } 00431 } // while(1)... 00432 } 00433 }
static void qt60168_resources_init | ( | void | ) | [static] |
Initializes QT60168 resources: GPIO and SPI.
Definition at line 117 of file qt60168_example.c.
References QT60168_SPI_BITS, and QT60168_SPI_MASTER_SPEED.
Referenced by main().
00118 { 00119 static const gpio_map_t QT60168_SPI_GPIO_MAP = 00120 { 00121 {QT60168_SPI_SCK_PIN, QT60168_SPI_SCK_FUNCTION }, // SPI Clock. 00122 {QT60168_SPI_MISO_PIN, QT60168_SPI_MISO_FUNCTION }, // MISO. 00123 {QT60168_SPI_MOSI_PIN, QT60168_SPI_MOSI_FUNCTION }, // MOSI. 00124 {QT60168_SPI_NPCS0_PIN, QT60168_SPI_NPCS0_FUNCTION} // Chip Select NPCS. 00125 }; 00126 00127 // SPI options. 00128 spi_options_t spiOptions = 00129 { 00130 .reg = QT60168_SPI_NCPS, 00131 .baudrate = QT60168_SPI_MASTER_SPEED, // Defined in conf_qt60168.h. 00132 .bits = QT60168_SPI_BITS, // Defined in conf_qt60168.h. 00133 .spck_delay = 0, 00134 .trans_delay = 0, 00135 .stay_act = 0, 00136 .spi_mode = 3, 00137 .modfdis = 1 00138 }; 00139 00140 // Assign I/Os to SPI. 00141 gpio_enable_module(QT60168_SPI_GPIO_MAP, 00142 sizeof(QT60168_SPI_GPIO_MAP) / sizeof(QT60168_SPI_GPIO_MAP[0])); 00143 00144 // Initialize as master. 00145 spi_initMaster(QT60168_SPI, &spiOptions); 00146 00147 // Set selection mode: variable_ps, pcs_decode, delay. 00148 spi_selectionMode(QT60168_SPI, 0, 0, 0); 00149 00150 // Enable SPI. 00151 spi_enable(QT60168_SPI); 00152 00153 // Initialize QT60168 with SPI clock Osc0. 00154 spi_setupChipReg(QT60168_SPI, &spiOptions, FOSC0); 00155 }