Arduino Ethernet Shield + SDカード

Pocket
LINEで送る

Ethernet ShieldにくっついてるSDカードスロットが飾りのようになっていて寂しいので使ってみたよ。
書き込み用に開くファイルのファイル名には文字数制限があるみたい。ちょっとはまってしまっけど。。
8文字以内にしないとファイルオープンに失敗するから注意が必要。

【環境】
ArduinoIDE 0022 + Ethernet Library

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetDHCP.h>
#include <EthernetDNS.h>
#include <SD.h>

File myFile;
byte mac[] = {  0x90, 0xA2, 0xDA, 0x00, 0x12, 0xDE }; // Ethernet ShieldのMACアドレス
byte server[] = { 74, 125, 31, 106 };                 // Google
Client client(server, 80);

void setup() {

  // start the serial library:
  Serial.begin(9600);
  
  Serial.println("Initializing SD card...");
  pinMode(10, OUTPUT);
    
  if( !SD.begin(4) ) {
    Serial.println("initialization failed!");
    return;
  }  
  
  // start the Ethernet connection:
  EthernetDHCP.begin( mac );
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect()) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  }
  else {
    Serial.println("connection failed");
  }
}

void loop()
{
  Serial.println("initialization done.");
  myFile = SD.open("Sample2.txt", FILE_WRITE);    // SDカードを書き込みように開く

  if (client.available()) {
    char c = client.read();
    if (myFile) {
      Serial.println("Writing to test.txt...");
      myFile.write(c);  // googleから取得した文字列をファイルに書き込み
    } 
    else {
      // if the file didn't open, print an error:
      Serial.println("error opening test.txt");
    } 
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
  }
  
  myFile.close();  // 書き込みが終わったらちゃんと閉じる
  Serial.println("SD Save Completed");
}

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください