不知道為啥買的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之後,覺得玩這個也不便宜 哈