レビュー
“Edison”でロボットアームをグリングリン動かす(後編):新春電子工作!(3/3 ページ)
“ロボットを動かす喜び”は、ニッポンモノづくりの原動力。その感動をEdisonとロボットアームで“お手軽”に体験。後編は“本物”ロボットアームを組み立てる。
/* WiFi Web Server LED Blink A simple web server that lets you blink an LED via the web. This sketch will print the IP address of your WiFi Shield (once connected) to the Serial monitor. From there, you can open that address in a web browser to turn on and off the LED on pin 9. If the IP address of your shield is yourAddress: http://yourAddress/H turns the LED on http://yourAddress/L turns it off This example is written for a network using WPA encryption. For WEP or WPA, change the Wifi.begin() call accordingly. Circuit: * WiFi shield attached * LED attached to pin 13 created 25 Nov 2012 by Tom Igoe modified 22 Dec 2014 by Tetsuo Kobayashi */ #include <SPI.h> #include <WiFi.h> char ssid[] = "********"; // your network SSID (name) char pass[] = "********"; // your network password int keyIndex = 0; // your network key Index number (needed only for WEP) int status = WL_IDLE_STATUS; WiFiServer server(8080); void setup() { Serial.begin(9600); // initialize serial communication pinMode( 0, OUTPUT); // set the LED pin mode pinMode( 1, OUTPUT); pinMode( 3, OUTPUT); pinMode( 4, OUTPUT); pinMode( 6, OUTPUT); pinMode( 7, OUTPUT); pinMode( 8, OUTPUT); pinMode( 9, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); digitalWrite( 0, LOW); // GET /L turns the LED off digitalWrite( 1, LOW); digitalWrite( 3, LOW); digitalWrite( 4, LOW); digitalWrite( 6, LOW); digitalWrite( 7, LOW); digitalWrite( 8, LOW); digitalWrite( 9, LOW); digitalWrite(11, LOW); digitalWrite(12, LOW); digitalWrite(13, LOW); // check for the presence of the shield: if (WiFi.status() == WL_NO_SHIELD) { Serial.println("WiFi shield not present"); while(true); // don't continue } String fv = WiFi.firmwareVersion(); if( fv != "1.1.0" ) Serial.println("Please upgrade the firmware"); // attempt to connect to Wifi network: while ( status != WL_CONNECTED) { Serial.print("Attempting to connect to Network named: "); Serial.println(ssid); // print the network name (SSID); // Connect to WPA/WPA2 network. Change this line if using open or WEP network: status = WiFi.begin(ssid, pass); // wait 10 seconds for connection: delay(10000); } server.begin(); // start the web server on port 8080 printWifiStatus(); // you're connected now, so print out the status digitalWrite(13, HIGH); } void loop() { WiFiClient client = server.available(); // listen for incoming clients if (client) { // if you get a client, Serial.println("new client"); // print a message out the serial port String currentLine = ""; // make a String to hold incoming data from the client while (client.connected()) { // loop while the client's connected if (client.available()) { // if there's bytes to read from the client, char c = client.read(); // read a byte, then Serial.write(c); // print it out the serial monitor if (c == '\n') { // if the byte is a newline character // if the current line is blank, you got two newline characters in a row. // that's the end of the client HTTP request, so send a response: if (currentLine.length() == 0) { // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK) // and a content-type so the client knows what's coming, then a blank line: client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); // the content of the HTTP response follows the header: client.print("<h1>"); client.print("GRIPPER_: <a href=\"/1F\">CLOSE</a> <a href=\"/1S\">STOP</a> <a href=\"/1R\">OPEN</a><br>"); client.print("<br>"); client.print("_ELBOW__: <a href=\"/2F\">__UP_</a> <a href=\"/2S\">STOP</a> <a href=\"/2R\">DOWN</a><br>"); client.print("<br>"); client.print("_BASE___: <a href=\"/3F\">_LEFT</a> <a href=\"/3S\">STOP</a> <a href=\"/3R\">RIGHT</a><br>"); client.print("<br>"); client.print("SHOULDER: <a href=\"/4F\">__UP_</a> <a href=\"/4S\">STOP</a> <a href=\"/4R\">DOWN</a><br>"); client.print("<br>"); client.print("_WRIST__: <a href=\"/5F\">LEFT</a> <a href=\"/5S\">STOP</a> <a href=\"/5R\">RIGHT</a><br>"); client.print("</h1>"); // The HTTP response ends with another blank line: client.println(); // break out of the while loop: break; } else { // if you got a newline, then clear currentLine: currentLine = ""; } } else if (c != '\r') { // if you got anything else but a carriage return character, currentLine += c; // add it to the end of the currentLine } // Check to see if the client request was "GET /H" or "GET /L": if (currentLine.endsWith("GET /1F")) { digitalWrite( 1, LOW ); digitalWrite( 0, HIGH); } if (currentLine.endsWith("GET /1R")) { digitalWrite( 0, LOW ); digitalWrite( 1, HIGH); } if (currentLine.endsWith("GET /1S")) { digitalWrite( 0, LOW ); digitalWrite( 1, LOW ); } if (currentLine.endsWith("GET /2R")) { digitalWrite( 4, LOW ); digitalWrite( 3, HIGH); } if (currentLine.endsWith("GET /2F")) { digitalWrite( 3, LOW ); digitalWrite( 4, HIGH); } if (currentLine.endsWith("GET /2S")) { digitalWrite( 3, LOW ); digitalWrite( 4, LOW ); } if (currentLine.endsWith("GET /3F")) { digitalWrite( 7, LOW ); digitalWrite( 6, HIGH); } if (currentLine.endsWith("GET /3R")) { digitalWrite( 6, LOW ); digitalWrite( 7, HIGH); } if (currentLine.endsWith("GET /3S")) { digitalWrite( 6, LOW ); digitalWrite( 7, LOW ); } if (currentLine.endsWith("GET /4F")) { digitalWrite( 9, LOW ); digitalWrite( 8, HIGH); } if (currentLine.endsWith("GET /4R")) { digitalWrite( 8, LOW ); digitalWrite( 9, HIGH); } if (currentLine.endsWith("GET /4S")) { digitalWrite( 8, LOW ); digitalWrite( 9, LOW ); } if (currentLine.endsWith("GET /5R")) { digitalWrite(12, LOW ); digitalWrite(11, HIGH); } if (currentLine.endsWith("GET /5F")) { digitalWrite(11, LOW ); digitalWrite(12, HIGH); } if (currentLine.endsWith("GET /5S")) { digitalWrite(11, LOW ); digitalWrite(12, LOW ); } } } // close the connection: client.stop(); Serial.println("client disonnected"); } } void printWifiStatus() { // print the SSID of the network you're attached to: Serial.print("SSID: "); Serial.println(WiFi.SSID()); // print your WiFi shield's IP address: IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); // print the received signal strength: long rssi = WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); // print where to go in a browser: Serial.print("To see this page in action, open a browser to http://"); Serial.println(ip); }
関連記事
- “Edison”でロボットアームをグリングリン動かす(前編)
“ロボットを動かす喜び”は、ニッポンモノづくりの原動力。その感動をEdisonとロボットアームで“お手軽”に体験。前編は“疑似”ロボットアームを組み立てる。 - Maker Faire Tokyo 2014に集結した「こりゃすごい」モノを集めてみた
モノづくりで大切なのは「遊び心」ということがよく分かりました。 - 「Edison」で盛り上がるインテル“ものづくり”気質
Maker Faire Tokyo 2014に出展したインテルが主催したワークショップでは、Edisonを使った工作ができると聞いた。開場12時だから2時間前に行けばいいよね。(甘 - スイッチサイエンス、Edison開発ボードの予約受付を開始
スイッチサイエンスは、モジュール型の超小型コンピュータ「Edison」搭載の開発ボード「インテル Edison 開発ボード」の予約受付を開始した。 - インテル、“Edison”開発ボードの国内販売を開始――10月25日
インテルは、切手大の超小型コンピューター「Edison」開発ボードの国内販売計画をアナウンスした。 - “収集から収益化”までカバーするインテルのIoT
「データを集めるだけじゃダメ」というインテルのIoTは何が強みなのか。インテルが提供する「一貫できるメリット」とは。 - Intelブースで「Edison」「RealSense」に迫る
Intelのブースは、そのときそのときで「力の入れ具合」がとても分かりやすい。そして、「先の話」も具体的な姿を見せ始めていた。 - SDサイズの極小PC「Edison」詳報と戦略──ウェアラブル分野の推進で“新生インテル”をアピール
インテルのブライアン・クルザニッチCEOが2014 International CESの基調講演に登壇。ウエアラブル分野のさらなる推進により、“新生インテル”として業界をリードしていく姿勢を改めてアピールした。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.