The Alpha Geek – Geeking Out

Microcontrollers

Microcontrollers

SparkFun – Triple Axis Accelerometer Breakout – MMA7361

SparkFun SEN-09652 Mk01

SparkFun SEN-09652 Mk02

SparkFun SEN-09652 Mk03

SparkFun: SEN-09652

Description: This is a breakout board for Freescale’s MMA7361L three-axis analog MEMS accelerometer. The sensor requires a very low amount of power and has a g-select input which switches the accelerometer between ±1.5g and ±6g measurement ranges. Other features include a sleep mode, signal conditioning, a 1-pole low pass filter, temperature compensation, self test, and 0g-detect which detects linear freefall. Zero-g offset and sensitivity are factory set and require no external devices.

This breadboard friendly board breaks out every pin of the MMA7361L to a 9-pin, 0.1″ pitch header. The sensor works on power between 2.2 and 3.6VDC (3.3V optimal), and typically consumes just 400µA of current. All three axes have their own analog output.

Features:

  • Two selectable measuring ranges (±1.5g, ±6g)
  • Breadboard friendly – 0.1″ pitch header
  • Low current consumption: 400 µA
  • Sleep mode: 3 µA
  • Low voltage operation: 2.2 V – 3.6 V
  • High sensitivity (800 mV/g at 1.5g)
  • Fast turn on time (0.5 ms enable response time)
  • Self test for freefall detect diagnosis
  • 0g-Detect for freefall protection
  • Signal conditioning with low pass filter
  • Robust design, high shocks survivability

Dimensions: 0.90 x 0.50″

Don Luc

SparkFun – Triple-Axis Digital-Output Gyro Breakout – ITG-3200

SparkFun SEN-11977 Mk01

SparkFun SEN-11977 Mk02

SparkFun SEN-11977 Mk03

SparkFun: SEN-11977

Description: This is a breakout board for InvenSense’s ITG-3200, a groundbreaking triple-axis, digital output MEMS gyroscope. The ITG-3200 features three 16-bit analog-to-digital converters (ADCs) for digitizing the gyro outputs, a user-selectable internal low-pass filter bandwidth, and a Fast-Mode I2C (400kHz) interface. Additional features include an embedded temperature sensor and a 2% accurate internal oscillator.

The ITG-3200 can be powered at anywhere between 2.1 and 3.6V. For power supply flexibility, the ITG-3200 has a separate VLOGIC reference pin (labeled VIO), in addition to its analog supply pin (VDD) which sets the logic levels of its serial interface. The VLOGIC voltage may be anywhere from 1.71V min to VDD max. For general use, VLOGIC can be tied to VCC. The normal operating current of the sensor is just 6.5mA.

Communication with the ITG-3200 is achieved over a two-wire (I2C) interface. The sensor also features a interrupt output, and an optional clock input. A jumper on the top of the board allows you to easily select the I2C address, by pulling the AD0 pin to either VCC or GND; the board is shipped with this jumper tied to VCC. If you don’t plan on using the CLKIN pin, you can short the jumper on the bottom of the board to tie it to GND.

This breakout board is shipped as shown in the images. Note that there are two unpopulated resistors on the I2C lines, these can be added later by the customer if desired.

Features:

  • Digital-output X-, Y-, and Z-Axis angular rate sensors (gyros) on one integrated circuit
  • Digitally-programmable low-pass filter
  • Low 6.5mA operating current consumption for long battery life
  • Wide VDD supply voltage range of 2.1V to 3.6V
  • Standby current: 5µA
  • Digital-output temperature sensor
  • Fast Mode I2C (400kHz) serial interface
  • Optional external clock inputs of 32.768kHz or 19.2MHz to synchronize with system clock
  • Pins broken out to a breadboard friendly 7-pin 0.1″ pitch header

Dimensions: 0.87 x 0.72″ (22.22 x 18.48mm)

Don Luc

SparkFun – Tri-Axis Gyro Breakout – L3G4200D

SparkFun SEN-10612 Mk01

SparkFun SEN-10612 Mk02

SparkFun SEN-10612 Mk03

SparkFun: SEN-10612

Description: This is a breakout board for the L3G4200D low-power three-axis angular rate sensor. The L3G4200D is a MEMS motion sensor and has a full scale of ±250/±500/±2000 dps and is capable of measuring rates with a user-selectable bandwidth. These work great in gaming and virtual reality input devices, GPS navigation systems and robotics.

Features:

  • Three selectable full scales (250/500/2000 dps)
  • I2C/SPI digital output interface
  • 16 bit-rate value data output
  • 8-bit temperature data output
  • Wide supply voltage: 2.4 V to 3.6 V
  • Low voltage-compatible IOs (1.8 V)
  • Embedded power-down and sleep mode
  • Embedded temperature sensor
  • High shock survivability

Don Luc

SparkFun – XBee Explorer Regulated

SparkFun WRL-09132 Mk01

SparkFun WRL-09132 Mk02

SparkFun WRL-09132 Mk03

SparkFun: WRL-09132

Description: The XBee Explorer Regulated takes care of the 3.3V regulation, signal conditioning, and basic activity indicators (Power, RSSI and DIN/DOUT activity LEDs). It translates the 5V serial signals to 3.3V so that you can connect a 5V (down to 3.3V) system to any XBee module. The board was conveniently designed to mate directly with Arduino Pro boards for wireless bootloading and USB based configuration.

This unit works with all XBee modules including the Series 1 and Series 2.5, standard and Pro versions. Plug an XBee into this breakout and you will have direct access to the serial and programming pins on the XBee unit and will be able to power the XBee with 5V.

This board comes fully populated with 3.3V regulator (16V max input), XBee socket, four status LEDs, and a diode to allow 5V systems to communicate safely with the 3.3V XBees. This board does not include and XBee module. XBee modules sold below.

Don Luc

SparkFun – Breakout Board for XBee Module

SparkFun BOB-08276 Mk01

SparkFun BOB-08276 Mk02

SparkFun BOB-08276 Mk03

SparkFun: BOB-08276

Description: This is a simple breakout board for the popular XBee product from Digi. This board breaks out all 20 pins of the XBee to a 0.1″ standard spacing dual row header. The spacing between 0.1″ headers is 0.5″ making it breadboard DIP friendly. We highly recommend using the female sockets to avoid having to solder the XBee permanently to the breakout board. This is the PCB only. Please order the accompanying 2mm sockets (you’ll need 2!) and 0.1″ headers below.

Don Luc

SparkFun – XBee 1mW Chip Antenna – Series 1 (802.15.4)

SparkFun WRL-08664 Mk01

SparkFun WRL-08664 Mk02

SparkFun WRL-08664 Mk03

SparkFun: WRL-08664

Description: This is the very popular 2.4GHz XBee module from Digi. These modules take the 802.15.4 stack (the basis for Zigbee) and wrap it into a simple to use serial command set. These modules allow a very reliable and simple communication between microcontrollers, computers, systems, really anything with a serial port! Point to point and multi-point networks are supported.

Features:

  • 3.3V @ 50mA
  • 250kbps Max data rate
  • 1mW output (+0dBm)
  • 300ft (100m) range
  • Built-in antenna
  • Fully FCC certified
  • 6 10-bit ADC input pins
  • 8 digital IO pins
  • 128-bit encryption
  • Local or over-air configuration
  • AT or API command set

Don Luc

SparkFun – Arduino Fio

SparkFun DEV-10116 Mk01

SparkFun DEV-10116 Mk02

SparkFun DEV-10116 Mk03

SparkFun: DEV-10116

Description: The Arduino Funnel I/O (Fio) is a board designed by Shigeru Kobayashi, based on the original design from LilyPad.

Funnel is a toolkit to sketch your idea physically, and consists of software libraries and hardware. By using Funnel, the user can interface to sensors and/or actuators with various programming languages such as ActionScript 3, Processing, and Ruby.

Arduino Fio is compatible with Funnel. It has connections for a Lithium Polymer battery and includes a charge circuit over USB. An XBee socket is available on the bottom of the board. The Fio has been designed to be wirelessly reprogrammable. Checkout our tutorial on wireless bootloading!

Note: The miniUSB connector is used for battery charging only. To bootload new firmware, you will need an external serial connection over an FTDI Basic, FTDI cable, or other serial connection. Check the related products below.

Note: The XBee socket and FTDI connection live on the same TX/RX pins of the ATmega328. You will need to remove the XBee module while reprogramming over serial. We recommend using a wireless bootloader whenever possible to avoid this step.

Note: A portion of this sale is given back to Arduino LLC to help fund continued development of new tools and new IDE features.

Features:

  • ATmega328V running at 8MHz
  • Arduino Bootloader
  • XBee socket
  • Lithium Polymer battery compatible
  • MCP73831T LiPo Charger
  • Reset button
  • On/Off Switch
  • Status/Charge/RSSI LEDs

Don Luc

SparkFun – Arduino Pro Mini 328 – 3.3V/8MHz

SparkFun DEV-11114 Mk01

SparkFun DEV-11114 Mk02

SparkFun: DEV-11114

Description: It’s blue! It’s thin! It’s the Arduino Pro Mini! SparkFun’s minimal design approach to Arduino. This is a 3.3V Arduino running the 8MHz bootloader. Arduino Pro Mini does not come with connectors populated so that you can solder in any connector or wire with any orientation you need. We recommend first time Arduino users start with the Uno R3. It’s a great board that will get you up and running quickly. The Arduino Pro series is meant for users that understand the limitations of system voltage (3.3V), lack of connectors, and USB off board.

We really wanted to minimize the cost of an Arduino. In order to accomplish this we used all SMD components, made it two layer, etc. This board connects directly to the FTDI Basic Breakout board and supports auto-reset. The Arduino Pro Mini also works with the FTDI cable but the FTDI cable does not bring out the DTR pin so the auto-reset feature will not work. There is a voltage regulator on board so it can accept voltage up to 12VDC. If you’re supplying unregulated power to the board, be sure to connect to the “RAW” pin on not VCC.

The latest and greatest version of this board breaks out the ADC6 and ADC7 pins as well as adds footprints for optional I2C pull-up resistors! We also took the opportunity to slap it with the OSHW logo.

Dimensions: 0.7×1.3″ (18x33mm)

Features:

  • ATmega328 running at 8MHz with external resonator (0.5% tolerance)
  • Low-voltage board needs no interfacing circuitry to popular 3.3V devices and modules (GPS, accelerometers, sensors, etc)
  • 0.8mm Thin PCB
  • USB connection off board
  • Weighs less than 2 grams!
  • Supports auto-reset
  • 3.3V regulator
  • Max 150mA output
  • Over current protected
  • DC input 3.3V up to 12V
  • On board Power and Status LEDs
  • Analog Pins: 8
  • Digital I/Os: 14

Don Luc

Project #3 – LCD Shield – Mk5

LCD Shield Mk5.01

LCD Shield Mk5.02

LCD Shield Mk5.03

LCD Shield Mk5.04

LCD Shield Mk5.05

LCD Shield Mk5.06

LCDShieldMk5.1.ino

// ***** Don Luc *****
// Software Version Information
// 5.1

// include the library code:
#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>
#include <SPI.h>
#include <RTClib.h>
#include <RTC_DS3231.h>
#include <OneWire.h> 

RTC_DS3231 RTC;

#define SQW_FREQ DS3231_SQW_FREQ_1024     //0b00001000   1024Hz

Adafruit_RGBLCDShield RGBLCDShield = Adafruit_RGBLCDShield();

// These #defines make it easy to set the backlight color
#define OFF 0x0
#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

int yy = 0;
uint8_t momentaryButton = 0;

// Chorno
boolean isChorno = true;
boolean isChor = false;
char datastr[100];
int zz = 0;
// LDR (light dependent resistor)
int LDR_Pin = A0;
int LDRReading = 0;
String LDR = "";
// Temperature chip i/o
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
OneWire ds(DS18S20_Pin);  // on digital pin 2
float temperature = 0;
String tempZ = "";
// Potentiometer
int potPin = A2;    // select the input pin for the potentiometer
int ledPin = 4;   // select the pin for the LED
boolean isVal = false;
int potPot = 0;
String cap = "";

void loop() {

  RGBLCDShield.clear();
    
  // ChronoDot
  // set the cursor to column 0, line 1
  RGBLCDShield.setCursor(0, 1);
  timeChrono();
  // LDR (light dependent resistor)
  timeLDR();
  // Temperature chip i/o
  temperatu();
  // Potentiometer
  getPotentio();
    
  momentaryButton = RGBLCDShield.readButtons();

  // set the cursor to column 0, line 0
  RGBLCDShield.setCursor(0,0);

  switch ( yy ) {
    case 1:
      // LDR (light dependent resistor)
      isLDR();
      break;
    case 2:
      // Temperature chip i/o
      isTe();
      break;
    case 3:
      // Potentiometer
      isCap();
      break;
    case 4:
      // Yellow
      RGBLCDShield.print("YELLOW - RIGHT");
      break;
    case 5:
      // OFF
      RGBLCDShield.print("OFF");
      break;
    default: 
      yy = 0;
      RGBLCDShield.print("Don Luc!!!");
   }
   
  if ( momentaryButton ) {
    
    if ( momentaryButton & BUTTON_UP ) {
      isChorno = true;
      yy = 1;
      // LDR (light dependent resistor)
      RGBLCDShield.setBacklight(GREEN);
    }
    
    if ( momentaryButton & BUTTON_DOWN ) {
      isChorno = true;
      yy = 2;
      // Temperature chip i/o
      RGBLCDShield.setBacklight(RED);
    }
    
    if ( momentaryButton & BUTTON_LEFT ) {
      isChorno = true;
      yy =3;
      // Potentiometer
      RGBLCDShield.setBacklight(BLUE);
    }
    
    if ( momentaryButton & BUTTON_RIGHT ) {
      isChorno = true;
      yy = 4;
      //RGBLCDShield.print("YELLOW - RIGHT");
      RGBLCDShield.setBacklight(YELLOW);
    }
    
    if ( momentaryButton & BUTTON_SELECT ) {
      isChorno = false;
      yy = 5;
      //RGBLCDShield.print("OFF");
      RGBLCDShield.setBacklight(OFF);
    }
    
  }
  
  delay(5000);
  
}

setup.ino

void setup() {    
   
  // set up the LCD's number of columns and rows: 
  RGBLCDShield.begin(16, 2);
  RGBLCDShield.setBacklight(VIOLET);
  
  // ChronoDot
  setupChrono();
  
  // Pot
  pinMode(ledPin, OUTPUT);
    
}

ChronoDot.ino

void setupChrono() {

  RTC.begin();
  
  DateTime now = RTC.now();
  DateTime compiled = DateTime(__DATE__, __TIME__);
  RTC.getControlRegisterData( datastr[0] );  
   
}

void timeChrono() {
 
    DateTime now = RTC.now();
    DateTime isNow (now.unixtime() + 5572 * 86400L + 26980);

    if ( isChorno == true )
    {
      if ( isChor == false ) 
        {          
          isChor = true;
          RGBLCDShield.print(isNow.year(), DEC);
          RGBLCDShield.print('/');
          RGBLCDShield.print(isNow.month(), DEC);
          RGBLCDShield.print('/');
          RGBLCDShield.print(isNow.day(), DEC);
          RGBLCDShield.print(' ');
          RGBLCDShield.print(' ');
        }
        else if ( isChor == true )
        {
          isChor = false;
          RGBLCDShield.print(isNow.hour(), DEC);
          RGBLCDShield.print(':');
          RGBLCDShield.print(isNow.minute(), DEC);
          RGBLCDShield.print(':');
          RGBLCDShield.print(isNow.second(), DEC);
          RGBLCDShield.print(' ');
          RGBLCDShield.print(' ');
        }
    }
    
}

getLDR.ino

void timeLDR() {
  
  // LDR
  LDRReading = analogRead(LDR_Pin);
 
}

void isLDR() {
  
  LDR = "LDR: ";
  LDR.concat(LDRReading); 
  // LDR (light dependent resistor)
  RGBLCDShield.print( LDR ); 
  
} 

getPot.ino

void getPotentio() {
  
    if ( isVal == false ) 
    {
       isVal = true;
       digitalWrite(ledPin, HIGH);  // turn the ledPin on
    }
    else if ( isVal == true )
    {
       isVal = false;
       digitalWrite(ledPin, LOW);  // turn the ledPin off
    }       
    potPot = analogRead(potPin);    // read the value from the sensor
  
}

void isCap(){
  
    cap = "Pot: ";
    cap.concat(potPot);
    RGBLCDShield.print( cap );

}

getTemperature.ino

float getTemp() {
  
  //returns the temperature from one DS18S20 in DEG Celsius
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      return -1001;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      return -1002;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      return -1003;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE); // Read Scratchpad

  
  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }
  
  ds.reset_search();
  
  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;
  
  return TemperatureSum;

}

void temperatu(){
  
  temperature = getTemp();
 
}

void isTe() {
  
  tempZ = "Temp: ";
  tempZ.concat(temperature);
  tempZ.concat("C");
  RGBLCDShield.print( tempZ );
  
}

Don Luc

Project #3 – LCD Shield – Mk4

LCD Shield Mk4.01

LCD Shield Mk4.02

LCD Shield Mk4.03

LCD Shield Mk4.04

LCD Shield Mk4.05

LCD Shield Mk4.06

LCD Shield Mk4.07

LCD Shield Mk4.08

LCD Shield Mk4.09

LCD Shield Mk4.10

LCD Shield Mk4.11

LCD Shield Mk4.12

LCD Shield Mk4.13

LCD Shield Mk4.14

LCD Shield Mk4.15

LCD Shield Mk4.16

LCD Shield Mk4.17

LCD Shield Mk4.18

LCD Shield Mk4.19

LCD Shield Mk4.20

LCD Shield Mk4.21

LCD Shield Mk4.22

1 X Mini Photocell

1 X Resistor 10k Ohm

1 X One Wire Digital Temperature Sensor – DS18B20

1 X Resistor 4.7k Ohm

1 X Trimpot 10K with Knob

1 X Resistor 1.65k Ohm

1 X 3MM Low Current Red LED

14 X Jumper Wires Premium 3″ M/M

1 X Project #3 – LED Shield – Mk3

LCDShieldMk4.3.ino

// ***** Don Luc *****
// Software Version Information
// 4.3

// include the library code:
#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>
#include <SPI.h>
#include <RTClib.h>
#include <RTC_DS3231.h>
#include <OneWire.h> 

RTC_DS3231 RTC;

#define SQW_FREQ DS3231_SQW_FREQ_1024     //0b00001000   1024Hz

Adafruit_RGBLCDShield RGBLCDShield = Adafruit_RGBLCDShield();

// These #defines make it easy to set the backlight color
#define OFF 0x0
#define RED 0x1
#define YELLOW 0x3
#define GREEN 0x2
#define TEAL 0x6
#define BLUE 0x4
#define VIOLET 0x5
#define WHITE 0x7

// Chorno
boolean isChorno = false;
char datastr[100];
// LDR (light dependent resistor)
int LDR_Pin = A0;
String LDR = "";
// Temperature chip i/o
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
OneWire ds(DS18S20_Pin);  // on digital pin 2
String tempZ = "";
// Potentiometer
int potPin = A2;    // select the input pin for the potentiometer
int ledPin = 4;   // select the pin for the LED
boolean isVal = false;
int potPot = 0;
String cap = "";

void loop() {

  // timeChrono();
  timeChrono();
  
  uint8_t momentaryButton = RGBLCDShield.readButtons();

  if ( momentaryButton ) {

    RGBLCDShield.clear();
  
    RGBLCDShield.setCursor(0,0);
    
    if ( momentaryButton & BUTTON_UP ) {
      timeLDR();
      RGBLCDShield.print( LDR );
      RGBLCDShield.setBacklight(GREEN);
    }
    
    if ( momentaryButton & BUTTON_DOWN ) {
      temperatu();
      RGBLCDShield.print( tempZ );
      RGBLCDShield.setBacklight(RED);
    }
    
    if ( momentaryButton & BUTTON_LEFT ) {
      getPotentio();
      RGBLCDShield.print( cap );
      RGBLCDShield.setBacklight(BLUE);
    }
    
    if ( momentaryButton & BUTTON_RIGHT ) {
      RGBLCDShield.print("YELLOW - RIGHT");
      RGBLCDShield.setBacklight(YELLOW);
    }
    
    if ( momentaryButton & BUTTON_SELECT ) {
      RGBLCDShield.print("OFF");
      RGBLCDShield.setBacklight(OFF);
    }
        
  }
  
  delay(3000);
  
}

setup.ino

void setup() {    
   
  // set up the LCD's number of columns and rows: 
  RGBLCDShield.begin(16, 2);
  RGBLCDShield.print("Don Luc!!!");
  RGBLCDShield.setBacklight(VIOLET);
  
  // ChronoDot
  setupChrono();
  
  // Pot
  pinMode(ledPin, OUTPUT);
   
}

ChronoDot.ino

void setupChrono() {

  RTC.begin();
  
  DateTime now = RTC.now();
  DateTime compiled = DateTime(__DATE__, __TIME__);
  RTC.getControlRegisterData( datastr[0] );  
 
}

void timeChrono() {
 
    DateTime now = RTC.now();
    DateTime isNow (now.unixtime() + 5572 * 86400L + 26980);
    
    // set the cursor to column 0, line 1
    RGBLCDShield.setCursor(0, 1);
    
    if ( isChorno == false ) 
    {
      isChorno = true;
      RGBLCDShield.print(isNow.year(), DEC);
      RGBLCDShield.print('/');
      RGBLCDShield.print(isNow.month(), DEC);
      RGBLCDShield.print('/');
      RGBLCDShield.print(isNow.day(), DEC);
      RGBLCDShield.print(' ');
      RGBLCDShield.print(' ');
    }
    else if ( isChorno == true )
    {
      isChorno = false;
      RGBLCDShield.print(isNow.hour(), DEC);
      RGBLCDShield.print(':');
      RGBLCDShield.print(isNow.minute(), DEC);
      RGBLCDShield.print(':');
      RGBLCDShield.print(isNow.second(), DEC);
      RGBLCDShield.print(' ');
      RGBLCDShield.print(' ');
    }

}

getLDR.ino

void timeLDR() {
  
  // LDR
  int LDRReading = analogRead(LDR_Pin);
  LDR = "LDR: ";
  LDR.concat(LDRReading); 

}

getPot.ino

void getPotentio() {
  
    if ( isVal == false ) 
    {
       isVal = true;
       digitalWrite(ledPin, HIGH);  // turn the ledPin on
    }
    else if ( isVal == true )
    {
       isVal = false;
       digitalWrite(ledPin, LOW);  // turn the ledPin off
    }       
    potPot = analogRead(potPin);    // read the value from the sensor
    cap = "Pot: ";
    cap.concat(potPot);

}

getTemperature.ino

float getTemp() {
  
  //returns the temperature from one DS18S20 in DEG Celsius
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      return -1001;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      return -1002;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      return -1003;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE); // Read Scratchpad

  
  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }
  
  ds.reset_search();
  
  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;
  
  return TemperatureSum;

}

void temperatu(){
  
  float temperature = getTemp();
  tempZ = "Temp: ";
  tempZ.concat(temperature);
  tempZ.concat("C");

}

Don Luc

Categories
Archives