intstate0begin9600printlnOK
intstate0begin9600printlnOKavailablecharcread
//接在 D8 喇叭播放262Hz音頻,1000mstone82621000
1000
// 定義函式int func
funcfunc
available
printlnOK
writebuflen
intinByteread
flush
//序列埠(傳送)輸出範例begin9600//序列埠輸出字串 "a" 及換行符號printlna1000//序列埠輸出字串 "b" 及換行符號printlnb1000
//序列埠(接收)輸入範例begin9600available//讀取輸入的字元,存入變數c中charcreadprintc
//收到字元'a'時點亮13腳內建led,收到字元'b'時熄滅13腳內建ledbegin960013LOWavailablecharcread==ca13HIGH==cb13LOW
//基本序列埠訊息傳送與接收intcounter0Stringresbegin9600counter==%counter100000//由序列埠傳送printlncounter//由序列埠接收availablecharcread+=resc==c\nres
intstate0intcounter0Stringresbegin9600==state0println+req:counterstate1availablecharcread+=rescendsWithres\nprintln+echo:resresstate0
//esp8266 發 http 請給指定伺服url<Arduino.h><ESP8266WiFiMulti.h><ESP8266HTTPClient.h><WiFiClient.h>Stringssid帳號Stringpw密碼Stringurlhttp://中介伺服器位置ESP8266WiFiMulti WiFiMultibegin115200//連接到 Wi-Fi 網路wifiConnectssidpw==WiFiMulti.run()WL_CONNECTEDinthttpCode0//發出 http 請求給伺服器Stringresesp8266HttpClienturlhttpCode<=httpCode0printlnhttpRequest 傳送失敗://序列埠印出伺服器回應內容printlnres50//函式:連接到 Wi-Fi 網路void wifiConnectString ssidString pwWiFimodeWIFI_STAWiFiMultiaddAPssid.c_str(),pw.c_str()!=WiFiMultirunWL_CONNECTED1000print.printlnWiFi已連接//發出 http 請求給伺服器String esp8266HttpClientString urlint &httpCodeWiFiClient clientHTTPClient httpString res0http. beginclienturlhttpCodehttp.GET()==httpCodeHTTP_CODE_OKreshttp.getString()http.end()httpCode-999return res
//遊戲把手: A0 馬轉動值 , D2 接按鈕, D5,D6 控制振動馬達 <Arduino.h><ESP8266WiFiMulti.h><ESP8266HTTPClient.h><WiFiClient.h>Stringssid帳號Stringpw密碼Stringurlhttp://中介伺服器位置ESP8266WiFiMulti WiFiMultibegin115200//連接到 Wi-Fi 網路wifiConnectssidpwINPUT_PULLUPA0OUTPUTD5OUTPUTD6D5LOWD6LOW==WiFiMulti.run()WL_CONNECTED//類比讀取值 0~1023 (Arduino ADC之解析度為10bit)intA0_RA0//數位讀取值 HIGH:1 LOW:0intD2_RD2inthttpCode0//發出 http 請求給伺服器Stringresesp8266HttpClient+url+D2_R+,A0_RhttpCode<=httpCode0printlnhttpRequest 傳送失敗:D5LOWD6LOW==res0D5LOWD5HIGH//函式:連接到 Wi-Fi 網路void wifiConnectString ssidString pwWiFimodeWIFI_STAWiFiMultiaddAPssid.c_str(),pw.c_str()!=WiFiMultirunWL_CONNECTED1000print.printlnWiFi已連接//發出 http 請求給伺服器String esp8266HttpClientString urlint &httpCodeWiFiClient clientHTTPClient httpString res0http. beginclienturlhttpCodehttp.GET()==httpCodeHTTP_CODE_OKreshttp.getString()http.end()httpCode-999return res
<WiFi.h><HTTPClient.h>char*ssid帳號char*password密碼StringserverAddress http://192.168.0.1intcount0begin115200//連接到 Wi-Fi 網路WiFibeginssidpassword!=WiFistatusWL_CONNECTED1000printlnWiFi連接中...printlnWiFi已連接 HTTPClient http;//每輪都傳送count ,傳送成功後count加1Stringurl++serverAddress/counthttpbeginurl//傳送httpRequest給伺服器inthttpCode httpGET>httpCode 0//傳送成功並取得回應(httpResponse)StringpayloadhttpgetStringprintlnHTTP回應:printlnpayload+=count1printlnhttpRequest 傳送失敗:printlnhttpCode //結束本輪HTTP Transactionhttpend5000
<Servo.h>
//宣告伺服馬達物件 Servoservo
//伺服馬達旋轉至90度writeservo90
//設定伺服馬達接到D9attachservo9
<Servo.h>//宣告伺服馬達物件 Servoservo//設定伺服馬達接到D9attachservo9//伺服馬達旋轉至90度writeservo90
//數位寫入值 HIGH:1 LOW:05LOW
//數位讀取值 HIGH:1 LOW:0intD_input8
//類比寫入值 0~255 (Arduino PWM 之解析度為8bit)5255
//類比讀取值 0~1023 (Arduino ADC之解析度為10bit)intA_inputA0
inttrigPinA2intechoPinA3
//triglePin為觸發腳位,要設定為輸出,echoPin為回聲接收腳位要設定為輸入OUTPUTtrigPinINPUTechoPin
inttrigPinA2intechoPinA3begin9600//triglePin為觸發腳位,要設定為輸出,echoPin為回聲接收腳位要設定為輸入OUTPUTtrigPinINPUTechoPin//發送一個10微秒的脈衝以啟動超音波感應器trigPinLOWdelayMicroseconds2trigPinHIGHdelayMicroseconds10trigPinLOW// 讀取超音波感應器回傳的脈衝時間longdurationpulseInechoPinHIGH//空氣中的音速約0.0342cm/微秒,所以距離 = (時間 * 0.0342) / 2doubledist/*duration0.03432printlndist
category>
==state0
==state1
==atrue
==state0==state1
==atrue
=i0<=i5i
i
123
+i1
randomfromto
toIntstrTemp
Stringstr_temp
lengthstrTemp
toIntstrTemp
substringstrTempfromto
endsWithstrTemp\n
trimstrTemp
//遊戲把手(usb通訊): A0 馬轉動值 , D2 接按鈕, D5,D6 控制振動馬達 intcounter0Stringresbegin9600INPUT_PULLUPD2INPUT_PULLUPA0OUTPUTD5OUTPUTD6D5LOWD6LOWcounter==%counter100000//數位讀取值 HIGH:1 LOW:0intD2_RD2//類比讀取值 0~1023 (Arduino ADC之解析度為10bit)intA0_RA0//由序列埠傳送A0 馬轉動值 , D2 接按鈕 println+D2_R+,A0_R//由序列埠接收馬達振動的資訊availablecharcread+=resc==c\nhandleResresresvoid handleResString resD6LOW==toIntres255D5HIGHD5LOW
//遊戲把手: A0 馬轉動值 , D2 接按鈕, D5,D6 控制振動馬達 <Arduino.h><ESP8266WiFiMulti.h><ESP8266HTTPClient.h><WiFiClient.h>StringssidWIFI帳號StringpwWIFI密碼//伺服務位址結尾記得加 "/" Stringurlhttp://伺服器位置/ESP8266WiFiMulti WiFiMultibegin115200//連接到 Wi-Fi 網路wifiConnectssidpwINPUT_PULLUPA0INPUT_PULLUPD2OUTPUTD5OUTPUTD6D5LOWD6LOW==WiFiMulti.run()WL_CONNECTED//類比讀取值 0~1023 (Arduino ADC之解析度為10bit)intA0_RA0//數位讀取值 HIGH:1 LOW:0intD2_RD2inthttpCode0//發出 http 請求給伺服器Stringresesp8266HttpClient+url+D2_R+,A0_RhttpCode<=httpCode0printlnhttpRequest 傳送失敗:D5LOWD6LOW==res0D5LOWD5HIGH//函式:連接到 Wi-Fi 網路void wifiConnectString ssidString pwWiFimodeWIFI_STAWiFiMultiaddAPssid.c_str(),pw.c_str()!=WiFiMultirunWL_CONNECTED1000print.printlnWiFi已連接//發出 http 請求給伺服器String esp8266HttpClientString urlint &httpCodeWiFiClient clientHTTPClient httpString res0http. beginclienturlhttpCodehttp.GET()==httpCodeHTTP_CODE_OKreshttp.getString()http.end()httpCode-999return res
<ESP8266WiFi.h><WebSocketsClient.h><ArduinoJson.h>StringssidWiFi名稱StringpwWiFi密碼Stringip筆電IP(可以去命令提示字元使用 ipconfig 查詢)WebSocketsClient webSocket// 函式:處理 WebSocket 訊息void onMessageString messageprintlnmessageStringresponse+=responsemessage herewebSocketsendTXTresponse// 函式:處理 WebSocket 事件void webSocketEventWStype_t typeuint8_t * messagesize_t length==typeWStype_CONNECTEDSerial.printfWebSocket connected to url: %s\nmessage==typeWStype_TEXTonMessage(char *)message==typeWStype_DISCONNECTEDprintlnWebSocket disconnected!begin115200println// WiFi SettingsWiFibeginssidpwprintConnecting!=WiFi.status()WL_CONNECTED500print.printlnprintConnected, IP address: printlnWiFi.localIP()// WebSocket Settings// server address, port and URLwebSocketbeginip8080/// event handlerwebSocketonEventwebSocketEvent// Handle WebSocket communicationwebSocketloop
// 遊戲把手(Serial 通訊)// 啟動序列埠(Serial port)begin115200setTimeout60000println__started__// 讀取一行StringmessagereadStringUntil\n
// TT馬達,A0 輸入,D0 接地INPUTA0OUTPUTD0D0LOW// 按鈕,D2 接地,D4 輸入上拉OUTPUTD2D2LOWINPUT_PULLUPD4// 震動馬達,D5 控制,D6 接地OUTPUTD5D5LOWOUTPUTD6D6LOW// LED 燈,D7 接長腳(正極),D8 接短腳(負極)OUTPUTD7D7LOWOUTPUTD8D8LOW
// 判斷是否為 LED 燈控制訊息==messaged1// LED 燈亮D7HIGH==messaged0// LED 燈暗D7LOW
// 判斷是否為震動馬達控制訊息==message0// 震動馬達停止轉動D5LOW!=message// 震動馬達開始轉動D5HIGH
// 提供按鈕的狀態Stringresponse1// 訊息以 d 開頭代表數位訊號+=response1d+=response1D4printlnresponse1
// 提供 TT 馬達的狀態Stringresponse2// 訊息為數字代表類比訊號+=response2A0printlnresponse2
// 遊戲把手(Serial 通訊)// 啟動序列埠(Serial port)begin115200setTimeout60000println__started__// TT馬達,A0 輸入,D0 接地INPUTA0OUTPUTD0D0LOW// 按鈕,D2 接地,D4 輸入上拉OUTPUTD2D2LOWINPUT_PULLUPD4// 震動馬達,D5 控制,D6 接地OUTPUTD5D5LOWOUTPUTD6D6LOW// LED 燈,D7 接長腳(正極),D8 接短腳(負極)OUTPUTD7D7LOWOUTPUTD8D8LOW// 讀取一行StringmessagereadStringUntil\n// 判斷是否為 LED 燈控制訊息==messaged1// LED 燈亮D7HIGH==messaged0// LED 燈暗D7LOW// 判斷是否為震動馬達控制訊息==message0// 震動馬達停止轉動D5LOW!=message// 震動馬達開始轉動D5HIGH// 提供按鈕的狀態Stringresponse1// 訊息以 d 開頭代表數位訊號+=response1d+=response1D4printlnresponse1// 提供 TT 馬達的狀態Stringresponse2// 訊息為數字代表類比訊號+=response2A0printlnresponse2