cansat
Dependencies: FatFileSystem SCP1000 mbed
Fork of SDHCFileSystem by
main.cpp@1:4dfe0d37c606, 2014-07-04 (annotated)
- Committer:
- tomonari
- Date:
- Fri Jul 04 10:33:20 2014 +0000
- Revision:
- 1:4dfe0d37c606
- Parent:
- 0:90601632692f
cansat
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tomonari | 1:4dfe0d37c606 | 1 | #include "mbed.h" |
tomonari | 1:4dfe0d37c606 | 2 | #include "SCP1000.h" |
tomonari | 1:4dfe0d37c606 | 3 | #include "string" |
tomonari | 1:4dfe0d37c606 | 4 | #include "SDHCFileSystem.h" |
tomonari | 1:4dfe0d37c606 | 5 | |
tomonari | 1:4dfe0d37c606 | 6 | DigitalOut myled1(LED1); |
tomonari | 1:4dfe0d37c606 | 7 | DigitalOut myled2(LED2); |
tomonari | 1:4dfe0d37c606 | 8 | DigitalOut myled4(LED4); |
tomonari | 1:4dfe0d37c606 | 9 | Serial xbee(p9,p10); |
tomonari | 1:4dfe0d37c606 | 10 | SCP1000 scp1000(p11,p12,p13,p14); |
tomonari | 1:4dfe0d37c606 | 11 | SDFileSystem sd(p5, p6, p7, p8, "sd"); // mosi, miso, sclk, cs |
tomonari | 1:4dfe0d37c606 | 12 | I2C i2c(p28, p27); // sda, scl |
tomonari | 1:4dfe0d37c606 | 13 | |
tomonari | 1:4dfe0d37c606 | 14 | const int AQCM0802_addr = 0x7C; |
tomonari | 1:4dfe0d37c606 | 15 | |
tomonari | 1:4dfe0d37c606 | 16 | unsigned char mode; |
tomonari | 1:4dfe0d37c606 | 17 | unsigned char contrast = 0; // 0-63 |
tomonari | 1:4dfe0d37c606 | 18 | unsigned char contrastFlag = false; |
tomonari | 1:4dfe0d37c606 | 19 | int CGcounter; |
tomonari | 1:4dfe0d37c606 | 20 | int FADEcounter; |
tomonari | 1:4dfe0d37c606 | 21 | |
tomonari | 1:4dfe0d37c606 | 22 | void lcd_cmd(char x) { |
tomonari | 1:4dfe0d37c606 | 23 | char data[2]; |
tomonari | 1:4dfe0d37c606 | 24 | data[0] = 0x00; // CO = 0,RS = 0 |
tomonari | 1:4dfe0d37c606 | 25 | data[1] = x; |
tomonari | 1:4dfe0d37c606 | 26 | i2c.write(AQCM0802_addr, data, 2); |
tomonari | 1:4dfe0d37c606 | 27 | } |
tomonari | 1:4dfe0d37c606 | 28 | |
tomonari | 1:4dfe0d37c606 | 29 | void lcd_contdata(char x) { |
tomonari | 1:4dfe0d37c606 | 30 | char data[2]; |
tomonari | 1:4dfe0d37c606 | 31 | data[0] = 0xC0; //0b11000000 CO = 1, RS = 1 |
tomonari | 1:4dfe0d37c606 | 32 | data[1] = x; |
tomonari | 1:4dfe0d37c606 | 33 | i2c.write(AQCM0802_addr, data, 2); |
tomonari | 1:4dfe0d37c606 | 34 | } |
tomonari | 1:4dfe0d37c606 | 35 | |
tomonari | 1:4dfe0d37c606 | 36 | void lcd_lastdata(char x) { |
tomonari | 1:4dfe0d37c606 | 37 | char data[2]; |
tomonari | 1:4dfe0d37c606 | 38 | data[0] = 0x40; //0b11000000 CO = 0, RS = 1 |
tomonari | 1:4dfe0d37c606 | 39 | data[1] = x; |
tomonari | 1:4dfe0d37c606 | 40 | i2c.write(AQCM0802_addr, data, 2); |
tomonari | 1:4dfe0d37c606 | 41 | } |
tomonari | 1:4dfe0d37c606 | 42 | |
tomonari | 1:4dfe0d37c606 | 43 | void lcd_printStr(const char *s) { |
tomonari | 1:4dfe0d37c606 | 44 | while(*s) { |
tomonari | 1:4dfe0d37c606 | 45 | if(*(s + 1)) { |
tomonari | 1:4dfe0d37c606 | 46 | lcd_contdata(*s); |
tomonari | 1:4dfe0d37c606 | 47 | } else { |
tomonari | 1:4dfe0d37c606 | 48 | lcd_lastdata(*s); |
tomonari | 1:4dfe0d37c606 | 49 | } |
tomonari | 1:4dfe0d37c606 | 50 | s++; |
tomonari | 1:4dfe0d37c606 | 51 | } |
tomonari | 1:4dfe0d37c606 | 52 | } |
tomonari | 1:4dfe0d37c606 | 53 | |
tomonari | 1:4dfe0d37c606 | 54 | void lcd_printHex(unsigned char num) { |
tomonari | 1:4dfe0d37c606 | 55 | lcd_contdata(num); |
tomonari | 1:4dfe0d37c606 | 56 | } |
tomonari | 1:4dfe0d37c606 | 57 | |
tomonari | 1:4dfe0d37c606 | 58 | void lcd_init() { |
tomonari | 1:4dfe0d37c606 | 59 | wait(0.04); |
tomonari | 1:4dfe0d37c606 | 60 | // LCD initialize |
tomonari | 1:4dfe0d37c606 | 61 | lcd_cmd(0x38); // function set |
tomonari | 1:4dfe0d37c606 | 62 | lcd_cmd(0x39); // function set |
tomonari | 1:4dfe0d37c606 | 63 | lcd_cmd(0x04); // EntryModeSet |
tomonari | 1:4dfe0d37c606 | 64 | lcd_cmd(0x14); // interval osc |
tomonari | 1:4dfe0d37c606 | 65 | lcd_cmd(0x70 | (contrast & 0xF)); // contrast Low |
tomonari | 1:4dfe0d37c606 | 66 | lcd_cmd(0x5C | ((contrast >> 4) & 0x3)); // contast High/icon/power |
tomonari | 1:4dfe0d37c606 | 67 | lcd_cmd(0x6C); // follower control |
tomonari | 1:4dfe0d37c606 | 68 | wait(0.2); |
tomonari | 1:4dfe0d37c606 | 69 | lcd_cmd(0x38); // function set |
tomonari | 1:4dfe0d37c606 | 70 | lcd_cmd(0x0C); // Display On |
tomonari | 1:4dfe0d37c606 | 71 | lcd_cmd(0x01); // Clear Display |
tomonari | 1:4dfe0d37c606 | 72 | wait(0.2); // need additional wait to Clear Display |
tomonari | 1:4dfe0d37c606 | 73 | } |
tomonari | 1:4dfe0d37c606 | 74 | |
tomonari | 1:4dfe0d37c606 | 75 | void lcd_setCursor(unsigned char x,unsigned char y) { |
tomonari | 1:4dfe0d37c606 | 76 | lcd_cmd(0x80 | (y * 0x40 + x)); |
tomonari | 1:4dfe0d37c606 | 77 | } |
tomonari | 1:4dfe0d37c606 | 78 | |
tomonari | 1:4dfe0d37c606 | 79 | unsigned char cg[13 * 8] = { |
tomonari | 1:4dfe0d37c606 | 80 | |
tomonari | 1:4dfe0d37c606 | 81 | }; |
tomonari | 1:4dfe0d37c606 | 82 | |
tomonari | 1:4dfe0d37c606 | 83 | void setCG(int src,int dst,int len) { |
tomonari | 1:4dfe0d37c606 | 84 | lcd_cmd(0x38); |
tomonari | 1:4dfe0d37c606 | 85 | lcd_cmd(0x40 + dst); |
tomonari | 1:4dfe0d37c606 | 86 | if (src >= 0) { |
tomonari | 1:4dfe0d37c606 | 87 | for (int i = 0;i < len;i++) lcd_printHex(cg[src + i]); |
tomonari | 1:4dfe0d37c606 | 88 | } else { |
tomonari | 1:4dfe0d37c606 | 89 | for (int i = 0;i < len;i++) lcd_printHex(0); |
tomonari | 1:4dfe0d37c606 | 90 | } |
tomonari | 1:4dfe0d37c606 | 91 | } |
tomonari | 1:4dfe0d37c606 | 92 | |
tomonari | 1:4dfe0d37c606 | 93 | void setContrast(unsigned char c) { |
tomonari | 1:4dfe0d37c606 | 94 | lcd_cmd(0x39); |
tomonari | 1:4dfe0d37c606 | 95 | lcd_cmd(0x70 | (c & 0x0f)); // contrast Low |
tomonari | 1:4dfe0d37c606 | 96 | lcd_cmd(0x5C | ((c >> 4) & 0x03)); // contast High/icon/power |
tomonari | 1:4dfe0d37c606 | 97 | lcd_cmd(0x38); |
tomonari | 1:4dfe0d37c606 | 98 | } |
tomonari | 1:4dfe0d37c606 | 99 | |
tomonari | 1:4dfe0d37c606 | 100 | //main start |
tomonari | 1:4dfe0d37c606 | 101 | |
tomonari | 1:4dfe0d37c606 | 102 | int main() { |
tomonari | 1:4dfe0d37c606 | 103 | char a; |
tomonari | 1:4dfe0d37c606 | 104 | char c[256],g[256],u[256],d,sta[6],wake=0,res=1; |
tomonari | 1:4dfe0d37c606 | 105 | int pre,j=0,i=0; |
tomonari | 1:4dfe0d37c606 | 106 | unsigned long kiatu=0,pre2=0; |
tomonari | 1:4dfe0d37c606 | 107 | float kiatusa=0,tmp2,high=0,gosa=0,goukei=0,goukei2=0,heikin=0,heikin2=0,den,vol; |
tomonari | 1:4dfe0d37c606 | 108 | double high1=0,high0=0; |
tomonari | 1:4dfe0d37c606 | 109 | long presa=0; |
tomonari | 1:4dfe0d37c606 | 110 | |
tomonari | 1:4dfe0d37c606 | 111 | |
tomonari | 1:4dfe0d37c606 | 112 | lcd_init(); |
tomonari | 1:4dfe0d37c606 | 113 | setContrast(30); |
tomonari | 1:4dfe0d37c606 | 114 | lcd_setCursor(0, 0); |
tomonari | 1:4dfe0d37c606 | 115 | lcd_printStr("pre"); |
tomonari | 1:4dfe0d37c606 | 116 | lcd_setCursor(0, 1); |
tomonari | 1:4dfe0d37c606 | 117 | lcd_printStr("TEST02"); |
tomonari | 1:4dfe0d37c606 | 118 | |
tomonari | 1:4dfe0d37c606 | 119 | while(1){ |
tomonari | 1:4dfe0d37c606 | 120 | |
tomonari | 1:4dfe0d37c606 | 121 | if(xbee.readable()==0){ // serial in falt |
tomonari | 1:4dfe0d37c606 | 122 | |
tomonari | 1:4dfe0d37c606 | 123 | |
tomonari | 1:4dfe0d37c606 | 124 | } |
tomonari | 1:4dfe0d37c606 | 125 | |
tomonari | 1:4dfe0d37c606 | 126 | if(xbee.readable()==1){ // serial in true |
tomonari | 1:4dfe0d37c606 | 127 | |
tomonari | 1:4dfe0d37c606 | 128 | //old program |
tomonari | 1:4dfe0d37c606 | 129 | |
tomonari | 1:4dfe0d37c606 | 130 | while(xbee.getc()!='$'); //form can-sat |
tomonari | 1:4dfe0d37c606 | 131 | |
tomonari | 1:4dfe0d37c606 | 132 | //d=xbee.getc(); |
tomonari | 1:4dfe0d37c606 | 133 | pre=0; |
tomonari | 1:4dfe0d37c606 | 134 | |
tomonari | 1:4dfe0d37c606 | 135 | while((c[pre]=xbee.getc())!='#'){ |
tomonari | 1:4dfe0d37c606 | 136 | printf("%c",c[pre]); |
tomonari | 1:4dfe0d37c606 | 137 | pre++; |
tomonari | 1:4dfe0d37c606 | 138 | } |
tomonari | 1:4dfe0d37c606 | 139 | printf("\n"); |
tomonari | 1:4dfe0d37c606 | 140 | pre=0; |
tomonari | 1:4dfe0d37c606 | 141 | while((g[pre]=xbee.getc())!='@'){ |
tomonari | 1:4dfe0d37c606 | 142 | printf("%c",g[pre]); |
tomonari | 1:4dfe0d37c606 | 143 | pre++; |
tomonari | 1:4dfe0d37c606 | 144 | } |
tomonari | 1:4dfe0d37c606 | 145 | printf("\n"); |
tomonari | 1:4dfe0d37c606 | 146 | pre=0; |
tomonari | 1:4dfe0d37c606 | 147 | while((u[pre]=xbee.getc())!='\n'){ |
tomonari | 1:4dfe0d37c606 | 148 | printf("%c",u[pre]); |
tomonari | 1:4dfe0d37c606 | 149 | pre++; |
tomonari | 1:4dfe0d37c606 | 150 | } |
tomonari | 1:4dfe0d37c606 | 151 | printf("\n"); |
tomonari | 1:4dfe0d37c606 | 152 | |
tomonari | 1:4dfe0d37c606 | 153 | //c[pre]='\0'; |
tomonari | 1:4dfe0d37c606 | 154 | |
tomonari | 1:4dfe0d37c606 | 155 | /* if(d=='p'){ |
tomonari | 1:4dfe0d37c606 | 156 | sscanf(c,"%d",&kiatu); |
tomonari | 1:4dfe0d37c606 | 157 | goukei=goukei+kiatu; |
tomonari | 1:4dfe0d37c606 | 158 | goukei2=goukei2+pre2; |
tomonari | 1:4dfe0d37c606 | 159 | j++; |
tomonari | 1:4dfe0d37c606 | 160 | } |
tomonari | 1:4dfe0d37c606 | 161 | |
tomonari | 1:4dfe0d37c606 | 162 | printf("%d\n",j); |
tomonari | 1:4dfe0d37c606 | 163 | |
tomonari | 1:4dfe0d37c606 | 164 | if(d=='v'){ |
tomonari | 1:4dfe0d37c606 | 165 | sscanf(c,"%f",&den); |
tomonari | 1:4dfe0d37c606 | 166 | } |
tomonari | 1:4dfe0d37c606 | 167 | |
tomonari | 1:4dfe0d37c606 | 168 | if(d=='m'){ |
tomonari | 1:4dfe0d37c606 | 169 | strcpy(sta,c); |
tomonari | 1:4dfe0d37c606 | 170 | |
tomonari | 1:4dfe0d37c606 | 171 | } |
tomonari | 1:4dfe0d37c606 | 172 | |
tomonari | 1:4dfe0d37c606 | 173 | vol=den*3.3+(den*3.3*2/3); |
tomonari | 1:4dfe0d37c606 | 174 | |
tomonari | 1:4dfe0d37c606 | 175 | //printf("%s \n",sta); |
tomonari | 1:4dfe0d37c606 | 176 | |
tomonari | 1:4dfe0d37c606 | 177 | |
tomonari | 1:4dfe0d37c606 | 178 | if(j==5){ |
tomonari | 1:4dfe0d37c606 | 179 | heikin=goukei/5; |
tomonari | 1:4dfe0d37c606 | 180 | heikin2=goukei2/5; |
tomonari | 1:4dfe0d37c606 | 181 | high1=(heikin-gosa)/heikin2; |
tomonari | 1:4dfe0d37c606 | 182 | high0=pow(high1,0.1902); |
tomonari | 1:4dfe0d37c606 | 183 | high=153.8*(tmp2+273.2)*(1.0-high0); |
tomonari | 1:4dfe0d37c606 | 184 | |
tomonari | 1:4dfe0d37c606 | 185 | printf("H=%lu\n",high); |
tomonari | 1:4dfe0d37c606 | 186 | |
tomonari | 1:4dfe0d37c606 | 187 | j=0; |
tomonari | 1:4dfe0d37c606 | 188 | goukei=0; |
tomonari | 1:4dfe0d37c606 | 189 | goukei2=0; |
tomonari | 1:4dfe0d37c606 | 190 | |
tomonari | 1:4dfe0d37c606 | 191 | }*/ |
tomonari | 1:4dfe0d37c606 | 192 | |
tomonari | 1:4dfe0d37c606 | 193 | |
tomonari | 1:4dfe0d37c606 | 194 | c[0]='\0'; |
tomonari | 1:4dfe0d37c606 | 195 | |
tomonari | 1:4dfe0d37c606 | 196 | //if(sky.readable()==0){ |
tomonari | 1:4dfe0d37c606 | 197 | |
tomonari | 1:4dfe0d37c606 | 198 | // } |
tomonari | 1:4dfe0d37c606 | 199 | |
tomonari | 1:4dfe0d37c606 | 200 | } |
tomonari | 1:4dfe0d37c606 | 201 | |
tomonari | 1:4dfe0d37c606 | 202 | /* myled4=1; |
tomonari | 1:4dfe0d37c606 | 203 | a=xbee.getc(); |
tomonari | 1:4dfe0d37c606 | 204 | printf("XBEE=%c\n",a); |
tomonari | 1:4dfe0d37c606 | 205 | wait(0.2); |
tomonari | 1:4dfe0d37c606 | 206 | myled4=0; |
tomonari | 1:4dfe0d37c606 | 207 | wait(0.2); |
tomonari | 1:4dfe0d37c606 | 208 | } */ |
tomonari | 1:4dfe0d37c606 | 209 | |
tomonari | 1:4dfe0d37c606 | 210 | /* FILE *fp = fopen("/sd/pre.csv", "a"); |
tomonari | 1:4dfe0d37c606 | 211 | fprintf(fp,"%d\n",scp1000.readPressure()); |
tomonari | 1:4dfe0d37c606 | 212 | fclose(fp);*/ |
tomonari | 1:4dfe0d37c606 | 213 | |
tomonari | 1:4dfe0d37c606 | 214 | } |
tomonari | 1:4dfe0d37c606 | 215 | } |