メインとgpsの合体版。試験運用。
Dependencies: HMC5883L SDFileSystem TextOLED mbed
Fork of 2bk0123_GPS_Test05 by
main.cpp@3:0a4a3d9ca7d4, 2018-02-15 (annotated)
- Committer:
- basyo38
- Date:
- Thu Feb 15 05:05:28 2018 +0000
- Revision:
- 3:0a4a3d9ca7d4
- Parent:
- 2:9f8fa9035357
2018/2/15???
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
takeuchi | 0:f3ff53b5b707 | 1 | //GPS GT-720F Test05 |
basyo38 | 2:9f8fa9035357 | 2 | |
basyo38 | 2:9f8fa9035357 | 3 | |
takeuchi | 0:f3ff53b5b707 | 4 | #include "mbed.h" |
basyo38 | 2:9f8fa9035357 | 5 | #include "TextOLED.h" |
basyo38 | 2:9f8fa9035357 | 6 | #include "SDFileSystem.h" |
basyo38 | 2:9f8fa9035357 | 7 | #include "stdio.h" |
Joeatsumi | 1:04787f83fac1 | 8 | |
takeuchi | 0:f3ff53b5b707 | 9 | |
takeuchi | 0:f3ff53b5b707 | 10 | #define ON 1 |
takeuchi | 0:f3ff53b5b707 | 11 | #define OFF 0 |
basyo38 | 2:9f8fa9035357 | 12 | |
basyo38 | 2:9f8fa9035357 | 13 | |
basyo38 | 2:9f8fa9035357 | 14 | AnalogIn alt(p20); //高度計読み取り |
basyo38 | 2:9f8fa9035357 | 15 | InterruptIn speedcount(p17); //機速用のフォトインタラプタ読み取り |
basyo38 | 2:9f8fa9035357 | 16 | InterruptIn rpmcount(p21); //回転数用のフォトインタラプタ読み取り |
basyo38 | 2:9f8fa9035357 | 17 | InterruptIn Log_Switch(p26);//ログスイッチ読み取り |
basyo38 | 2:9f8fa9035357 | 18 | |
basyo38 | 2:9f8fa9035357 | 19 | |
basyo38 | 2:9f8fa9035357 | 20 | Serial pc(USBTX, USBRX); |
basyo38 | 2:9f8fa9035357 | 21 | Serial control_com(p28, p27);//制御基板との通信用 |
basyo38 | 2:9f8fa9035357 | 22 | Serial android_com(p9, p10); //Androidとの通信用txrx!! |
basyo38 | 2:9f8fa9035357 | 23 | |
basyo38 | 2:9f8fa9035357 | 24 | Serial gps(p13,p14);// tx, rx |
basyo38 | 2:9f8fa9035357 | 25 | |
basyo38 | 2:9f8fa9035357 | 26 | TextOLED pilot_oled(p11, p12 ,p30 ,p29 ,p15, p16); // RS, E, DB4, DB5, DB6, DB7 有機EL!! |
basyo38 | 2:9f8fa9035357 | 27 | SDFileSystem sd(p5, p6, p7, p8, "sd");//SDpinの番号 3,7,5,2 //1pin--Vout,4pin--Vout,6pin--GND,8pin--Vout |
basyo38 | 2:9f8fa9035357 | 28 | |
basyo38 | 2:9f8fa9035357 | 29 | |
basyo38 | 2:9f8fa9035357 | 30 | DigitalOut led1(LED1); |
basyo38 | 2:9f8fa9035357 | 31 | DigitalOut led2(LED2); |
basyo38 | 2:9f8fa9035357 | 32 | DigitalOut led3(LED3); |
basyo38 | 2:9f8fa9035357 | 33 | DigitalOut led4(LED4); |
basyo38 | 2:9f8fa9035357 | 34 | |
basyo38 | 2:9f8fa9035357 | 35 | |
basyo38 | 2:9f8fa9035357 | 36 | //音システム用 |
basyo38 | 2:9f8fa9035357 | 37 | DigitalOut soundsystem1(p19); |
basyo38 | 2:9f8fa9035357 | 38 | DigitalOut soundsystem2(p24); |
basyo38 | 2:9f8fa9035357 | 39 | DigitalOut soundsystem3(p25); |
basyo38 | 2:9f8fa9035357 | 40 | |
basyo38 | 2:9f8fa9035357 | 41 | DigitalOut option(p22);//toGPS and jailo |
basyo38 | 2:9f8fa9035357 | 42 | |
basyo38 | 2:9f8fa9035357 | 43 | |
basyo38 | 2:9f8fa9035357 | 44 | //タイマー割り込み宣言 |
basyo38 | 2:9f8fa9035357 | 45 | Ticker ticker;//updateのタイマー割り込み |
basyo38 | 2:9f8fa9035357 | 46 | Timer t,t1; |
basyo38 | 2:9f8fa9035357 | 47 | |
basyo38 | 2:9f8fa9035357 | 48 | int speedcounter = 0, rpmcounter = 0, min = 0, sec = 0, i; |
basyo38 | 2:9f8fa9035357 | 49 | int oldspeed = 0, oldrpm = 0; |
basyo38 | 2:9f8fa9035357 | 50 | int log_count = 0; |
basyo38 | 2:9f8fa9035357 | 51 | int SD_count = 0; |
basyo38 | 2:9f8fa9035357 | 52 | int up2=0,up1=0,down1=0,down2=0,E_neut=0; |
basyo38 | 2:9f8fa9035357 | 53 | int left1=0,left2=0,right1=0,right2=0,R_neut=0; |
basyo38 | 2:9f8fa9035357 | 54 | int send_compass=0; |
basyo38 | 2:9f8fa9035357 | 55 | |
basyo38 | 2:9f8fa9035357 | 56 | |
basyo38 | 2:9f8fa9035357 | 57 | double time_s = 0,time_ms=0,time1=0,time2=0, speed = 0, rpm = 0, height = 0,compass = 0; |
basyo38 | 2:9f8fa9035357 | 58 | |
basyo38 | 2:9f8fa9035357 | 59 | char ele; |
basyo38 | 2:9f8fa9035357 | 60 | char rud; |
basyo38 | 2:9f8fa9035357 | 61 | char e_trim='e',r_trim='r'; |
basyo38 | 2:9f8fa9035357 | 62 | char compass_array[4] = "000"; |
basyo38 | 2:9f8fa9035357 | 63 | char data; |
basyo38 | 2:9f8fa9035357 | 64 | char send_buff1[24]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; |
basyo38 | 2:9f8fa9035357 | 65 | |
basyo38 | 2:9f8fa9035357 | 66 | |
basyo38 | 2:9f8fa9035357 | 67 | unsigned char Log_flag = OFF; |
basyo38 | 2:9f8fa9035357 | 68 | unsigned char SD_flag = OFF; |
basyo38 | 2:9f8fa9035357 | 69 | |
basyo38 | 2:9f8fa9035357 | 70 | |
basyo38 | 2:9f8fa9035357 | 71 | |
basyo38 | 2:9f8fa9035357 | 72 | //プロトタイプ宣言 |
basyo38 | 2:9f8fa9035357 | 73 | //void init(); |
basyo38 | 2:9f8fa9035357 | 74 | //void myled(int a,int b,int c,int d); |
basyo38 | 2:9f8fa9035357 | 75 | void SD_log(); |
basyo38 | 2:9f8fa9035357 | 76 | void OLEDdisplay_print(); |
basyo38 | 2:9f8fa9035357 | 77 | void spd_f(); |
basyo38 | 2:9f8fa9035357 | 78 | void rpm_f(); |
basyo38 | 2:9f8fa9035357 | 79 | void spd_c(); |
basyo38 | 2:9f8fa9035357 | 80 | void rpm_c(); |
basyo38 | 2:9f8fa9035357 | 81 | void control_communication(); |
basyo38 | 2:9f8fa9035357 | 82 | void android_communication(); |
basyo38 | 2:9f8fa9035357 | 83 | void update(); |
basyo38 | 2:9f8fa9035357 | 84 | void altitude_f(); |
basyo38 | 2:9f8fa9035357 | 85 | void compass_f(); |
basyo38 | 2:9f8fa9035357 | 86 | void Log_Switch_f(); |
basyo38 | 2:9f8fa9035357 | 87 | void CGRAM_1(); |
basyo38 | 2:9f8fa9035357 | 88 | void CGRAM_2(); |
basyo38 | 2:9f8fa9035357 | 89 | void CGRAM_3(); |
basyo38 | 2:9f8fa9035357 | 90 | void CGRAM_4(); |
basyo38 | 2:9f8fa9035357 | 91 | void CGRAM_5(); |
basyo38 | 2:9f8fa9035357 | 92 | |
basyo38 | 2:9f8fa9035357 | 93 | |
basyo38 | 2:9f8fa9035357 | 94 | //=======================================================================// |
basyo38 | 2:9f8fa9035357 | 95 | |
basyo38 | 2:9f8fa9035357 | 96 | |
Joeatsumi | 1:04787f83fac1 | 97 | |
Joeatsumi | 1:04787f83fac1 | 98 | LocalFileSystem local("local"); |
takeuchi | 0:f3ff53b5b707 | 99 | |
Joeatsumi | 1:04787f83fac1 | 100 | |
Joeatsumi | 1:04787f83fac1 | 101 | FILE *fp; |
takeuchi | 0:f3ff53b5b707 | 102 | |
takeuchi | 0:f3ff53b5b707 | 103 | int main() { |
takeuchi | 0:f3ff53b5b707 | 104 | |
takeuchi | 0:f3ff53b5b707 | 105 | char c; |
basyo38 | 2:9f8fa9035357 | 106 | int i3,rlock,stn; |
takeuchi | 0:f3ff53b5b707 | 107 | char gps_data[256]; |
takeuchi | 0:f3ff53b5b707 | 108 | char ns,ew; |
takeuchi | 0:f3ff53b5b707 | 109 | float time,hokui,tokei; |
takeuchi | 0:f3ff53b5b707 | 110 | float g_hokui,g_tokei; |
takeuchi | 0:f3ff53b5b707 | 111 | float d_hokui,m_hokui,d_tokei,m_tokei; |
Joeatsumi | 1:04787f83fac1 | 112 | |
Joeatsumi | 1:04787f83fac1 | 113 | int h_time=0,m_time=0,s_time=0; |
Joeatsumi | 1:04787f83fac1 | 114 | |
basyo38 | 2:9f8fa9035357 | 115 | //mkdir("/sd/gps_data", 0777);//まずsdのフォルダをつくる。 |
Joeatsumi | 1:04787f83fac1 | 116 | |
takeuchi | 0:f3ff53b5b707 | 117 | gps.baud(9600); |
takeuchi | 0:f3ff53b5b707 | 118 | |
basyo38 | 2:9f8fa9035357 | 119 | pc.printf("Start TBT!!\n"); |
basyo38 | 2:9f8fa9035357 | 120 | |
basyo38 | 2:9f8fa9035357 | 121 | led1=1; |
basyo38 | 2:9f8fa9035357 | 122 | led2=1; |
basyo38 | 2:9f8fa9035357 | 123 | led3=1; |
basyo38 | 2:9f8fa9035357 | 124 | led4=1; |
basyo38 | 2:9f8fa9035357 | 125 | wait(0.01); |
basyo38 | 2:9f8fa9035357 | 126 | pilot_oled.cls(); |
basyo38 | 2:9f8fa9035357 | 127 | wait(0.001); |
basyo38 | 2:9f8fa9035357 | 128 | CGRAM_1(); |
basyo38 | 2:9f8fa9035357 | 129 | CGRAM_2(); |
basyo38 | 2:9f8fa9035357 | 130 | CGRAM_3(); |
basyo38 | 2:9f8fa9035357 | 131 | CGRAM_4(); |
basyo38 | 2:9f8fa9035357 | 132 | CGRAM_5(); |
basyo38 | 2:9f8fa9035357 | 133 | // myled(1,1,0,0); |
basyo38 | 2:9f8fa9035357 | 134 | wait(2); |
basyo38 | 2:9f8fa9035357 | 135 | mkdir("/sd/mydir", 0777); |
basyo38 | 2:9f8fa9035357 | 136 | android_com.baud(115200); |
basyo38 | 2:9f8fa9035357 | 137 | android_com.format(8,Serial::None,1); |
basyo38 | 2:9f8fa9035357 | 138 | |
basyo38 | 2:9f8fa9035357 | 139 | control_com.attach(control_communication, Serial::RxIrq); |
basyo38 | 2:9f8fa9035357 | 140 | control_com.baud(115200); |
basyo38 | 2:9f8fa9035357 | 141 | |
basyo38 | 2:9f8fa9035357 | 142 | t.start(); |
basyo38 | 2:9f8fa9035357 | 143 | t1.start(); |
basyo38 | 2:9f8fa9035357 | 144 | |
basyo38 | 2:9f8fa9035357 | 145 | Log_Switch.rise(&Log_Switch_f); |
basyo38 | 2:9f8fa9035357 | 146 | speedcount.rise(&spd_c); |
basyo38 | 2:9f8fa9035357 | 147 | rpmcount.rise(&rpm_c); |
basyo38 | 2:9f8fa9035357 | 148 | ticker.attach(update,1);//1s更新 |
basyo38 | 2:9f8fa9035357 | 149 | //time1 = t1.read_ms(); |
basyo38 | 2:9f8fa9035357 | 150 | |
basyo38 | 2:9f8fa9035357 | 151 | |
basyo38 | 2:9f8fa9035357 | 152 | |
takeuchi | 0:f3ff53b5b707 | 153 | while (1) { |
basyo38 | 2:9f8fa9035357 | 154 | |
basyo38 | 2:9f8fa9035357 | 155 | |
basyo38 | 2:9f8fa9035357 | 156 | // pc.printf("There is TBT!!\n"); |
basyo38 | 2:9f8fa9035357 | 157 | led3=!led3; |
basyo38 | 2:9f8fa9035357 | 158 | if(min >=30) { //30分経過時、タイマーリセット |
basyo38 | 2:9f8fa9035357 | 159 | t.reset(); |
basyo38 | 2:9f8fa9035357 | 160 | } |
basyo38 | 2:9f8fa9035357 | 161 | if(Log_flag == OFF) { //log取るごとにリセット |
basyo38 | 2:9f8fa9035357 | 162 | t.stop(); |
basyo38 | 2:9f8fa9035357 | 163 | t.reset(); |
basyo38 | 2:9f8fa9035357 | 164 | } else { |
basyo38 | 2:9f8fa9035357 | 165 | t.start(); |
basyo38 | 2:9f8fa9035357 | 166 | } |
basyo38 | 2:9f8fa9035357 | 167 | time_s = t.read();//時間取得 |
basyo38 | 2:9f8fa9035357 | 168 | min = (int)(time_s) / 60; |
basyo38 | 2:9f8fa9035357 | 169 | sec = (int)time_s % 60; |
basyo38 | 2:9f8fa9035357 | 170 | wait(0.0002); |
basyo38 | 2:9f8fa9035357 | 171 | |
basyo38 | 2:9f8fa9035357 | 172 | |
basyo38 | 2:9f8fa9035357 | 173 | i3=0; |
takeuchi | 0:f3ff53b5b707 | 174 | while(gps.getc()!='$'){ |
takeuchi | 0:f3ff53b5b707 | 175 | } |
takeuchi | 0:f3ff53b5b707 | 176 | |
basyo38 | 2:9f8fa9035357 | 177 | while( (gps_data[i3]=gps.getc()) != '\r'){ |
basyo38 | 2:9f8fa9035357 | 178 | i3++; |
basyo38 | 2:9f8fa9035357 | 179 | if(i3==256){ |
Joeatsumi | 1:04787f83fac1 | 180 | |
basyo38 | 2:9f8fa9035357 | 181 | i3=255; |
takeuchi | 0:f3ff53b5b707 | 182 | break; |
takeuchi | 0:f3ff53b5b707 | 183 | } |
takeuchi | 0:f3ff53b5b707 | 184 | } |
basyo38 | 2:9f8fa9035357 | 185 | gps_data[i3]='\0'; |
takeuchi | 0:f3ff53b5b707 | 186 | |
takeuchi | 0:f3ff53b5b707 | 187 | //test |
takeuchi | 0:f3ff53b5b707 | 188 | /* Test data |
takeuchi | 0:f3ff53b5b707 | 189 | rlock=1; |
takeuchi | 0:f3ff53b5b707 | 190 | hokui=3532.25024; //=>35.537502 |
takeuchi | 0:f3ff53b5b707 | 191 | tokei=13751.86820;//=>137.864471 |
takeuchi | 0:f3ff53b5b707 | 192 | */ |
takeuchi | 0:f3ff53b5b707 | 193 | if( sscanf(gps_data, "GPGGA,%f,%f,%c,%f,%c,%d,%d",&time,&hokui,&ns,&tokei,&ew,&rlock,&stn) >= 1){ |
takeuchi | 0:f3ff53b5b707 | 194 | if(rlock >= 1){ |
Joeatsumi | 1:04787f83fac1 | 195 | |
Joeatsumi | 1:04787f83fac1 | 196 | //time set |
Joeatsumi | 1:04787f83fac1 | 197 | h_time=int(time/10000); |
Joeatsumi | 1:04787f83fac1 | 198 | m_time=int((time-h_time*10000)/100); |
Joeatsumi | 1:04787f83fac1 | 199 | s_time=int(time-h_time*10000-m_time*100); |
Joeatsumi | 1:04787f83fac1 | 200 | h_time=h_time+9;//UTC =>JST |
Joeatsumi | 1:04787f83fac1 | 201 | |
takeuchi | 0:f3ff53b5b707 | 202 | //hokui |
takeuchi | 0:f3ff53b5b707 | 203 | d_hokui=int(hokui/100); |
takeuchi | 0:f3ff53b5b707 | 204 | m_hokui=(hokui-d_hokui*100)/60; |
takeuchi | 0:f3ff53b5b707 | 205 | g_hokui=d_hokui+m_hokui; |
takeuchi | 0:f3ff53b5b707 | 206 | //tokei |
takeuchi | 0:f3ff53b5b707 | 207 | d_tokei=int(tokei/100); |
takeuchi | 0:f3ff53b5b707 | 208 | m_tokei=(tokei-d_tokei*100)/60; |
takeuchi | 0:f3ff53b5b707 | 209 | g_tokei=d_tokei+m_tokei; |
takeuchi | 0:f3ff53b5b707 | 210 | //g_hokui=int(hokui/100)+(hokui-int(hokui/100))/60; |
takeuchi | 0:f3ff53b5b707 | 211 | //g_tokei=int(tokei/100)+(tokei-int(tokei/100))/60; |
Joeatsumi | 1:04787f83fac1 | 212 | |
takeuchi | 0:f3ff53b5b707 | 213 | |
Joeatsumi | 1:04787f83fac1 | 214 | //==================================================// |
Joeatsumi | 1:04787f83fac1 | 215 | |
Joeatsumi | 1:04787f83fac1 | 216 | pc.printf("%2d,%2d,%2d,%4.6f,,%3.6f,\r\n",h_time,m_time,s_time,g_tokei,g_hokui); |
Joeatsumi | 1:04787f83fac1 | 217 | |
basyo38 | 2:9f8fa9035357 | 218 | // fp = fopen("/sd/gps_data/log.txt", "a"); |
Joeatsumi | 1:04787f83fac1 | 219 | |
Joeatsumi | 1:04787f83fac1 | 220 | // fprintf(fp,"%2d,%2d,%2d,%4.6f,,%3.6f,\r\n",h_time,m_time,s_time,g_tokei,g_hokui); |
basyo38 | 2:9f8fa9035357 | 221 | // fprintf(fp,"%4.6f,%3.6f,\r\n",g_tokei,g_hokui); |
basyo38 | 2:9f8fa9035357 | 222 | // fclose(fp); |
Joeatsumi | 1:04787f83fac1 | 223 | |
Joeatsumi | 1:04787f83fac1 | 224 | //==================================================// |
Joeatsumi | 1:04787f83fac1 | 225 | |
Joeatsumi | 1:04787f83fac1 | 226 | |
Joeatsumi | 1:04787f83fac1 | 227 | |
Joeatsumi | 1:04787f83fac1 | 228 | //} |
takeuchi | 0:f3ff53b5b707 | 229 | } |
takeuchi | 0:f3ff53b5b707 | 230 | }//if |
takeuchi | 0:f3ff53b5b707 | 231 | }//while |
takeuchi | 0:f3ff53b5b707 | 232 | }//main |
takeuchi | 0:f3ff53b5b707 | 233 | |
takeuchi | 0:f3ff53b5b707 | 234 | |
basyo38 | 2:9f8fa9035357 | 235 | void SD_log() //SDログ関数 |
basyo38 | 2:9f8fa9035357 | 236 | { |
basyo38 | 2:9f8fa9035357 | 237 | // __disable_irq(); |
basyo38 | 2:9f8fa9035357 | 238 | led2 = 1; |
basyo38 | 2:9f8fa9035357 | 239 | if (Log_flag == ON) { |
basyo38 | 2:9f8fa9035357 | 240 | FILE *fp; |
basyo38 | 2:9f8fa9035357 | 241 | /* |
basyo38 | 2:9f8fa9035357 | 242 | fp = fopen("/sd/log.txt", "a"); |
basyo38 | 2:9f8fa9035357 | 243 | |
basyo38 | 2:9f8fa9035357 | 244 | fprintf(fp,"%2d,%2d,%2d,%4.6f,,%3.6f,\r\n",h_time,m_time,s_time,g_tokei,g_hokui); |
basyo38 | 2:9f8fa9035357 | 245 | fprintf(fp,"%4.6f,%3.6f,\r\n",g_tokei,g_hokui); |
basyo38 | 2:9f8fa9035357 | 246 | fclose(fp); |
basyo38 | 2:9f8fa9035357 | 247 | */ |
basyo38 | 2:9f8fa9035357 | 248 | |
basyo38 | 2:9f8fa9035357 | 249 | fp = fopen("/sd/mydir/TP.txt", "a"); |
basyo38 | 2:9f8fa9035357 | 250 | |
basyo38 | 2:9f8fa9035357 | 251 | if (NULL == fp) { |
basyo38 | 2:9f8fa9035357 | 252 | pilot_oled.locate(0, 0); |
basyo38 | 2:9f8fa9035357 | 253 | pilot_oled.printf("There is no SD!!"); |
basyo38 | 2:9f8fa9035357 | 254 | pc.printf("There is no SD!!\n"); |
basyo38 | 2:9f8fa9035357 | 255 | error("Could not open file for write \n"); |
basyo38 | 2:9f8fa9035357 | 256 | } else { |
basyo38 | 2:9f8fa9035357 | 257 | fprintf(fp, "NO:%d,%02d:%02d,%1.0f,%0.3f,%0.3f,%0.3f,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d", |
basyo38 | 2:9f8fa9035357 | 258 | SD_count, min, sec, rpm, speed, height,compass,up2,up1,E_neut,down1,down2,left2,left1,R_neut,right1,right2); |
basyo38 | 2:9f8fa9035357 | 259 | // fprintf(fp,"%4.6f,;%3.6f,;\r\n",g_tokei,g_hokui); |
basyo38 | 2:9f8fa9035357 | 260 | fclose(fp); |
basyo38 | 2:9f8fa9035357 | 261 | //操舵データ |
basyo38 | 2:9f8fa9035357 | 262 | } |
basyo38 | 2:9f8fa9035357 | 263 | } |
basyo38 | 2:9f8fa9035357 | 264 | led2 = 0; |
basyo38 | 2:9f8fa9035357 | 265 | // __enable_irq(); |
basyo38 | 2:9f8fa9035357 | 266 | } |
takeuchi | 0:f3ff53b5b707 | 267 | |
basyo38 | 2:9f8fa9035357 | 268 | void Log_Switch_f()//ログスイッチ |
basyo38 | 2:9f8fa9035357 | 269 | { |
basyo38 | 2:9f8fa9035357 | 270 | log_count++; |
basyo38 | 2:9f8fa9035357 | 271 | if (log_count == 1) { |
basyo38 | 2:9f8fa9035357 | 272 | Log_flag = ON; |
basyo38 | 2:9f8fa9035357 | 273 | SD_count++; |
basyo38 | 2:9f8fa9035357 | 274 | } else if (log_count == 2) { |
basyo38 | 2:9f8fa9035357 | 275 | Log_flag = OFF; |
basyo38 | 2:9f8fa9035357 | 276 | log_count = 0; |
basyo38 | 2:9f8fa9035357 | 277 | } |
basyo38 | 2:9f8fa9035357 | 278 | } |
basyo38 | 2:9f8fa9035357 | 279 | |
basyo38 | 2:9f8fa9035357 | 280 | void OLEDdisplay_print() //有機EL表示用関数 |
basyo38 | 2:9f8fa9035357 | 281 | { |
basyo38 | 2:9f8fa9035357 | 282 | led3!=led3; |
basyo38 | 2:9f8fa9035357 | 283 | //__disable_irq(); |
basyo38 | 2:9f8fa9035357 | 284 | /* if(Log_flag == OFF) { |
basyo38 | 2:9f8fa9035357 | 285 | wait_ms(0.7); |
basyo38 | 2:9f8fa9035357 | 286 | pilot_oled.locate(0, 0); |
basyo38 | 2:9f8fa9035357 | 287 | pilot_oled.printf("log");//時間表示 |
basyo38 | 2:9f8fa9035357 | 288 | pilot_oled.locate(3, 0); |
basyo38 | 2:9f8fa9035357 | 289 | pilot_oled.putc(0xB5);//オ |
basyo38 | 2:9f8fa9035357 | 290 | pilot_oled.locate(4, 0); |
basyo38 | 2:9f8fa9035357 | 291 | pilot_oled.putc(0xBE);//セ |
basyo38 | 2:9f8fa9035357 | 292 | pilot_oled.locate(5, 0); |
basyo38 | 2:9f8fa9035357 | 293 | pilot_oled.putc(0x21);//! |
basyo38 | 2:9f8fa9035357 | 294 | } else { |
basyo38 | 2:9f8fa9035357 | 295 | pilot_oled.locate(0, 0); |
basyo38 | 2:9f8fa9035357 | 296 | pilot_oled.printf("%02d:%02d ", min, sec);//時間表示 |
basyo38 | 2:9f8fa9035357 | 297 | } |
basyo38 | 2:9f8fa9035357 | 298 | wait_ms(0.7);*/ |
basyo38 | 2:9f8fa9035357 | 299 | pilot_oled.locate(0, 1); |
basyo38 | 2:9f8fa9035357 | 300 | pilot_oled.printf("r%3.0f s%4.1f h%4.1f", rpm,speed,height);//センサーの値 |
basyo38 | 2:9f8fa9035357 | 301 | wait_ms(0.7); |
basyo38 | 2:9f8fa9035357 | 302 | |
basyo38 | 2:9f8fa9035357 | 303 | pilot_oled.locate(4, 0); |
basyo38 | 2:9f8fa9035357 | 304 | pilot_oled.printf("%1d", send_compass); |
basyo38 | 2:9f8fa9035357 | 305 | pilot_oled.locate(11, 0); |
basyo38 | 2:9f8fa9035357 | 306 | if (Log_flag == ON) pilot_oled.printf("ON "); |
basyo38 | 2:9f8fa9035357 | 307 | else pilot_oled.printf("OFF"); |
basyo38 | 2:9f8fa9035357 | 308 | |
basyo38 | 2:9f8fa9035357 | 309 | // pilot_oled.locate(0, 0); |
basyo38 | 2:9f8fa9035357 | 310 | // pilot_oled.printf("count:%d",rpmcounter);//時間表示 |
basyo38 | 2:9f8fa9035357 | 311 | wait_ms(0.7); |
basyo38 | 2:9f8fa9035357 | 312 | // __enable_irq(); |
basyo38 | 2:9f8fa9035357 | 313 | } |
basyo38 | 2:9f8fa9035357 | 314 | |
basyo38 | 2:9f8fa9035357 | 315 | void compass_f()//高度の変換 |
basyo38 | 2:9f8fa9035357 | 316 | { |
basyo38 | 2:9f8fa9035357 | 317 | compass=atoi(compass_array); |
basyo38 | 2:9f8fa9035357 | 318 | |
basyo38 | 2:9f8fa9035357 | 319 | if(compass<22.5&&compass>=0||compass<360&&compass>=337.5)send_compass=1;//北 |
basyo38 | 2:9f8fa9035357 | 320 | else if(compass<67.5&&compass>=22.5)send_compass=2;// |
basyo38 | 2:9f8fa9035357 | 321 | else if(compass<112.5&&compass>=67.5)send_compass=3;//東 |
basyo38 | 2:9f8fa9035357 | 322 | else if(compass<157.5&&compass>=112.5)send_compass=4;// |
basyo38 | 2:9f8fa9035357 | 323 | else if(compass<202.5&&compass>=157.5)send_compass=5;//南 |
basyo38 | 2:9f8fa9035357 | 324 | else if(compass<247.5&&compass>=202.5)send_compass=6;// |
basyo38 | 2:9f8fa9035357 | 325 | else if(compass<292.5&&compass>=247.5)send_compass=7;//西 |
basyo38 | 2:9f8fa9035357 | 326 | else if(compass<337.5&&compass>=292.5)send_compass=8;// |
basyo38 | 2:9f8fa9035357 | 327 | |
basyo38 | 2:9f8fa9035357 | 328 | |
basyo38 | 2:9f8fa9035357 | 329 | |
basyo38 | 2:9f8fa9035357 | 330 | } |
basyo38 | 2:9f8fa9035357 | 331 | |
basyo38 | 2:9f8fa9035357 | 332 | void altitude_f()//高度の変換 |
basyo38 | 2:9f8fa9035357 | 333 | { |
basyo38 | 2:9f8fa9035357 | 334 | height=alt.read()*3.3*1000/1.6/100; |
basyo38 | 2:9f8fa9035357 | 335 | } |
basyo38 | 2:9f8fa9035357 | 336 | |
basyo38 | 2:9f8fa9035357 | 337 | void rpm_c() //回転数のフォトインタラプタ |
basyo38 | 2:9f8fa9035357 | 338 | { |
basyo38 | 2:9f8fa9035357 | 339 | rpmcounter++; |
basyo38 | 2:9f8fa9035357 | 340 | } |
basyo38 | 2:9f8fa9035357 | 341 | |
basyo38 | 2:9f8fa9035357 | 342 | void rpm_f() //回転数計測 |
basyo38 | 2:9f8fa9035357 | 343 | { |
basyo38 | 2:9f8fa9035357 | 344 | // rpm = (double)(rpmcounter * 60000/time_ms/48); |
basyo38 | 2:9f8fa9035357 | 345 | rpm=(double)(rpmcounter); |
basyo38 | 2:9f8fa9035357 | 346 | rpmcounter = 0; |
basyo38 | 2:9f8fa9035357 | 347 | } |
basyo38 | 2:9f8fa9035357 | 348 | |
basyo38 | 2:9f8fa9035357 | 349 | void spd_c() //機速のフォトインタラプタ |
basyo38 | 2:9f8fa9035357 | 350 | { |
basyo38 | 2:9f8fa9035357 | 351 | speedcounter++; |
basyo38 | 2:9f8fa9035357 | 352 | } |
basyo38 | 2:9f8fa9035357 | 353 | |
basyo38 | 2:9f8fa9035357 | 354 | void spd_f() |
basyo38 | 2:9f8fa9035357 | 355 | { |
basyo38 | 2:9f8fa9035357 | 356 | int x = 0; |
basyo38 | 2:9f8fa9035357 | 357 | x = (double)(speedcounter * 60000/time_ms/8); |
basyo38 | 2:9f8fa9035357 | 358 | speed = (double)(0.0014*x + 0.9815); |
basyo38 | 2:9f8fa9035357 | 359 | //最初の機速校正時の式は、0.0015*x + 0.6063 |
basyo38 | 2:9f8fa9035357 | 360 | if(speed<=0.9815) { |
basyo38 | 2:9f8fa9035357 | 361 | speed = 0; |
basyo38 | 2:9f8fa9035357 | 362 | } |
basyo38 | 2:9f8fa9035357 | 363 | speedcounter = 0; |
basyo38 | 2:9f8fa9035357 | 364 | } |
basyo38 | 2:9f8fa9035357 | 365 | |
basyo38 | 2:9f8fa9035357 | 366 | |
basyo38 | 2:9f8fa9035357 | 367 | void control_communication() //操舵基板との通信用 |
basyo38 | 2:9f8fa9035357 | 368 | { |
basyo38 | 2:9f8fa9035357 | 369 | // myled(9,9,1,9); |
basyo38 | 2:9f8fa9035357 | 370 | |
basyo38 | 2:9f8fa9035357 | 371 | // __disable_irq(); |
basyo38 | 2:9f8fa9035357 | 372 | // t1.stop(); |
basyo38 | 2:9f8fa9035357 | 373 | for (int i = 0; i <3; i++) { |
basyo38 | 2:9f8fa9035357 | 374 | compass_array[i] = control_com.getc();//高度の受信 |
basyo38 | 2:9f8fa9035357 | 375 | } |
basyo38 | 2:9f8fa9035357 | 376 | ele = control_com.getc();//舵角の受信 |
basyo38 | 2:9f8fa9035357 | 377 | rud = control_com.getc();//舵角の受信 |
basyo38 | 2:9f8fa9035357 | 378 | e_trim = control_com.getc();//trimの受信 |
basyo38 | 2:9f8fa9035357 | 379 | r_trim = control_com.getc();//trimの受信 |
basyo38 | 2:9f8fa9035357 | 380 | //////////////ER操舵データ表示//////////////////// |
basyo38 | 2:9f8fa9035357 | 381 | /* pilot_oled.locate(6, 0); |
basyo38 | 2:9f8fa9035357 | 382 | pilot_oled.printf("%c", ele); |
basyo38 | 2:9f8fa9035357 | 383 | wait_ms(0.7); |
basyo38 | 2:9f8fa9035357 | 384 | pilot_oled.locate(8, 0); |
basyo38 | 2:9f8fa9035357 | 385 | pilot_oled.printf("%c", rud); |
basyo38 | 2:9f8fa9035357 | 386 | wait_ms(0.7);*/ |
basyo38 | 2:9f8fa9035357 | 387 | pilot_oled.locate(0, 0); |
basyo38 | 2:9f8fa9035357 | 388 | pilot_oled.printf("%1c%1c", e_trim,r_trim); |
basyo38 | 2:9f8fa9035357 | 389 | pilot_oled.locate(14, 0); |
basyo38 | 2:9f8fa9035357 | 390 | pilot_oled.printf("%2d", SD_count); |
basyo38 | 2:9f8fa9035357 | 391 | wait_ms(0.7); |
basyo38 | 2:9f8fa9035357 | 392 | ///////////エレベータログデータ条件分岐//////////////////////////// |
basyo38 | 2:9f8fa9035357 | 393 | switch(ele) { |
basyo38 | 2:9f8fa9035357 | 394 | case 'U': |
basyo38 | 2:9f8fa9035357 | 395 | pilot_oled.locate(6, 0); |
basyo38 | 2:9f8fa9035357 | 396 | pilot_oled.putc(0x02);// |
basyo38 | 2:9f8fa9035357 | 397 | // pilot_oled.printf("U");// |
basyo38 | 2:9f8fa9035357 | 398 | up2 = 5 ; |
basyo38 | 2:9f8fa9035357 | 399 | break; |
basyo38 | 2:9f8fa9035357 | 400 | case 'u': |
basyo38 | 2:9f8fa9035357 | 401 | pilot_oled.locate(6, 0); |
basyo38 | 2:9f8fa9035357 | 402 | pilot_oled.putc(0x5E);//^ |
basyo38 | 2:9f8fa9035357 | 403 | // pilot_oled.printf("u");// |
basyo38 | 2:9f8fa9035357 | 404 | up1 = 4 ; |
basyo38 | 2:9f8fa9035357 | 405 | break; |
basyo38 | 2:9f8fa9035357 | 406 | case 'n': |
basyo38 | 2:9f8fa9035357 | 407 | pilot_oled.locate(6, 0); |
basyo38 | 2:9f8fa9035357 | 408 | pilot_oled.putc(0x2D);//- |
basyo38 | 2:9f8fa9035357 | 409 | E_neut = 3 ; |
basyo38 | 2:9f8fa9035357 | 410 | break; |
basyo38 | 2:9f8fa9035357 | 411 | case 'd': |
basyo38 | 2:9f8fa9035357 | 412 | pilot_oled.locate(6, 0); |
basyo38 | 2:9f8fa9035357 | 413 | pilot_oled.putc(0x00);//vみたいな文字 |
basyo38 | 2:9f8fa9035357 | 414 | // pilot_oled.printf("d");// |
basyo38 | 2:9f8fa9035357 | 415 | down1 = 2 ; |
basyo38 | 2:9f8fa9035357 | 416 | break; |
basyo38 | 2:9f8fa9035357 | 417 | case 'D': |
basyo38 | 2:9f8fa9035357 | 418 | pilot_oled.locate(6, 0); |
basyo38 | 2:9f8fa9035357 | 419 | pilot_oled.putc(0x01); |
basyo38 | 2:9f8fa9035357 | 420 | // pilot_oled.printf("D");// |
basyo38 | 2:9f8fa9035357 | 421 | down2 = 1; |
basyo38 | 2:9f8fa9035357 | 422 | break; |
basyo38 | 2:9f8fa9035357 | 423 | default: |
basyo38 | 2:9f8fa9035357 | 424 | break; |
basyo38 | 2:9f8fa9035357 | 425 | } |
basyo38 | 2:9f8fa9035357 | 426 | /////////ラダーログデータ条件分岐///////////////////////////////////// |
basyo38 | 2:9f8fa9035357 | 427 | switch(rud) { |
basyo38 | 2:9f8fa9035357 | 428 | case 'L': |
basyo38 | 2:9f8fa9035357 | 429 | pilot_oled.locate(8, 0); |
basyo38 | 2:9f8fa9035357 | 430 | pilot_oled.putc(0x03); |
basyo38 | 2:9f8fa9035357 | 431 | // pilot_oled.printf("L");// |
basyo38 | 2:9f8fa9035357 | 432 | left2 =1; |
basyo38 | 2:9f8fa9035357 | 433 | break; |
basyo38 | 2:9f8fa9035357 | 434 | case 'l': |
basyo38 | 2:9f8fa9035357 | 435 | pilot_oled.locate(8, 0); |
basyo38 | 2:9f8fa9035357 | 436 | pilot_oled.putc(0x3C);//< |
basyo38 | 2:9f8fa9035357 | 437 | left1 =2; |
basyo38 | 2:9f8fa9035357 | 438 | break; |
basyo38 | 2:9f8fa9035357 | 439 | case 'N': |
basyo38 | 2:9f8fa9035357 | 440 | pilot_oled.locate(8, 0); |
basyo38 | 2:9f8fa9035357 | 441 | pilot_oled.putc(0x7C);//| |
basyo38 | 2:9f8fa9035357 | 442 | R_neut=3; |
basyo38 | 2:9f8fa9035357 | 443 | break; |
basyo38 | 2:9f8fa9035357 | 444 | case 'r': |
basyo38 | 2:9f8fa9035357 | 445 | pilot_oled.locate(8, 0); |
basyo38 | 2:9f8fa9035357 | 446 | pilot_oled.putc(0x3E);//> |
basyo38 | 2:9f8fa9035357 | 447 | right1=4; |
basyo38 | 2:9f8fa9035357 | 448 | break; |
basyo38 | 2:9f8fa9035357 | 449 | case 'R': |
basyo38 | 2:9f8fa9035357 | 450 | pilot_oled.locate(8, 0); |
basyo38 | 2:9f8fa9035357 | 451 | pilot_oled.putc(0x04); |
basyo38 | 2:9f8fa9035357 | 452 | // pilot_oled.printf("R");// |
basyo38 | 2:9f8fa9035357 | 453 | right2=5; |
basyo38 | 2:9f8fa9035357 | 454 | break; |
basyo38 | 2:9f8fa9035357 | 455 | default: |
basyo38 | 2:9f8fa9035357 | 456 | break; |
basyo38 | 2:9f8fa9035357 | 457 | } |
basyo38 | 2:9f8fa9035357 | 458 | // t1.start(); |
basyo38 | 2:9f8fa9035357 | 459 | //__enable_irq(); |
basyo38 | 2:9f8fa9035357 | 460 | } |
basyo38 | 2:9f8fa9035357 | 461 | |
basyo38 | 2:9f8fa9035357 | 462 | void android_communication() |
basyo38 | 2:9f8fa9035357 | 463 | { |
basyo38 | 2:9f8fa9035357 | 464 | // myled(9,9,9,1); |
basyo38 | 2:9f8fa9035357 | 465 | |
basyo38 | 2:9f8fa9035357 | 466 | int srpm,sspeed,sheight; |
basyo38 | 2:9f8fa9035357 | 467 | srpm=(int)rpm; |
basyo38 | 2:9f8fa9035357 | 468 | sspeed=(int)(speed*10); |
basyo38 | 2:9f8fa9035357 | 469 | sheight=(int)(height*10); |
basyo38 | 2:9f8fa9035357 | 470 | // if(srpm<100)srpm+=900; |
basyo38 | 2:9f8fa9035357 | 471 | // if(sspeed<100)sspeed+=900; |
basyo38 | 2:9f8fa9035357 | 472 | // if(sheight<100)sheight+=900; |
basyo38 | 2:9f8fa9035357 | 473 | |
basyo38 | 2:9f8fa9035357 | 474 | snprintf(send_buff1,10,"r%xh%xv%x",srpm,sheight,sspeed); |
basyo38 | 2:9f8fa9035357 | 475 | for(i=0;i<10;i++){ |
basyo38 | 2:9f8fa9035357 | 476 | // pc.putc(send_buff1[i]); |
basyo38 | 2:9f8fa9035357 | 477 | android_com.putc(send_buff1[i]); |
basyo38 | 2:9f8fa9035357 | 478 | } |
basyo38 | 2:9f8fa9035357 | 479 | } |
basyo38 | 2:9f8fa9035357 | 480 | |
basyo38 | 2:9f8fa9035357 | 481 | void update() //データ更新。最優先関数、割り込み禁止絶対入れろ。 |
basyo38 | 2:9f8fa9035357 | 482 | { |
basyo38 | 2:9f8fa9035357 | 483 | // myled(1,0,0,0); |
basyo38 | 2:9f8fa9035357 | 484 | __disable_irq(); |
basyo38 | 2:9f8fa9035357 | 485 | //time2 = t1.read_ms(); |
basyo38 | 2:9f8fa9035357 | 486 | time_ms = t1.read_ms();//周期時間読み取り |
basyo38 | 2:9f8fa9035357 | 487 | t1.stop(); |
basyo38 | 2:9f8fa9035357 | 488 | t1.reset(); |
basyo38 | 2:9f8fa9035357 | 489 | led4 =! led4; |
basyo38 | 2:9f8fa9035357 | 490 | //time_ms =time2-time1; |
basyo38 | 2:9f8fa9035357 | 491 | rpm_f(); |
basyo38 | 2:9f8fa9035357 | 492 | spd_f(); |
basyo38 | 2:9f8fa9035357 | 493 | altitude_f(); |
basyo38 | 2:9f8fa9035357 | 494 | compass_f(); |
basyo38 | 2:9f8fa9035357 | 495 | SD_log(); |
basyo38 | 2:9f8fa9035357 | 496 | OLEDdisplay_print(); |
basyo38 | 2:9f8fa9035357 | 497 | android_communication(); |
basyo38 | 2:9f8fa9035357 | 498 | pc.printf("NO:%d,%02d:%02d,R:%1.0f,S:%0.3f,H:%0.3f,%c%c%c,compass:%3.0f,%c%c,e:%c,r:%c,et:%c,rt:%c,%.3f\r\n", SD_count, min, sec, rpm, speed, height,send_buff1[4],send_buff1[5],send_buff1[6],compass,compass_array[0],compass_array[1], ele, rud,e_trim,r_trim,time_ms); |
basyo38 | 2:9f8fa9035357 | 499 | // pc.printf("TBT\n"); |
basyo38 | 2:9f8fa9035357 | 500 | up2 = 0; |
basyo38 | 2:9f8fa9035357 | 501 | up1 = 0; |
basyo38 | 2:9f8fa9035357 | 502 | E_neut = 0; |
basyo38 | 2:9f8fa9035357 | 503 | down1=0; |
basyo38 | 2:9f8fa9035357 | 504 | down2=0; |
basyo38 | 2:9f8fa9035357 | 505 | left1= 0; |
basyo38 | 2:9f8fa9035357 | 506 | left2 =0; |
basyo38 | 2:9f8fa9035357 | 507 | R_neut = 0; |
basyo38 | 2:9f8fa9035357 | 508 | right1=0; |
basyo38 | 2:9f8fa9035357 | 509 | right2=0; |
basyo38 | 2:9f8fa9035357 | 510 | t1.start(); |
basyo38 | 2:9f8fa9035357 | 511 | // time1 = t1.read_ms(); |
basyo38 | 2:9f8fa9035357 | 512 | __enable_irq(); |
basyo38 | 2:9f8fa9035357 | 513 | } |
basyo38 | 2:9f8fa9035357 | 514 | |
basyo38 | 2:9f8fa9035357 | 515 | |
basyo38 | 2:9f8fa9035357 | 516 | void CGRAM_1() |
basyo38 | 2:9f8fa9035357 | 517 | { |
basyo38 | 2:9f8fa9035357 | 518 | // CGRAMアドレスの指定 |
basyo38 | 2:9f8fa9035357 | 519 | // CGRAM(1)にビット・パターンを登録します。 |
basyo38 | 2:9f8fa9035357 | 520 | pilot_oled.writeCommand(0x40) ; |
basyo38 | 2:9f8fa9035357 | 521 | // 40μ秒待ちます。 |
basyo38 | 2:9f8fa9035357 | 522 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 523 | |
basyo38 | 2:9f8fa9035357 | 524 | // ここから文字のビット・パターンを1行ずつ設定していきます。 |
basyo38 | 2:9f8fa9035357 | 525 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 526 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 527 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 528 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 529 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 530 | pilot_oled.writeData((int)0x11) ;//10001 |
basyo38 | 2:9f8fa9035357 | 531 | pilot_oled.writeData((int)0x0A) ;//01010 |
basyo38 | 2:9f8fa9035357 | 532 | pilot_oled.writeData((int)0x04) ;//00100 |
basyo38 | 2:9f8fa9035357 | 533 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 534 | pilot_oled.cls(); |
basyo38 | 2:9f8fa9035357 | 535 | } |
basyo38 | 2:9f8fa9035357 | 536 | |
basyo38 | 2:9f8fa9035357 | 537 | void CGRAM_2() |
basyo38 | 2:9f8fa9035357 | 538 | { |
basyo38 | 2:9f8fa9035357 | 539 | // CGRAMアドレスの指定 |
basyo38 | 2:9f8fa9035357 | 540 | // CGRAM(2)にビット・パターンを登録します。 |
basyo38 | 2:9f8fa9035357 | 541 | pilot_oled.writeCommand(0x48) ; |
basyo38 | 2:9f8fa9035357 | 542 | // 40μ秒待ちます。 |
basyo38 | 2:9f8fa9035357 | 543 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 544 | |
basyo38 | 2:9f8fa9035357 | 545 | // ここから文字のビット・パターンを1行ずつ設定していきます。 |
basyo38 | 2:9f8fa9035357 | 546 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 547 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 548 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 549 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 550 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 551 | pilot_oled.writeData((int)0x1F) ;//11111 |
basyo38 | 2:9f8fa9035357 | 552 | pilot_oled.writeData((int)0x0E) ;//01110 |
basyo38 | 2:9f8fa9035357 | 553 | pilot_oled.writeData((int)0x04) ;//00100 |
basyo38 | 2:9f8fa9035357 | 554 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 555 | pilot_oled.cls(); |
basyo38 | 2:9f8fa9035357 | 556 | } |
basyo38 | 2:9f8fa9035357 | 557 | |
basyo38 | 2:9f8fa9035357 | 558 | void CGRAM_3() |
basyo38 | 2:9f8fa9035357 | 559 | { |
basyo38 | 2:9f8fa9035357 | 560 | // CGRAMアドレスの指定 |
basyo38 | 2:9f8fa9035357 | 561 | // CGRAM(3)にビット・パターンを登録します。 |
basyo38 | 2:9f8fa9035357 | 562 | pilot_oled.writeCommand(0x50) ; |
basyo38 | 2:9f8fa9035357 | 563 | // 40μ秒待ちます。 |
basyo38 | 2:9f8fa9035357 | 564 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 565 | |
basyo38 | 2:9f8fa9035357 | 566 | // ここから文字のビット・パターンを1行ずつ設定していきます。 |
basyo38 | 2:9f8fa9035357 | 567 | pilot_oled.writeData((int)0x04) ;//00100 |
basyo38 | 2:9f8fa9035357 | 568 | pilot_oled.writeData((int)0x0E) ;//01110 |
basyo38 | 2:9f8fa9035357 | 569 | pilot_oled.writeData((int)0x1F) ;//11111 |
basyo38 | 2:9f8fa9035357 | 570 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 571 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 572 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 573 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 574 | pilot_oled.writeData((int)0x00) ; |
basyo38 | 2:9f8fa9035357 | 575 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 576 | pilot_oled.cls(); |
basyo38 | 2:9f8fa9035357 | 577 | } |
basyo38 | 2:9f8fa9035357 | 578 | |
basyo38 | 2:9f8fa9035357 | 579 | void CGRAM_4() |
basyo38 | 2:9f8fa9035357 | 580 | { |
basyo38 | 2:9f8fa9035357 | 581 | // CGRAMアドレスの指定 |
basyo38 | 2:9f8fa9035357 | 582 | // CGRAM(4)にビット・パターンを登録します。 |
basyo38 | 2:9f8fa9035357 | 583 | pilot_oled.writeCommand(0x58) ; |
basyo38 | 2:9f8fa9035357 | 584 | // 40μ秒待ちます。 |
basyo38 | 2:9f8fa9035357 | 585 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 586 | |
basyo38 | 2:9f8fa9035357 | 587 | // ここから文字のビット・パターンを1行ずつ設定していきます。 |
basyo38 | 2:9f8fa9035357 | 588 | pilot_oled.writeData((int)0x02) ;//00010 |
basyo38 | 2:9f8fa9035357 | 589 | pilot_oled.writeData((int)0x06) ;//00110 |
basyo38 | 2:9f8fa9035357 | 590 | pilot_oled.writeData((int)0x0E) ;//01110 |
basyo38 | 2:9f8fa9035357 | 591 | pilot_oled.writeData((int)0x1E) ;//11110 |
basyo38 | 2:9f8fa9035357 | 592 | pilot_oled.writeData((int)0x0E) ;//01110 |
basyo38 | 2:9f8fa9035357 | 593 | pilot_oled.writeData((int)0x06) ;//00110 |
basyo38 | 2:9f8fa9035357 | 594 | pilot_oled.writeData((int)0x02) ;//00010 |
basyo38 | 2:9f8fa9035357 | 595 | pilot_oled.writeData((int)0x00) ;//00000 |
basyo38 | 2:9f8fa9035357 | 596 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 597 | pilot_oled.cls(); |
basyo38 | 2:9f8fa9035357 | 598 | } |
basyo38 | 2:9f8fa9035357 | 599 | |
basyo38 | 2:9f8fa9035357 | 600 | void CGRAM_5() |
basyo38 | 2:9f8fa9035357 | 601 | { |
basyo38 | 2:9f8fa9035357 | 602 | // CGRAMアドレスの指定 |
basyo38 | 2:9f8fa9035357 | 603 | // CGRAM(5)にビット・パターンを登録します。 |
basyo38 | 2:9f8fa9035357 | 604 | pilot_oled.writeCommand(0x60) ; |
basyo38 | 2:9f8fa9035357 | 605 | // 40μ秒待ちます。 |
basyo38 | 2:9f8fa9035357 | 606 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 607 | |
basyo38 | 2:9f8fa9035357 | 608 | // ここから文字のビット・パターンを1行ずつ設定していきます。 |
basyo38 | 2:9f8fa9035357 | 609 | pilot_oled.writeData((int)0x08) ;//01000 |
basyo38 | 2:9f8fa9035357 | 610 | pilot_oled.writeData((int)0x0C) ;//01100 |
basyo38 | 2:9f8fa9035357 | 611 | pilot_oled.writeData((int)0x0E) ;//01110 |
basyo38 | 2:9f8fa9035357 | 612 | pilot_oled.writeData((int)0x0F) ;//01111 |
basyo38 | 2:9f8fa9035357 | 613 | pilot_oled.writeData((int)0x0E) ;//01110 |
basyo38 | 2:9f8fa9035357 | 614 | pilot_oled.writeData((int)0x0C) ;//01100 |
basyo38 | 2:9f8fa9035357 | 615 | pilot_oled.writeData((int)0x08) ;//01000 |
basyo38 | 2:9f8fa9035357 | 616 | pilot_oled.writeData((int)0x00) ;//00000 |
basyo38 | 2:9f8fa9035357 | 617 | wait_us(40); |
basyo38 | 2:9f8fa9035357 | 618 | pilot_oled.cls(); |
basyo38 | 2:9f8fa9035357 | 619 | } |
basyo38 | 2:9f8fa9035357 | 620 | |
basyo38 | 2:9f8fa9035357 | 621 | |
basyo38 | 2:9f8fa9035357 | 622 |