Digital Electronics
Digital Electronics
Project #4: SparkFun Decade Resistance Box – Mk05
SparkFun Decade Resistance Box
Don Luc
Project #4: SparkFun Decade Resistance Box – Mk04
Project #4: SparkFun Decade Resistance Box – Mk03
Project #4: SparkFun Decade Resistance Box – Mk02
Project #4: SparkFun Decade Resistance Box – Mk01
SparkFun: SparkFun Decade Resistance Box
SparkFun: KIT-13006
SparkFun Decade Resistance Box
Description
This is the SparkFun Decade Resistance Box, an involved PTH soldering kit that allows you to quickly and accurately dial in a specific resistance value between 0 and 999,990 Ohm, in 10 Ohm increments. The concept is simple, a decade box is a tool that contains resistors of many values that can be accessed via mechanical switches. All you need to do is just adjust the knobs to output any of the discrete resistances offered by the box. Once assembled, each kit will have controls that correspond to the digits in a decimal number – a control for the tens position, a control for the hundreds position, and so on.
Includes
1 x Decade Resistance Box PCB
1 x Red Binding Post
1 x Black Binding Post
5 x Rotary Switch – 1-pole 10-position, with dress washer and hex nut
9 x 10 Ohm Resistor – ¼ W, 1%
9 x 100 Ohm Resistor – ¼ W, 1%
9 x 1000 Ohm Resistor – ¼ W, 1%
9 x 100K Ohm Resistor – ¼ W, 1%
9 x 10K Ohm Resistor – ¼ W, 1%
Don Luc
Programming: Tri-Axis Gyro – L3G4200D – Parts
1 x Breadboard
1 X Arduino UNO
1 X SparkFun Tri-Axis Gyro Breakout – L3G4200D
5 X Jumper Wires Premium 3″ M/M
Don Luc
Programming: Tri-Axis Gyro – L3G4200D – Arduino
DonLuc1802Mk03.ino
// ***** Don Luc ***** // Software Version Information // DonLuc1802Mk03 1.0 #include <Wire.h> #define CTRL_REG1 0x20 #define CTRL_REG2 0x21 #define CTRL_REG3 0x22 #define CTRL_REG4 0x23 #define CTRL_REG5 0x24 int L3G4200D_Address = 105; //I2C address of the L3G4200D int x; int y; int z; void setup(){ Wire.begin(); Serial.begin(9600); Serial.println("starting up L3G4200D"); setupL3G4200D(2000); // Configure L3G4200 - 250, 500 or 2000 deg/sec delay(1500); //wait for the sensor to be ready } void loop(){ getGyroValues(); // This will update x, y, and z with new values Serial.print("X:"); Serial.print(x); Serial.print(" Y:"); Serial.print(y); Serial.print(" Z:"); Serial.println(z); delay(100); //Just here to slow down the serial to make it more readable } void getGyroValues(){ byte xMSB = readRegister(L3G4200D_Address, 0x29); byte xLSB = readRegister(L3G4200D_Address, 0x28); x = ((xMSB << 8) | xLSB); byte yMSB = readRegister(L3G4200D_Address, 0x2B); byte yLSB = readRegister(L3G4200D_Address, 0x2A); y = ((yMSB << 8) | yLSB); byte zMSB = readRegister(L3G4200D_Address, 0x2D); byte zLSB = readRegister(L3G4200D_Address, 0x2C); z = ((zMSB << 8) | zLSB); } int setupL3G4200D(int scale){ // Enable x, y, z and turn off power down: writeRegister(L3G4200D_Address, CTRL_REG1, 0b00001111); // If you'd like to adjust/use the HPF, you can edit the line below to configure CTRL_REG2: writeRegister(L3G4200D_Address, CTRL_REG2, 0b00000000); // Configure CTRL_REG3 to generate data ready interrupt on INT2 // No interrupts used on INT1, if you'd like to configure INT1 // or INT2 otherwise, consult the datasheet: writeRegister(L3G4200D_Address, CTRL_REG3, 0b00001000); // CTRL_REG4 controls the full-scale range, among other things: if(scale == 250){ writeRegister(L3G4200D_Address, CTRL_REG4, 0b00000000); }else if(scale == 500){ writeRegister(L3G4200D_Address, CTRL_REG4, 0b00010000); }else{ writeRegister(L3G4200D_Address, CTRL_REG4, 0b00110000); } // CTRL_REG5 controls high-pass filtering of outputs, use it // if you'd like: writeRegister(L3G4200D_Address, CTRL_REG5, 0b00000000); } void writeRegister(int deviceAddress, byte address, byte val) { Wire.beginTransmission(deviceAddress); // start transmission to device Wire.write(address); // send register address Wire.write(val); // send value to write Wire.endTransmission(); // end transmission } int readRegister(int deviceAddress, byte address){ int v; Wire.beginTransmission(deviceAddress); Wire.write(address); // register to read Wire.endTransmission(); Wire.requestFrom(deviceAddress, 1); // read a byte while(!Wire.available()) { // waiting } v = Wire.read(); return v; }
Don Luc