ה Accelerometer משתמש למדידת תאוצה (acceleration) או tilt, ויברציות, תנועה ומיקום. ראו תיאור בערך ב Wikipedia. הרכיבים קיימים באופק Axes אחד X, שניים Y או שלושה Z ובדרגות רגישות שונות (למשל בין 2g+ ל 2g-).
השימוש ב Accelerometer קיים כבר שנים כאלמנט נסתר ביישומים מסחריים כמו מכוניות אבל לאחרונה גם בתוך ממשקי משתמש במכשירים חדשניים כמו ה Nintendo Wii ו ה iphone.
קיימים דגמים שונים, משתנים ע”ם כמות הצירים ורגישות.
מיוצר ע”י Analog Devices. נקנה ב Sparkfun.
הכנה:
לפני תחילת העבודה יש להלחים כבלים ל4 הPIN שעל הרכיב – ל X, Y , GND, 5V
הסבר טכני:
בניית מעגל:
הרכיב הוא בעל 2 צירים – X ו Y (למרות שכתוב עליו גם Z).
החיבורים:
| Accelerometer PIN | Arduino PIN |
| X | Analog PIN 0-5 |
| Y | Analog PIN 0-5 |
| GND | GND |
| 5V | 5V |
תוכנה:
עקרונית, קוראים את הערכים ע”י שימוש ב AnalogRead. ראו מצגת מסיכום שיעור Analog I/O.
תוכנות דוגמא לחישוב זוית הטייה (tilt):
int xpin = 3; // x-axis pin
int ypin = 1; // y-axis pin
// varibales for holding the current angles for x and y
// The angle are from +90 to -90
int xAngle = 0;
int yAngle = 0;
// printout Delay
int printDelayCounter = 0;
void setup()
{
Serial.begin(9600);
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
}
void loop()
{
xAngle = readAcc(xpin);
yAngle = readAcc(ypin);
// print out to serial port
printToSerial();
delay(5);
}
// reads the axis's acceleration value (form the wanted pin)
// The returned value ranges from -90 to 90
int readAcc(int pinNum){
int angle = (float(analogRead(pinNum)-510)/152)*float(90);
if (abs(angle) > 90){
angle = 90 * ((angle > 0) ? 1 : -1);
}
return angle;
}
// print the acceleration values to Serial
void printToSerial(){
Serial.print("x=");
Serial.print(xAngle);
Serial.print("; y=");
Serial.print(yAngle);
Serial.println();
}
