Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include "SDFileSystem.h" 00003 #include "NokiaLCD.h" 00004 #include "myBMP.h" 00005 #include "mpr121.h" 00006 #include "jpegutil.h" 00007 #include <string> 00008 #include <cctype> 00009 00010 SDFileSystem sd(p5, p6, p7, p8, "sd"); 00011 NokiaLCD lcd(p11, p13, p14, p15, NokiaLCD::LCD6610); 00012 DigitalOut led1(LED1); 00013 DigitalOut led2(LED2); 00014 DigitalOut led3(LED3); 00015 DigitalOut led4(LED4); 00016 InterruptIn interrupt(p26); 00017 I2C i2c(p9,p10); 00018 Mpr121 mpr121(&i2c, Mpr121::ADD_VSS); 00019 Serial pc(USBTX,USBRX); 00020 vector<string> files; 00021 string file; 00022 int selectpos = 1; 00023 int oldvalue; 00024 int value; 00025 bool showingImage = false; 00026 bool displayImage = false; 00027 00028 00029 string toLower(string in) 00030 { 00031 for(int i = 0; i < in.length(); i++) 00032 { 00033 in[i] = tolower(in[i]); 00034 } 00035 return in; 00036 } 00037 00038 void changepos(int val2,int val1){ //compares the current position with the old one andchanges currsor accordingly. 00039 //val1 is the lower value ond val2 th higher possibla value 00040 00041 if (!showingImage) { 00042 if (oldvalue==val1) { 00043 if (selectpos != 1) 00044 selectpos--; 00045 // if (selectpos < 1)selectpos = files.size(); // no more raparround 00046 } else if(oldvalue==val2){ 00047 if (selectpos != files.size()) 00048 selectpos++; 00049 //if (selectpos > files.size()) selectpos = 1; // no more raparound 00050 } 00051 } 00052 } 00053 00054 void fallInterrupt() { 00055 value=mpr121.read(0x00); 00056 value +=mpr121.read(0x01)<<8; 00057 //pc.printf("%d\r\n",value); 00058 switch (value) { 00059 case 0: //no button is pressed (good only to execute actions on release) 00060 switch (oldvalue) { //if not do action according to button realeased. 00061 case (1<<4): 00062 if (showingImage) { 00063 lcd.background(0xFFFFFF); 00064 lcd.foreground(0xFFFFFF); 00065 lcd.cls(); 00066 showingImage = false; 00067 } 00068 break; 00069 00070 case (1<<5): 00071 if (!showingImage) { 00072 displayImage = true; 00073 showingImage = true; 00074 } 00075 break; 00076 00077 } 00078 case 1: 00079 changepos(-1,3); //cannot have a lower value as 0 i no button 00080 break; 00081 case 3: 00082 changepos(1,2); 00083 break; 00084 case 2: 00085 changepos((2+1),(2+4)); 00086 break; 00087 case (2+4): 00088 changepos(2,4); 00089 break; 00090 case 4: 00091 changepos((4+2),(4+8)); 00092 break; 00093 case (4+8): 00094 changepos(4,8); 00095 break; 00096 case 8: 00097 changepos(4+8,-1); // cannot have a highe boundry 00098 break; 00099 00100 default: 00101 00102 break; 00103 }; 00104 00105 oldvalue=value; 00106 } 00107 00108 void ls(char *dir) 00109 { 00110 DIR *dp; 00111 struct dirent *dirp; 00112 dp = opendir(dir); 00113 while((dirp = readdir(dp)) != NULL) 00114 { 00115 files.push_back(string(dirp->d_name)); 00116 } 00117 } 00118 00119 int main() { 00120 interrupt.fall(&fallInterrupt); 00121 interrupt.mode(PullUp); 00122 00123 lcd.background(0xFFFFFF); 00124 lcd.foreground(0xFFFFFF); 00125 lcd.cls(); 00126 ls("/sd"); 00127 00128 led1 = 1; 00129 00130 while(1) { 00131 int ypos = 1; 00132 if(displayImage) 00133 { 00134 __disable_irq(); 00135 file = files[selectpos - 1]; 00136 string ext = file.substr(file.rfind('.')+1); 00137 ext = toLower(ext); 00138 if(!ext.compare("bmp")) 00139 { 00140 RGBApixel *Colors = new RGBApixel [2]; 00141 file = "/sd/" + file; 00142 lcd.background(0x000000); 00143 lcd.foreground(0x000000); 00144 lcd.cls(); 00145 ReadBMPFromFile(file.c_str(), Colors, &lcd); 00146 showingImage = true; 00147 } 00148 else if(!ext.compare("jpeg") || !ext.compare("jpg")) 00149 { 00150 file = "/sd/" + file; 00151 lcd.background(0x000000); 00152 lcd.foreground(0x000000); 00153 lcd.cls(); 00154 ReadJPEGFromFile(file.c_str(), &lcd); 00155 showingImage = true; 00156 } 00157 else 00158 { 00159 showingImage = false; 00160 } 00161 displayImage = false; 00162 __enable_irq(); 00163 } 00164 if(!showingImage) 00165 { 00166 lcd.background(0xFFFFFF); 00167 lcd.locate(0,ypos); 00168 for(vector<string>::iterator it=files.begin(); it < files.end(); it++) 00169 { 00170 if(ypos == selectpos) 00171 { 00172 lcd.foreground(0xFF0000); 00173 } 00174 else 00175 { 00176 lcd.foreground(0x000000); 00177 } 00178 lcd.printf("%s",(*it).c_str()); 00179 ypos++; 00180 lcd.locate(0,ypos); 00181 } 00182 } 00183 led1 = !led1; 00184 wait(0.05); 00185 } 00186 }
Generated on Wed Jul 13 2022 18:08:25 by
1.7.2