不知道為啥買的brick...。水平的時候透過
analogRead()
會讀取到最大的值,開始傾斜之後讀取到的值就會變小。哈!覺得這種玩具比玩圍棋要多花錢很多錢
pulseIn()
取得Echo pin HIGH pulse的時間;另一個是距離的計算根據datasheet說明的Echo back pulse width(這裡是Echo Pin由LOW -> HIGH -> LOW的時間) microseconds除上58就是距離(cm),除上148就是inch的距離。/** * Ultrasonic 1: 超音波測距 秀在Serial Port 9600 */ #define TrigPin 10 #define EchoPin 13 long ping() { // PING digitalWrite( TrigPin, LOW ); delayMicroseconds( 2 ); digitalWrite( TrigPin, HIGH ); delayMicroseconds( 10 ); digitalWrite( TrigPin, LOW ); return pulseIn( EchoPin, HIGH ); } void setup() { pinMode( TrigPin, OUTPUT ); pinMode( EchoPin, INPUT ); Serial.begin( 9600 ); } void loop() { long duration, cm; String result = "Distance: "; duration = ping(); cm = duration / 58; result += cm; result += " (cm)."; Serial.println( result ); delay( 1500 ); }
Analog Input | Analog Output | |
---|---|---|
Resolution | 10 bits (0~1023) | 8 bits (0~254) |
Votage Range | 0~5 (Volts) | 0~5 (Volts) |
Arduino Pins | A0~A5 | Digit Pins 3, 5, 6, 9. 10, 11 |
Arduino Mega Pins | A0~A15 | Digit Pins 0~13 |
digitWrite(pin, value)
第二個參數是HIGH/LOW;analogWrite(pin, value)
。然後很無聊的做兩個練習,分別針對digit pin 13/11使用analogWrite()
。/** * Analog out on Digit Pin 13 test */ const int ledPin = 13; void setup() { pinMode( ledPin, OUTPUT ); } void loop() { for( int i=0; i<10; i++ ) { analogWrite( ledPin, 54+(i*20) ); delay( 1000 ); } }
/** * Serial Library: Read 2 - Control LED */ int incomingByte = 0; const int ledPin = 13; void setup() { pinMode( ledPin, OUTPUT ); Serial.begin( 9600 ); Serial.println( "'L' turn on, 'l' turn off" ); } void loop() { if( Serial.available() > 0 ) { incomingByte = Serial.read(); // input 'L' if( incomingByte == 76 ) { Serial.println( "LED on!!" ); digitalWrite( ledPin, HIGH ); } // inpit 'l' if( incomingByte == 108 ) { Serial.println( "LED off!!" ); digitalWrite( ledPin, LOW ); } } }
今年的新玩具~~玩不起樂高機器人就先玩這個。自己動手做看得到的東西,即使是簡單的LED, 可變電阻的組合的作業都覺得特別有fu。基礎先玩好,再來玩其他sensor和玩具...Make雜誌真是讚~~
PS. 看了一堆shield之後,覺得玩這個也不便宜 哈