_21_compass

Gibt die Werte dem Kompass über die serielle Schnittstelle aus

#include <Wire.h> 

int compassAddress = 0x42 >> 1;  // From datasheet compass address is 0x42
 // shift the address 1 bit right, the Wire library only needs the 7
 // most significant bits for the address
int reading = 0; 

void setup() 
{ 
 Wire.begin();                // join i2c bus (address optional for master) 
 Serial.begin(9600);          // start serial communication at 9600bps 
 pinMode(4, OUTPUT);
 digitalWrite(4, HIGH);
} 
 
void loop() 
{ 
 // step 1: instruct sensor to read echoes 
 Wire.beginTransmission(compassAddress);  // transmit to device
 // the address specified in the datasheet is 66 (0x42) 
 // but i2c adressing uses the high 7 bits so it's 33 
 Wire.send('A');          // command sensor to measure angle  
 Wire.endTransmission();  // stop transmitting 
 
 // step 2: wait for readings to happen 
 delay(10);               // datasheet suggests at least 6000 microseconds 
 
 // step 3: request reading from sensor 
 Wire.requestFrom(compassAddress, 2);  // request 2 bytes from slave device #33 
 
 // step 4: receive reading from sensor 
 if(2 <= Wire.available())     // if two bytes were received 
 { 
 reading = Wire.receive();   // receive high byte (overwrites previous reading) 
 reading = reading << 8;     // shift high byte to be high 8 bits 
 reading += Wire.receive();  // receive low byte as lower 8 bits 
 reading /= 10;
 Serial.println(reading);    // print the reading 
 } 

 delay(500);                   // wait for half a second 
} 

Dieses Beispiel herunterladen

Aktuelle Beiträge

Servos – alternative Bewegungsbeispiele

Unter diesem Link gibt es eine zip-Datei mit verschiedenen Bewegungsarten für Servo-Motoren. Hier eine kurze Beschreibung der einzelnen Beispiele:

  • completelyRandom: Nach zufällig ausgewählten Zeitabschnitten denkt sich das Programm neue Zufalls-Zielpositionen und -Geschwindigkeiten für den Servo aus.
  • servoChameleon: Der Servo bewegt sich ein Stück in eine Richtung und dann ein etwas kleineres Stück wieder zurück, dann wieder hin, usw. Wenn er an einer Seite angekommen ist, läuft das ganze rückwärts.
  • sinMovement: Servo bewegt sich wie von Sinus-Kurven bekannt, dh. er beginnt langsam an einer Seite, wird auf seinem Weg zur Mittelposition schneller und dann wieder langsamer, je näher er der anderen Seite kommt. Dann geschieht das Selbe rückwärts.
  • slowlyGettingFaster: Wie sinMovement, nur wird der Servo gegen Ende einer Bewegung nicht langsamer.
  • tickBackAndForth: Servo “tickt” von links nach rechts und wieder zurück, dh. er macht immer nur kleine Schritte wie ein Uhrzeiger.
  • verySlow: Servo bewegt sich sehr langsam von links nach rechts und wieder zurück. Weil Servos nur ganze Zahlen von 0-180 entgegennehmen, gibt es auch hier ein “Ticken”. Eine komplett weiche Bewegung ist leider mit Standard-Servos unmöglich.

Viel Spaß beim Tüfteln!

Marius

Veröffentlicht in Labor
  1. .ino! Kommentare deaktiviert
  2. Überarbeitung der Beispiele Kommentare deaktiviert
  3. Experience Design im Sommersemester 11 Kommentare deaktiviert
  4. Physical Computing I & II Kommentare deaktiviert