SparkFun will be closing early at 3:30 Friday 5/27 and remain closed Monday for Memorial Day (5/30). Orders placed after 2pm MT on Friday (5/27) will process and ship out on Tuesday (5/31).

Member #142608

Member Since: July 15, 2010

Country: United States

  • For the backlight voltage being specified at 4.2V or 4.6V, depending on what part of the data sheet you look at, I used a small signal diode (1N914) in series with a 10 ohm resistor to drop my 5 V supply voltage a little. My display is drawing 17mA while showing text. Actually, that includes an ATtiny84 and pressure sensor, but probably most of the current is going to the LCD. One oddball glitch - I can’t get the cursor to turn off. The command is 0b00001DCB where C is 0 for cursor off and B is 0 for cursor blink off. I finally had to change C to 1 (cursor ON) to get the blinking to stop. I still have a static underscore cursor, but that’s not as bad has having the whole digit blinking on and off. Very strange. Nick

  • Finally got mine working pretty well. I also tried reading EEPROM location 0x00 to get the slave address, known to be 0x42 and initially got 0xff, but I guess a lot of things could give you that. One thing to remember if you write parameters and then want to read, you must first do a Start with R/W bit clear. Follow the i2c address & R/W bit with your parameter(s). Then do a Stop, then another Start, this time with R/W bit set and do as many reads as the protocol calls for. (Two, in the case of the ‘A’ command, which it the typical way to read a heading.)

    I’m using an ATtiny4313. It doesn’t have a TWI (I2C) module, so I’m using bit-banging code written by Peter Fluery and tweaked a tiny bit for my MCU. The Fluery code is in assembler and designed to assemble in-line with a GCC ‘C’ project.

    Once I got it going I had a heck of a time with it being wildly inaccurate and not repeatable. Finally moved my test set-up outside on a wooden table with a wooden lazy susan on top, to allow rotation. I used a level to keep the table and lazy susan reasonably level. I’m finally getting where I see what I think is decent accuracy and repeatability. At least at the four points of the compass, I’m seeing the same reading at each rotation to the same marked point.

    I think the need to be level is a pretty big deal (up to 2 degrees error for each 1 degree of tilt per the data sheet). And steel in the area is too. I’ll have to find how how close I can be. I’d like to put this thing on the aluminum boom of my ham beam antenna and let it report the heading. But the tower itself is steel and so may have an effect.

    Back to code - be sure to put in delays >= the times that the data sheet says it takes to do certain operations. I also added a routine to make sure the SCL line is high before I send a request. Per I2C standards, a slave can pull it low to force the master to wait until it’s ready.


No public wish lists :(