Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Project Documentation

Arduino Mega 2560 I2C Temperature Sensor Interface

Image of Arduino Mega 2560 I2C Temperature Sensor Interface

Circuit Documentation

Summary of the Circuit

This circuit consists of an Arduino Mega 2560 microcontroller board interfaced with an LM75 temperature sensor. The LM75 sensor communicates with the Arduino Mega 2560 via the I2C protocol, utilizing the SDA (data line) and SCL (clock line) connections. The sensor is powered by the 5V output from the Arduino and shares a common ground. The purpose of this circuit is to scan and detect I2C devices, specifically to read temperature data from the LM75 sensor.

Component List

Arduino Mega 2560

  • Description: A microcontroller board based on the ATmega2560.
  • Pins: IOREF, RESET, 3V3, 5V, GND, VIN, Analog Pins (A0-A15), Digital Pins (D0-D53), PWM Pins, AREF, SDA, SCL.
  • Purpose: Acts as the main controller for the circuit, running the embedded code to communicate with I2C devices and process sensor data.

LM75 Temperature Sensor

  • Description: An I2C digital temperature sensor and thermal watchdog.
  • Pins: VCC, GND, SDA, SCL, OS.
  • Purpose: Provides temperature readings to the Arduino Mega 2560 via I2C communication.

Wiring Details

Arduino Mega 2560

  • 5V connected to LM75 VCC
  • GND connected to LM75 GND
  • D21/SCL connected to LM75 SCL
  • D20/SDA connected to LM75 SDA

LM75 Temperature Sensor

  • VCC connected to Arduino Mega 2560 5V
  • GND connected to Arduino Mega 2560 GND
  • SCL connected to Arduino Mega 2560 D21/SCL
  • SDA connected to Arduino Mega 2560 D20/SDA

Documented Code

I2C Scanner Code for Arduino Mega 2560

/*I2C_scanner
  This sketch tests standard 7-bit addresses.
  Devices with higher bit address might not be seen properly.*/

#include <Wire.h>

void setup() {
  Wire.begin();

  Serial.begin(9600);
  while (!Serial);
  Serial.println("\nI2C Scanner");
}

void loop() {
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.print(address, HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);
}

This code is designed to run on the Arduino Mega 2560 and scans for devices on the I2C bus, reporting any found devices to the serial monitor. It is particularly useful for verifying connections and ensuring that the LM75 temperature sensor is properly communicating with the Arduino.