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.
Dependencies: RemoteIR TextLCD
Diff: main.cpp
- Revision:
- 43:243c1455f88a
- Parent:
- 42:56022456ef23
- Child:
- 44:721432d6ee4b
diff -r 56022456ef23 -r 243c1455f88a main.cpp
--- a/main.cpp Wed Aug 19 06:34:15 2020 +0000
+++ b/main.cpp Thu Aug 20 01:44:17 2020 +0000
@@ -128,13 +128,15 @@
void display();
void lcdBacklight(void const *argument);
void SendCMD(),getreply(),ReadWebData(),startserver(),sendpage(),SendWEB(),sendcheck(),touchuan();
-void wifi(void const *argument);
+void wifi(/*void const *argument*/);
Thread *deco_thread; // decodeIRをスレッド化 :+3
-Thread wifi_thread(wifi,NULL,osPriorityRealtime); // wifiをスレッド化
+Thread *wifi_thread;
+//wifi_thread(wifi,NULL,osPriorityHigh); // wifiをスレッド化
Thread *motor_thread; // motorをスレッド化 :+2
//Thread avoi_thread(avoidance, NULL, osPriorityHigh); // avoidanceをスレッド化:+2
//Thread trace_thread(trace, NULL, osPriorityHigh); // traceをスレッド化 :+2
RtosTimer bTimer(lcdBacklight, osTimerPeriodic); // lcdBacklightをタイマー割り込みで設定
+//Ticker bTimer;
Thread *avoi_thread;
Thread *trace_thread;
@@ -148,6 +150,7 @@
deco_thread -> set_priority(osPriorityRealtime);
motor_thread = new Thread(motor);
motor_thread -> set_priority(osPriorityHigh);
+ wifi_thread -> set_priority(osPriorityRealtime);
display();
}
@@ -678,11 +681,13 @@
mutex.unlock(); // ミューテックスアンロック
if(b <= 30){ // バッテリー残量30%以下なら
if(flag_t == 0){ // バックライトタイマーフラグが0なら
+ //bTimer.attach(lcdBacklight,0.5);
bTimer.start(500); // 0.5秒周期でバックライトタイマー割り込み
flag_t = 1; // バックライトタイマーフラグを1に切り替え
}
}else{
if(flag_t == 1){ // バックライトタイマーフラグが1なら
+ //bTimer.detach();
bTimer.stop(); // バックライトタイマーストップ
lcd.setBacklight(TextLCD::LightOn); // バックライトON
flag_t = 0; // バックライトタイマーフラグを0に切り替え
@@ -706,7 +711,7 @@
}
}
-void wifi(void const *argument)
+void wifi(/*void const *argument*/)
{
pc.printf("\f\n\r------------ ESP8266 Hardware Reset psq --------------\n\r");
ThisThread::sleep_for(100);
@@ -759,7 +764,7 @@
} else { //30%より下の場合残電量を赤文字
strcat(webbuff, "<font color=\"red\">");
sprintf(webbuff, "%s%3d", webbuff, b);
- strcat(webbuff, "<\font>");
+ strcat(webbuff, "</font>");
}
strcat(webbuff, "%</strong>");
strcat(webbuff, "<button id=\"reloadbtn\" type=\"button\" class=\"load\" onclick=\"rel()\">RELOAD</button>");
@@ -955,7 +960,7 @@
strcat(webbuff, "htmlacs(url);");
strcat(webbuff, "console.log(url);");
strcat(webbuff, "var buttons = document.getElementsByTagName(\"button\");");
- strcat(webbuff, "for(var i=0;i<7;i++){");
+ strcat(webbuff, "for(var i=1;i<8;i++){");
strcat(webbuff, "if(buttons[i].value == btnval){");
strcat(webbuff, "buttons[i].className=\"light\";");
strcat(webbuff, "}else{");
@@ -969,7 +974,7 @@
strcat(webbuff, "htmlacs(url);");
strcat(webbuff, "console.log(url);");
strcat(webbuff, "var buttons = document.getElementsByTagName(\"button\");");
- strcat(webbuff, "for(var i=7;i<10;i++){");
+ strcat(webbuff, "for(var i=8;i<11;i++){");
strcat(webbuff, "if(buttons[i].value == btnval){");
strcat(webbuff, "buttons[i].className=\"light\";");
strcat(webbuff, "}else{");
@@ -1088,6 +1093,27 @@
pc.printf("+++++++++++++++++succed rec begin+++++++++++++++++++++\r\n");
pc.printf("%s",webdata);
pc.printf("+++++++++++++++++succed rec end+++++++++++++++++++++\r\n");
+ if( strstr(webdata, "Normal") != NULL ) {
+ pc.printf("++++++++++++++++++Normal++++++++++++++++++++");
+ mode = SPEED; // スピードモード
+ flag_sp = 0;
+ display(); // ディスプレイ表示
+ mode = beforeMode; // 現在のモードに前回のモードを設定
+ }else if( strstr(webdata, "VeryFast") != NULL ) {
+ pc.printf("+++++++++++++++++++VeryFast+++++++++++++++++++");
+ mode = SPEED; // スピードモード
+ flag_sp = 2;
+ display(); // ディスプレイ表示
+ mode = beforeMode; // 現在のモードに前回のモードを設定
+ }else if( strstr(webdata, "Fast") != NULL ) {
+ pc.printf("++++++++++++++++++++Fast++++++++++++++++++");
+ mode = SPEED; // スピードモード
+ flag_sp = 1;
+ display(); // ディスプレイ表示
+ mode = beforeMode; // 現在のモードに前回のモードを設定
+ }else{
+ beforeMode = mode;
+ }
if( strstr(webdata, "GO") != NULL ) {
pc.printf("+++++++++++++++++前進+++++++++++++++++++++\r\n");
//delete avoi_thread; //障害物回避スレッド停止
@@ -1156,27 +1182,6 @@
mode=LINE_TRACE;
display(); // ディスプレイ表示
}
- if( strstr(webdata, "Normal") != NULL ) {
- pc.printf("++++++++++++++++++Normal++++++++++++++++++++");
- mode = SPEED; // スピードモード
- flag_sp = 0;
- display(); // ディスプレイ表示
- mode = beforeMode; // 現在のモードに前回のモードを設定
- }
- if( strstr(webdata, "Fast") != NULL ) {
- pc.printf("++++++++++++++++++++Fast++++++++++++++++++");
- mode = SPEED; // スピードモード
- flag_sp = 1;
- display(); // ディスプレイ表示
- mode = beforeMode; // 現在のモードに前回のモードを設定
- }
- if( strstr(webdata, "VeryFast") != NULL ) {
- pc.printf("+++++++++++++++++++VeryFast+++++++++++++++++++");
- mode = SPEED; // スピードモード
- flag_sp = 2;
- display(); // ディスプレイ表示
- mode = beforeMode; // 現在のモードに前回のモードを設定
- }
if(mode != LINE_TRACE && trace_thread->get_state() != Thread::Deleted){
trace_thread->terminate();
}
@@ -1238,7 +1243,9 @@
getcount=200;
while(weberror==0) {
SendCMD();
+ pc.printf("\nここだ\r\n");
getreply();
+ pc.printf("\nどこだ\r\n");
if (strstr(replybuff, "0.0.0.0") == NULL) {
weberror=1; // wait for valid IP
}
@@ -1281,9 +1288,13 @@
// Get Command and ESP status replies
void getreply()
{
+ pc.printf("a\r\n");
memset(replybuff, '\0', sizeof(replybuff));
+ pc.printf("b\r\n");
time1.reset();
+ pc.printf("c\r\n");
time1.start();
+ pc.printf("d\r\n");
replycount=0;
while(time1.read_ms()< timeout && replycount < getcount) {
if(esp.readable()) {
@@ -1297,6 +1308,8 @@
/* mainスレッド */
int main() {
/* 初期設定 */
+ wifi_thread = new Thread(wifi);
+ wifi_thread -> set_priority(osPriorityHigh);
avoi_thread = new Thread(avoidance);
avoi_thread->terminate();
trace_thread = new Thread(trace);