2012年1月16日 星期一

耍白痴買的東西

mbed在途中的時候,腦筋壞掉買了Arduino Nano...

我還以為會是第二個MADE IN ITALY

隨便焊焊,用Blink踹一下...

2011年12月26日 星期一

用16*2 LCD顯示SHT-15的結果

程式碼如下
/*
 * SHT-15 - 4
 */
#include <SHT1x.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd( 7, 8, 9, 10, 11, 12 );
SHT1x sht1x( 6, 5 );

void setup() {
  lcd.begin( 16, 2 );
  lcd.print( "SHT-15 - 4" );
  Serial.begin( 9600 );
}

String getWeather() {
  float temp_c, temp_f, humidity;
  String result = "";
  temp_c = sht1x.readTemperatureC();
  temp_f = sht1x.readTemperatureF();
  humidity = sht1x.readHumidity();
  result.concat( (long) temp_c );
  result += "C,";
  result.concat( (long) temp_f );
  result += "F,";
  result.concat( (long) humidity );
  result += "%";
  return result;
}

void loop() {
  lcd.setCursor( 0, 1 );
  lcd.print( getWeather() );
  Serial.println( "Running..." );
  delay( 1000 );
}

2011年12月20日 星期二

SHT-15 - 2 把SHT-15讀到的數據存到SD Card

事實顯示鼓起勇氣把4x USD的SHT-15焊下去之前,只能用手按住。
首次用Fritzing的成果,用MicroSD Shield取代WaveShare那個MicroSD板子。自己弄了一個SHT-15的component,設定connections好累,不過SHT-15圖好像選太大張。
#include <SD.h>
#include <SHT1x.h>

/*
 * SHT 15 - 3
 */
 
#define DataPin 6    // DATA
#define ClockPin 5   // SCK
#define CSPIN 10 // SD CS pin

SHT1x sht1x( DataPin, ClockPin );
File myLogFile;

void setup() {
  Serial.begin( 9600 );
  Serial.print( "Initializing SD card..." );
  pinMode( 10, OUTPUT );
  
  if( !SD.begin( CSPIN ) ) {
    Serial.println( "initialization faild!" );
    return;
  }
  Serial.println( "initialization done." );
}

void loop() {
  float temp_c, temp_f, humidity;
  String log_msg = "";
  
  temp_c = sht1x.readTemperatureC();
  temp_f = sht1x.readTemperatureF();
  humidity = sht1x.readHumidity();
  
  log_msg.concat( (long) temp_c );
  log_msg += ",";
  log_msg.concat( (long) temp_f );
  log_msg += ",";
  log_msg.concat( (long) humidity );
  myLogFile = SD.open( "sht15.txt", FILE_WRITE );
  if( myLogFile ) {
    Serial.println( "Writing..." );
    myLogFile.println( log_msg );
    myLogFile.close();
    Serial.println( log_msg );
    Serial.println( "done." );
  } else {
    Serial.println( "error opening sht15.txt" );
  }
  
  delay( 1000 );
}

看SD卡上的檔案~~ 讀到負值的就是因為手沒按著SHT-15,還是要焊啊~~
氣象站記錄竟然沒有時間,下一步玩玩看能不能玩得起來PCF8563P...

MicroSD Card板子 - 1

照的糊糊的,明亮的
接法都一樣,踹了很久都是Initial Failed,甚至還改接Sparkfun買的MicroSD shield看看。結果寢室熄燈睡覺前的一踹,竟然可以,又多搞了一個小時才睡。
  • Uno pin 13 to CLK
  • Uno pin 12 to MISO(DO)
  • Uno pin 11 to MOSI(DI)
初步測試就用SD Library的Example改成MicroSD板子的CS接到Uno的pin,這樣跑跑看。

2011年12月12日 星期一

SHT15 - 1

從sparkfun買的SHT-15總算漂洋過海到台灣~~
40 USD的東西我還焊不下去,怕焊壞掉。
#include 

/*
 * SHT 15 - 1
 */
 
#define DataPin 11    // DATA
#define ClockPin 12   // SCK

SHT1x sht1x( DataPin, ClockPin );

void setup() {
  Serial.begin( 9600 );
}

void loop() {
  float temp_c, temp_f, humidity;
  
  temp_c = sht1x.readTemperatureC();
  temp_f = sht1x.readTemperatureF();
  humidity = sht1x.readHumidity();
  
  Serial.print( "Temperature: " );
  Serial.print( temp_c, 2 );
  Serial.print( "C / " );
  Serial.print( temp_f, 2 );
  Serial.print( "F. Humidity: " );
  Serial.print( humidity );
  Serial.println( "%" );
  
  delay( 1000 );
}

因為手不靈活,所以調整一下比較適合自己插線,和跟著練習那篇差的pin不一樣。
沒想到台北租屋的溼度竟然65%以上
複製練習自這篇

2011年12月8日 星期四

IRremote 2

940nm紅外線發射器

手邊沒有100ohm電阻用4.7ohm擋著用

/**
 * IRRemote 2
 */
#include 
#include 

#define BtnPin 2
int buttonState = 0;
// IRremote的IR發射器只能裝在pin 3
IRsend irsend;

void setup() {
  pinMode( BtnPin, INPUT );
  Serial.begin( 9600 );
}

void loop() {
  buttonState = digitalRead( BtnPin );
  
  if( buttonState == HIGH ) {
    Serial.println( "GoGoGo" );
    irsend.sendNEC( 0x2FF00FF, 32 );
  }
}
送出去的訊號就是之前用接收器,讀取冷氣機遙控,由IRremote解出來的protocol的來送。
這玩具越玩越想買樂高機器人...@@"