 #include <avr/pgmspace.h>
 
 #define ARRAYSIZE(array) (sizeof(array) / sizeof(array[0]))
+
+
+// ポート数の違いを吸収したりするｱﾚ
+#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__)
+// Arduino MEGAとか
+
+// A0 - A15
+#define AI_MAX_PORT_NUM 16
+
+// D0 - D49
+#define DI_MAX_PORT_NUM 50
+#else
+// Unoとか
+
+// A0 - A5
+#define AI_MAX_PORT_NUM 6
+
+// D0 - D13
+#define DI_MAX_PORT_NUM 14
+#endif
 
 const prog_char ILLEGAL_COMMAND[] PROGMEM       = "Illegal command.";
 const prog_char ILLEGAL_TYPE[] PROGMEM          = "Illegal type.";

    digitalWrite(port, LOW);
    val = 0;
  }
  return okIoJson("OK", port, val);
}



        {"msg":"OK","port":[port],"val":[val]}
     ]}
   */
  {"stream/di/on/", &streamDiOnTask},

  /*
     DI連続転送OFF
     format => stream/di/off/{port}

     但しstream/di/off/allとやった場合は全てのポートの連続転送がOFFになる
   */
  {"stream/di/off/", &streamDiOffTask},

  /*
    AI連続転送ON
    format   => stream/ai/on?{ports}
    {port} => 連続転送を有効にするポート番号
    example  => stream/ai/on/1
   */
  {"stream/ai/on/", &streamAiOnTask},

  /*
     AI連続転送OFF
     format => stream/ai/off/1

     但しstream/ai/off/allとやった場合は全てのポートの連続転送がOFFになる
   */
  {"stream/ai/off/", &streamAiOffTask},


  /*
