Mini SmartGPU Intelligent Graphics Processor- Vizic Technologies 2012
Dependencies: MINISMARTGPU mbed
main.cpp@0:2b95fd36d048, 2012-08-30 (annotated)
- Committer:
- emmanuelchio
- Date:
- Thu Aug 30 21:59:00 2012 +0000
- Revision:
- 0:2b95fd36d048
Mini SmartGPU Intelligent Graphics Processor- Vizic Technologies 2012
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emmanuelchio | 0:2b95fd36d048 | 1 | /********************************************************* |
emmanuelchio | 0:2b95fd36d048 | 2 | VIZIC TECHNOLOGIES. COPYRIGHT 2012. |
emmanuelchio | 0:2b95fd36d048 | 3 | THE DATASHEETS, SOFTWARE AND LIBRARIES ARE PROVIDED "AS IS." |
emmanuelchio | 0:2b95fd36d048 | 4 | VIZIC EXPRESSLY DISCLAIM ANY WARRANTY OF ANY KIND, WHETHER |
emmanuelchio | 0:2b95fd36d048 | 5 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED |
emmanuelchio | 0:2b95fd36d048 | 6 | WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, |
emmanuelchio | 0:2b95fd36d048 | 7 | OR NONINFRINGEMENT. IN NO EVENT SHALL VIZIC BE LIABLE FOR |
emmanuelchio | 0:2b95fd36d048 | 8 | ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, |
emmanuelchio | 0:2b95fd36d048 | 9 | LOST PROFITS OR LOST DATA, HARM TO YOUR EQUIPMENT, COST OF |
emmanuelchio | 0:2b95fd36d048 | 10 | PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, |
emmanuelchio | 0:2b95fd36d048 | 11 | ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO |
emmanuelchio | 0:2b95fd36d048 | 12 | ANY DEFENCE THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, |
emmanuelchio | 0:2b95fd36d048 | 13 | OR OTHER SIMILAR COSTS. |
emmanuelchio | 0:2b95fd36d048 | 14 | *********************************************************/ |
emmanuelchio | 0:2b95fd36d048 | 15 | /**************************************************************************************/ |
emmanuelchio | 0:2b95fd36d048 | 16 | /*MINI SMARTGPU intelligent embedded graphics processor unit |
emmanuelchio | 0:2b95fd36d048 | 17 | those examples are for use the MINI SMARTGPU with the mbed microcontoller, just connect tx,rx,and reset |
emmanuelchio | 0:2b95fd36d048 | 18 | Board: |
emmanuelchio | 0:2b95fd36d048 | 19 | http://vizictechnologies.com/#/mini-smart-gpu/4566376187 |
emmanuelchio | 0:2b95fd36d048 | 20 | |
emmanuelchio | 0:2b95fd36d048 | 21 | www.vizictechnologies.com |
emmanuelchio | 0:2b95fd36d048 | 22 | Vizic Technologies copyright 2012*/ |
emmanuelchio | 0:2b95fd36d048 | 23 | /**************************************************************************************/ |
emmanuelchio | 0:2b95fd36d048 | 24 | /**************************************************************************************/ |
emmanuelchio | 0:2b95fd36d048 | 25 | |
emmanuelchio | 0:2b95fd36d048 | 26 | #include "mbed.h" |
emmanuelchio | 0:2b95fd36d048 | 27 | #include "MINISMARTGPU.h" |
emmanuelchio | 0:2b95fd36d048 | 28 | |
emmanuelchio | 0:2b95fd36d048 | 29 | MINISMARTGPU lcd(p13,p14,p15); //(TX,RX,Reset); Create Object "lcd" |
emmanuelchio | 0:2b95fd36d048 | 30 | |
emmanuelchio | 0:2b95fd36d048 | 31 | #define clockBodyCol BLACK //colour for the body clock |
emmanuelchio | 0:2b95fd36d048 | 32 | #define clockEdgeCol GREEN //colour for the edge of the clock |
emmanuelchio | 0:2b95fd36d048 | 33 | #define secCol YELLOW //seconds hand colour |
emmanuelchio | 0:2b95fd36d048 | 34 | #define minCol MAGENTA //minutes hand colour |
emmanuelchio | 0:2b95fd36d048 | 35 | #define hourCol RED //hours hand colour |
emmanuelchio | 0:2b95fd36d048 | 36 | #define halfx 80 //this point represent the x center of the clock where math is done |
emmanuelchio | 0:2b95fd36d048 | 37 | #define halfy 64 //this point represent the y center of the clock where math is done |
emmanuelchio | 0:2b95fd36d048 | 38 | |
emmanuelchio | 0:2b95fd36d048 | 39 | |
emmanuelchio | 0:2b95fd36d048 | 40 | /**********************************************************************************/ |
emmanuelchio | 0:2b95fd36d048 | 41 | /**********************************************************************************/ |
emmanuelchio | 0:2b95fd36d048 | 42 | /**********************************************************************************/ |
emmanuelchio | 0:2b95fd36d048 | 43 | int main() { |
emmanuelchio | 0:2b95fd36d048 | 44 | int secs=15; |
emmanuelchio | 0:2b95fd36d048 | 45 | int mins=45; |
emmanuelchio | 0:2b95fd36d048 | 46 | int hours=2; |
emmanuelchio | 0:2b95fd36d048 | 47 | int xs,ys,xm,ym,xh,yh; |
emmanuelchio | 0:2b95fd36d048 | 48 | int angleH,angleM,angleS; |
emmanuelchio | 0:2b95fd36d048 | 49 | int handHour=35;//hand size |
emmanuelchio | 0:2b95fd36d048 | 50 | int handMin=45;//hand size |
emmanuelchio | 0:2b95fd36d048 | 51 | int handSec=48;//hand size |
emmanuelchio | 0:2b95fd36d048 | 52 | |
emmanuelchio | 0:2b95fd36d048 | 53 | lcd.reset(); //physically reset MINISMARTGPU |
emmanuelchio | 0:2b95fd36d048 | 54 | lcd.start(); //initialize the MINISMARTGPU processor |
emmanuelchio | 0:2b95fd36d048 | 55 | wait_ms(200); |
emmanuelchio | 0:2b95fd36d048 | 56 | lcd.baudChange(1000000); //set high baud for fast drawing |
emmanuelchio | 0:2b95fd36d048 | 57 | |
emmanuelchio | 0:2b95fd36d048 | 58 | lcd.drawCircle(halfx,halfy,55,clockBodyCol,FILL); //draw clock body |
emmanuelchio | 0:2b95fd36d048 | 59 | lcd.drawCircle(halfx,halfy,55,clockEdgeCol,UNFILL); //draw clock edge |
emmanuelchio | 0:2b95fd36d048 | 60 | |
emmanuelchio | 0:2b95fd36d048 | 61 | while(1){ |
emmanuelchio | 0:2b95fd36d048 | 62 | //Do some Math to get the second point of the clock hands. (first point is always the center of the clock) |
emmanuelchio | 0:2b95fd36d048 | 63 | angleS=secs*6; //get the current seconds in angle form, a circle have 360 degrees divided by 60 seconds = 6, then we multiply the 6 by the current seconds to get current angle |
emmanuelchio | 0:2b95fd36d048 | 64 | xs=(sin((angleS*3.14)/180)) * handSec; //get X component of the second's hand |
emmanuelchio | 0:2b95fd36d048 | 65 | ys=(cos((angleS*3.14)/180)) * handSec; //get Y component of the second's hand |
emmanuelchio | 0:2b95fd36d048 | 66 | angleM=mins*6; //get the current minutes in angle form, a circle have 360 degrees divided by 60 minutes = 6, then we multiply the 6 by the current minutes to get current angle |
emmanuelchio | 0:2b95fd36d048 | 67 | xm=(sin((angleM*3.14)/180)) * handMin; //get X component of the minutes's hand |
emmanuelchio | 0:2b95fd36d048 | 68 | ym=(cos((angleM*3.14)/180)) * handMin; //get Y component of the minutes's hand |
emmanuelchio | 0:2b95fd36d048 | 69 | angleH=hours*30; //get the current hours in angle form, a circle have 360 degrees divided by 12 hours = 30, then we multiply the 30 by the current hours to get current angle |
emmanuelchio | 0:2b95fd36d048 | 70 | xh=(sin((angleH*3.14)/180)) * handHour; //get X component of the hours's hand |
emmanuelchio | 0:2b95fd36d048 | 71 | yh=(cos((angleH*3.14)/180)) * handHour; //get Y component of the hours's hand |
emmanuelchio | 0:2b95fd36d048 | 72 | |
emmanuelchio | 0:2b95fd36d048 | 73 | lcd.putLetter(73,11,clockEdgeCol,FONT3,TRANS,'1'); //Draw the 1 |
emmanuelchio | 0:2b95fd36d048 | 74 | lcd.putLetter(81,11,clockEdgeCol,FONT3,TRANS,'2'); //Draw the 2 |
emmanuelchio | 0:2b95fd36d048 | 75 | |
emmanuelchio | 0:2b95fd36d048 | 76 | //Draw current time hands |
emmanuelchio | 0:2b95fd36d048 | 77 | lcd.drawLine(halfx,halfy,halfx+xm,halfy-ym,minCol); // Draw the minutes hand, first point is the center of the clock, and the second is the point obtained by doing math |
emmanuelchio | 0:2b95fd36d048 | 78 | lcd.drawLine(halfx,halfy,halfx+xh,halfy-yh,hourCol); // Draw the hours hand, first point is the center of the clock, and the second is the point obtained by doing math |
emmanuelchio | 0:2b95fd36d048 | 79 | lcd.drawLine(halfx,halfy,halfx+xs,halfy-ys,secCol); // Draw the seconds hand, first point is the center of the clock, and the second is the point obtained by doing math |
emmanuelchio | 0:2b95fd36d048 | 80 | lcd.drawCircle(halfx,halfy,2,secCol,FILL); // Draw the center of the second's hand |
emmanuelchio | 0:2b95fd36d048 | 81 | |
emmanuelchio | 0:2b95fd36d048 | 82 | wait_ms(1000); // wait for one second delay (we dont need to explain why we're waiting one second, right?) |
emmanuelchio | 0:2b95fd36d048 | 83 | |
emmanuelchio | 0:2b95fd36d048 | 84 | secs++; // increase seconds |
emmanuelchio | 0:2b95fd36d048 | 85 | if(secs==60){ // if we reach 60 seconds |
emmanuelchio | 0:2b95fd36d048 | 86 | mins++; // increase the minutes |
emmanuelchio | 0:2b95fd36d048 | 87 | if(mins==60){ // if we reach 60 minutes |
emmanuelchio | 0:2b95fd36d048 | 88 | hours++; // increase the minutes |
emmanuelchio | 0:2b95fd36d048 | 89 | if(hours==12){ // if we reach 12 hours |
emmanuelchio | 0:2b95fd36d048 | 90 | hours=0; // clear hours |
emmanuelchio | 0:2b95fd36d048 | 91 | } |
emmanuelchio | 0:2b95fd36d048 | 92 | mins=0; // clear minutes |
emmanuelchio | 0:2b95fd36d048 | 93 | } |
emmanuelchio | 0:2b95fd36d048 | 94 | secs=0; // clear seconds |
emmanuelchio | 0:2b95fd36d048 | 95 | } |
emmanuelchio | 0:2b95fd36d048 | 96 | |
emmanuelchio | 0:2b95fd36d048 | 97 | //Erase all hands |
emmanuelchio | 0:2b95fd36d048 | 98 | lcd.drawLine(halfx,halfy,halfx+xs,halfy-ys,clockBodyCol); // Erase Second's hand |
emmanuelchio | 0:2b95fd36d048 | 99 | lcd.drawLine(halfx,halfy,halfx+xm,halfy-ym,clockBodyCol); // Erase Minute's hand |
emmanuelchio | 0:2b95fd36d048 | 100 | lcd.drawLine(halfx,halfy,halfx+xh,halfy-yh,clockBodyCol); // Erase Hour's hand |
emmanuelchio | 0:2b95fd36d048 | 101 | } |
emmanuelchio | 0:2b95fd36d048 | 102 | } |