Arduino + CDS

先日買ったArduinoの開発キット(asin:B0025Y6C5G)にCDSがついてきたので、明るさを検知してtwitterに投稿するスケッチを書いてみた。

DHCPTwitter投稿用ライブラリを入れて、作り始めから完成まで30分くらい。


以下ソースコード。#defineの名前が超適当なのは見逃してほしいー

#include <Ethernet.h>
#include <Dhcp.h>
#include <Twitter.h>

byte mac[] = { 0x00, 0xde, 0xad, 0xbe, 0xaf, 0x00 };
byte server[] = { 168, 143, 161, 20 }; // twitter.com
boolean ipAcquired = false;

Twitter twitter("pekeq:password");

void setup()
{
  Serial.begin(9600);
  
  Serial.println("getting ip...");
  int result = Dhcp.beginWithDHCP(mac);
  
  if(result == 1)
  {
    ipAcquired = true;
    Serial.println("ip acquired...");
    delay(3000);
    Serial.println("starting...");
    twitt("Arduino起動したなう");
  }
}

void twitt(char* str)
{
  Serial.println(str);
  if (twitter.post(str)) {
    int status = twitter.wait();
    Serial.print("code = ");
    Serial.println(status);
  } else {
    Serial.println("error!");
  }
}

#define DARKPOINT 300
#define DARK 1
#define LIGHT 2
#define HOWMANY 10
int ncont = 0;
int curstatus = -1;

void loop()
{
  if(ipAcquired) {
    int val = analogRead(0);
    //Serial.print(val);
 
    int status = -1;
    if (val < DARKPOINT) {
      status = DARK;
    } else {
      status = LIGHT;
    }
    
    if (status == curstatus) {
      ncont++;
    } else {
      ncont = 0;
    }

    if (ncont == HOWMANY) {
      if (status == DARK) {
        Serial.println("now in dark");
        twitt("暗いなう");
      } else {
        Serial.println("now in light");
        twitt("明るいなう");
      }
    }

    curstatus = status;
 
  } else {
    spinForever();
  }
  delay(500);
}

void spinForever()
{
  for(;;)
      ;
}