//DC_Servo_4 #include #include const char* ssid = "SSID";//無線LANのSSIDを設定します。 const char* password = "password";//無線LANのpasswordを設定します。 const char* host = "192.168.11.2";//パソコンのIPアドレスを設定します。 const int httpPort = 13000;//TCPサーバのポート static String gSendText=""; int PS1B; int gPC_T,gPC_N; char inputString[50]; boolean stringComplete = false; // whether the string is complete int gi=0; int gCT=0;//カウンタ void setup() { Serial.begin(115200); pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(14, INPUT); pinMode(16, INPUT); gPC_T=0; gPC_N=0; PS1B=digitalRead(14); WiFi.begin(ssid, password);//無線LANに接続要求 while (WiFi.status() != WL_CONNECTED) {//接続完了まで待ちます。 delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); } // the loop function runs over and over again forever void loop() { DC_Servo(); serialEvent(); if (stringComplete) { //Serial.println(inputString); gPC_T = atoi(inputString); gi=0; stringComplete= false; } if(gCT > 400) {gCT=0;WiFi_loop();} else{gCT++;} } void WiFi_loop() { WiFiClient client; if (!client.connect(host, httpPort)) {//TCPサーバへの接続要求 } else { if(gSendText.length() > 1) { client.print(gSendText);//データを送信 gSendText=""; } else{client.print("a");}//"a"を送信 delay(10); // Read all the lines of the reply from server and print them to Serial while(client.available()) { String line = client.readStringUntil('\n');//受信します。 if(line.indexOf("BT") == 0) { int Bracket2 = line.indexOf('#', 2 ); int Bracket3 = line.indexOf('#',Bracket2+1); //Serial.println(Bracket2); //Serial.println(Bracket3); String inString =line.substring(Bracket2+1,Bracket3); gPC_T = inString.toInt(); //Serial.print(inString+" ******\r\n"); } Serial.print(line+"\r\n"); gSendText=line + "=OK\r\n";//送信データのセット } } } void DC_Servo() { String str; int PS1=digitalRead(14); int PS2=digitalRead(16); long T1,T2; long DPC=gPC_T-gPC_N; if( DPC > 0) { T1=DPC*400; if(T1 > 1000){T1=1000;} T2=1000-T1; digitalWrite(12,LOW); digitalWrite(13,HIGH); delayMicroseconds(T1); digitalWrite(12, HIGH); digitalWrite(13, HIGH); delayMicroseconds(T2); } else { T1=(1-DPC)*400; if(T1 > 1000){T1=1000;} T2=1000-T1; digitalWrite(12, HIGH); digitalWrite(13, LOW); delayMicroseconds(T1); digitalWrite(12, HIGH); digitalWrite(13, HIGH); delayMicroseconds(T2); } str=String(gPC_T)+" "+String(gPC_N); if(PS1B==HIGH) { if(PS1==LOW) { PS1B=LOW; if(PS2==HIGH) { gPC_N++; Serial.println(str); } else { gPC_N--; Serial.println(str); } } } else { if(PS1==HIGH) { PS1B=HIGH; if(PS2==LOW) { gPC_N++; Serial.println(str); } else { gPC_N--; Serial.println(str); } } } } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); inputString[gi]=inChar; if (inChar == '\n') { stringComplete = true; inputString[gi-1]=0; } gi++; } }