Final Project for ECE-4180 Fall 2022. Interface with ENS160 AQI sensor and display the readings on uLCD.
Dependencies: 4DGL-uLCD-SE ENS160_Library mbed PinDetect mbed-rtos
Revision 7:7bd7397ab89f, committed 2013-11-25
- Comitter:
- 4180_1
- Date:
- Mon Nov 25 04:25:16 2013 +0000
- Parent:
- 6:f752accd632c
- Child:
- 8:31e63caf37e2
- Commit message:
- ver1.4
Changed in this revision
| 4DGL-uLCD-SE.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/4DGL-uLCD-SE.lib Fri Nov 22 02:45:05 2013 +0000 +++ b/4DGL-uLCD-SE.lib Mon Nov 25 04:25:16 2013 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#8936798c19a3 +http://mbed.org/users/4180_1/code/4DGL-uLCD-SE/#b759b69cbaf9
--- a/main.cpp Fri Nov 22 02:45:05 2013 +0000
+++ b/main.cpp Mon Nov 25 04:25:16 2013 +0000
@@ -1,5 +1,5 @@
//
-// TFT_4DGL is a class to drive 4D Systems TFT touch screens
+// TFT_4DGL is a class to drive 4D Systems LCD screens
//
// Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
//
@@ -39,10 +39,30 @@
uLCD.printf("%2D",i);
wait(.5);
}
+
uLCD.cls();
+
+ uLCD.printf("Change baud rate......");
uLCD.baudrate(600000); //jack up baud rate to max for fast display
//if demo hangs here - try lower baud rates
+ // printf text only full screen mode demo
+ uLCD.background_color(BLUE);
+ uLCD.cls();
+ uLCD.locate(0,0);
+ uLCD.color(WHITE);
+ uLCD.textbackground_color(BLUE);
+ uLCD.set_font(FONT_7X8);
+ uLCD.text_mode(OPAQUE);
+ int i=0;
+ while(i<64) {
+ if(i%16==0) uLCD.cls();
+ uLCD.printf("TxtLine %2D Page %D\n",i%16,i/16 );
+ i++; //16 lines with 18 charaters per line
+ }
+ wait(0.5);
//demo graphics commands
+ uLCD.background_color(BLACK);
+ uLCD.cls();
uLCD.background_color(DGREY);
uLCD.circle(60, 50, 30, 0xFF00FF);
uLCD.triangle(120, 100, 40, 40, 10, 100, 0x0000FF);
@@ -60,23 +80,10 @@
uLCD.text_italic(ON);
uLCD.text_string("This is a test of string", 1, 4, FONT_7X8, WHITE);
wait(2);
- // printf text only mode demo
- uLCD.background_color(BLUE);
- uLCD.cls();
- uLCD.locate(0,0);
- uLCD.color(WHITE);
- uLCD.textbackground_color(BLUE);
- uLCD.set_font(FONT_7X8);
- uLCD.text_mode(OPAQUE);
- int i=0;
- while(i<64) {
- if(i%16==0) uLCD.cls();
- uLCD.printf("TxtLine %2D Page %D\n",i%16,i/16 );
- i++; //16 lines with 18 charaters per line
- }
- wait(0.5);
+
//Bouncing Ball Demo
- int x=50,y=21,vx=1,vy=1, radius=4;
+ float fx=50.0,fy=21.0,vx=1.0,vy=0.4;
+ int x=50,y=21,radius=4;
uLCD.background_color(BLACK);
uLCD.cls();
//draw walls
@@ -84,19 +91,21 @@
uLCD.line(127, 0, 127, 127, WHITE);
uLCD.line(127, 127, 0, 127, WHITE);
uLCD.line(0, 127, 0, 0, WHITE);
- for (int i=0; i<1000; i++) {
+ for (int i=0; i<1500; i++) {
//draw ball
uLCD.circle(x, y, radius, RED);
- //bounce off edge walls?
- if ((x<=radius+1) || (x>=126-radius)) vx = -vx;
- if ((y<=radius+1) || (y>=126-radius)) vy = -vy;
+ //bounce off edge walls and slow down a bit?
+ if ((x<=radius+1) || (x>=126-radius)) vx = -.90*vx;
+ if ((y<=radius+1) || (y>=126-radius)) vy = -.90*vy;
//erase old ball location
uLCD.circle(x, y, radius, BLACK);
//move ball
- x=x+vx;
- y=y+vy;
+ fx=fx+vx;
+ fy=fy+vy;
+ x=(int)fx;
+ y=(int)fy;
}
- wait(1);
+ wait(0.5);
//draw an image pixel by pixel
int pixelcolors[50][50];
uLCD.background_color(BLACK);
@@ -112,7 +121,7 @@
double MaxIm = MinIm+(MaxRe-MinRe)*ImageHeight/ImageWidth;
double Re_factor = (MaxRe-MinRe)/(ImageWidth-1);
double Im_factor = (MaxIm-MinIm)/(ImageHeight-1);
- unsigned MaxIterations = 4096;
+ unsigned MaxIterations = 2048;
for(unsigned y=0; y<ImageHeight; ++y) {
double c_im = MaxIm - y*Im_factor;
for(unsigned x=0; x<ImageWidth; ++x) {
@@ -138,8 +147,9 @@
uLCD.cls();
int num_cols=50;
int num_rows=50;
+ int frame=0;
double a,b,c=0.0;
- while(1) {
+ while(frame<50) {
for (int k=0; k<num_cols; k++) {
b= (1+sin(3.14159*k*0.75/(num_cols-1.0)+c))*0.5;
for (int i=0; i<num_rows; i++) {
@@ -159,5 +169,22 @@
uLCD.BLIT(39, 39, 50, 50, &pixelcolors[0][0]);
c = c + 0.0314159*3.0;
if (c > 6.2831) c = 0.0;
+ frame++;
+ }
+ uLCD.cls();
+ //SD card needed with image and video files for last two demos
+ while(1){} //remove line, if SD card is used
+ uLCD.cls();
+ uLCD.media_init();
+ uLCD.set_sector_address(0x001D, 0x4C01);
+ uLCD.display_image(0,0);
+ wait(10);
+ while(1) {
+ uLCD.cls();
+ uLCD.media_init();
+ uLCD.set_sector_address(0x001D, 0x4C42);
+ uLCD.display_video(0,0);
}
}
+
+
