cansat

Dependencies:   FatFileSystem SCP1000 mbed

Fork of SDHCFileSystem by Klaus Bu

Committer:
tomonari
Date:
Fri Jul 04 10:33:20 2014 +0000
Revision:
1:4dfe0d37c606
Parent:
0:90601632692f
cansat

Who changed what in which revision?

UserRevisionLine numberNew 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 }