Compass Hat / hat.pde

Leigh Honeywell 6f3c7a3 











Leigh Honeywell 9ab5dda 







Leigh Honeywell 6f3c7a3 













Leigh Honeywell 9ab5dda 





Leigh Honeywell 6f3c7a3 















Leigh Honeywell 9ab5dda 







Leigh Honeywell 6f3c7a3 
Leigh Honeywell 9ab5dda 

















Leigh Honeywell 6f3c7a3 
Leigh Honeywell 9ab5dda 
/*

LED and haptic buzzer display for an HMC6352 compass
 
*/

#include <hmc6352.h>
#include <Wire.h>

Hmc6352 hmc6352;

int buzzerPin = 3;

//Pin connected to latch pin (ST_CP) of 74HC595
const int latchPin = 8;
//Pin connected to clock pin (SH_CP) of 74HC595
const int clockPin = 12;
////Pin connected to Data in (DS) of 74HC595
const int dataPin = 11;

int heading =  3;

// The setup() method runs once, when the sketch starts
  
void setup()   {
  //setup for the compass
  Serial.begin(9600);
  delay(100);
  
  Serial.print("RST\r\n");delay(100);  
 
  // initialize the digital pin as an output:
  pinMode(buzzerPin, OUTPUT);
  analogWrite(buzzerPin, LOW);
  
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);

}

// the loop() method runs over and over again,
// as long as the Arduino has power

void loop()                     
{
  hmc6352.wake();
  int heading = (int)hmc6352.getHeading();
  hmc6352.sleep();
 
  Serial.print(heading,DEC);
  Serial.print(" raw heading\r\n");
  heading = (int)(heading / 90);
  Serial.print(heading,DEC);
  Serial.print(" comparison\r\n");
  // ASCII '0' through '9' characters are
  // represented by the values 48 through 57.
  // so if the user types a number from 0 through 9 in ASCII, 
  // you can subtract 48 to get the actual value:
  int bitToSet = heading + 1;
  
  // write to the shift register with the correct bit set high:
  registerWrite(bitToSet, HIGH);
  }

// This method sends bits to the shift register:
void registerWrite(int whichPin, int whichState) {
// the bits you want to send
  byte bitsToSend = 0;

  // turn off the output so the pins don't light up
  // while you're shifting bits:
  digitalWrite(latchPin, LOW);

  // turn on the next highest bit in bitsToSend:
  bitWrite(bitsToSend, whichPin, whichState);

  // shift the bits out:
  shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend);

    // turn on the output so the LEDs can light up:
  digitalWrite(latchPin, HIGH);
}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.