| Linduino 1.3.0 Linear Technology Arduino-Compatible Demonstration Board

Data Structures | Macros | Enumerations
EasySMU_IOpanel.h File Reference
Example Designs » EasySMU: I2C Address Translator Demonstration and a Simple Multi-Channel Source Measurement Unit

Header File for EasySMU_IOpanel Library That Enables Touchscreen Control of EasySMU. More...

## Detailed Description

Header File for EasySMU_IOpanel Library That Enables Touchscreen Control of EasySMU.

User Guide
Schematic
Top-Level Linduino Firmware for EasySMU
EasySMU Class Reference
EasySMU_IOpanel Class Reference
EasySMU Webpage

    LTC4316: Single I2C/SMBus Address Translator
    LT1970A: Power Op Amp with Adjustable Precision Current Limit
    LT5400:  Quad Matched Resistor Network
    LTC2655: Quad I2C 16-/12-Bit Rail-to-Rail DACs with 10ppm/°C Max Reference
    LTC3265: Low Noise Dual Supply with Boost and Inverting Charge Pumps
    LTC2051: Dual Zero-Drift Operational Amplifier
    LT3010:  50mA, 3V to 80V Low Dropout Micropower Linear Regulator
    LT1991:  Precision, 100µA Gain Selectable Amplifier
    LTC6655: 0.25ppm Noise, Low Drift Precision Reference
    LTC2485: 24-Bit ΔΣ ADC with Easy Drive Input Current Cancellation and I2C Interface

    EasySMU is a single-channel ±12V/40mA programmable-voltage/programmable-current
    source with accurate voltage/current measurement capability. The LTC4316 I2C
    Address Translator enables up to eight independent EasySMUs to be controlled
    by a single I2C master.

    In this demonstration, each EasySMU board contains four I2C slaves and the
    associated components to implement a single-channel ±12V/40mA programmable-
    voltage/programmable-current source. The LTC4316 translates the I2C addresses
    of each EasySMU to a unique set of addresses, enabling up to eight EasySMU
    boards to be stacked on a single Linduino (I2C master). In this form, it
    resembles a multi-channel automated test system. Alternatively, an optional
    touchscreen allows the user to interactively control up to four channels,
    forming a compact multi-channel programmable-voltage/programmable-current
    bench source for lab testing, powered from a single 12V AC wall adapter.

    The primary purpose of the EasySMU is to demonstrate the LTC4316 I2C Address
    Translator. The programmable-voltage/programmable-current source and meter
    also provide a convenient demonstration of the associated components: LT1970A,
    LT5400-3, LTC2655-H, LTC3265, LTC2051, LT3010, LT1991, LTC6655, and LTC2485.
    While the EasySMU is not designed to demonstrate the ultimate performance that
    can be obtained from each of those components, the EasySMU does provide
    impressive results from a reasonably simple circuit.

Copyright 2018(c) Analog Devices, Inc.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of Analog Devices, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
- The use of this software may or may not infringe the patent rights of one or more patent holders. This license does not release you from the requirement that you obtain separate licenses from these patent holders to use this software.
- Use of the software either in source or binary form, must be run on or directly connected to an Analog Devices Inc. component.

THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, INTELLECTUAL PROPERTY RIGHTS, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Header File for EasySMU_IOpanel Library That Enables Touchscreen Control of EasySMU

Definition in file EasySMU_IOpanel.h.

Go to the source code of this file.

## Data Structures
class | EasySMU_IOpanel
| The EasySMU_IOpanel class provides an interface between the EasySMU and a touchscreen. More...

## Macros
#define | ADAFRUIT_TFT_TOUCHSHIELD_1947
#define | TFT_CS 10
#define | TFT_DC 9
#define | _LCD_WIDTH 320
| width of Adafruit TFT display in pixels More...
#define | _LCD_HEIGHT 240
| height of Adafruit TFT display in pixels More...
Define dimensions of buttons and text on EasySMU_IOpanel
#define | _SMU_SPACE 5
#define | _SMU_WIDTH (_LCD_WIDTH-3*_SMU_SPACE)/2
#define | _SMU_HEIGHT ((_LCD_HEIGHT/4)-_SMU_SPACE)
#define | _SMU0_TOP _SMU_SPACE
#define | _SMU0_LEFT _SMU_SPACE
#define | _SMU0_RIGHT (_SMU0_LEFT + _SMU_WIDTH)
#define | _SMU0_BOTTOM (_SMU0_TOP + _SMU_HEIGHT)
#define | _SMU1_TOP (_SMU0_BOTTOM +_SMU_SPACE)
#define | _SMU1_LEFT _SMU0_LEFT
#define | _SMU1_RIGHT _SMU0_RIGHT
#define | _SMU1_BOTTOM (_SMU1_TOP + _SMU_HEIGHT)
#define | _SMU2_TOP _SMU0_TOP
#define | _SMU2_LEFT _SMU0_RIGHT+_SMU_SPACE
#define | _SMU2_RIGHT _SMU2_LEFT + _SMU_WIDTH
#define | _SMU2_BOTTOM _SMU0_BOTTOM
#define | _SMU3_TOP _SMU1_TOP
#define | _SMU3_LEFT _SMU2_LEFT
#define | _SMU3_RIGHT _SMU2_RIGHT
#define | _SMU3_BOTTOM _SMU1_BOTTOM
#define | _BUTTON_WIDTH (_LCD_WIDTH-5*_SMU_SPACE)/4
#define | _BUTTON_HEIGHT ((_LCD_HEIGHT-5*_SMU_SPACE)/4)
#define | _BUTTON_RADIUS (_BUTTON_HEIGHT/12)
#define | _VPLUS_TOP (_VPLUS_BOTTOM-_BUTTON_HEIGHT)
#define | _VPLUS_LEFT _SMU_SPACE
#define | _VPLUS_RIGHT (_VPLUS_LEFT+_BUTTON_WIDTH)
#define | _VPLUS_BOTTOM (_VMINUS_TOP-_SMU_SPACE)
#define | _VMINUS_TOP (_VMINUS_BOTTOM-_BUTTON_HEIGHT)
#define | _VMINUS_LEFT _SMU_SPACE
#define | _VMINUS_RIGHT (_VMINUS_LEFT+_BUTTON_WIDTH)
#define | _VMINUS_BOTTOM (_LCD_HEIGHT-_SMU_SPACE)
#define | _VPLUSPLUS_TOP _VPLUS_TOP
#define | _VPLUSPLUS_LEFT (_VPLUS_RIGHT+_SMU_SPACE)
#define | _VPLUSPLUS_RIGHT _SMU1_RIGHT
#define | _VPLUSPLUS_BOTTOM _VPLUS_BOTTOM
#define | _VMINUSMINUS_LEFT _VPLUSPLUS_LEFT
#define | _VMINUSMINUS_RIGHT _VPLUSPLUS_RIGHT
#define | _VMINUSMINUS_TOP _VMINUS_TOP
#define | _VMINUSMINUS_BOTTOM _VMINUS_BOTTOM
#define | _IPLUS_TOP _VPLUS_TOP
#define | _IPLUS_LEFT _SMU3_LEFT
#define | _IPLUS_RIGHT (_IPLUS_LEFT+_BUTTON_WIDTH)
#define | _IPLUS_BOTTOM _VPLUS_BOTTOM
#define | _IMINUSMINUS_TOP _IMINUS_TOP
#define | _IMINUSMINUS_LEFT _IPLUSPLUS_LEFT
#define | _IMINUSMINUS_RIGHT _IPLUSPLUS_RIGHT
#define | _IMINUSMINUS_BOTTOM _IMINUS_BOTTOM
#define | _IMINUS_LEFT _IPLUS_LEFT
#define | _IMINUS_RIGHT _IPLUS_RIGHT
#define | _IMINUS_TOP _VMINUS_TOP
#define | _IMINUS_BOTTOM _VMINUS_BOTTOM
#define | _IPLUSPLUS_TOP _VPLUSPLUS_TOP
#define | _IPLUSPLUS_LEFT (_IPLUS_RIGHT + _SMU_SPACE)
#define | _IPLUSPLUS_RIGHT _SMU3_RIGHT
#define | _IPLUSPLUS_BOTTOM _VPLUSPLUS_BOTTOM
#define | _TEXT_LEFT 5
#define | _TEXT_LEFT_MID 75
#define | _BUTTON_TEXT_TOP 35
#define | _BUTTON_TEXT_LEFT 25
#define | _BUTTON_TEXT_TOP 35
#define | _BUTTON_TEXT_PLUSPLUS_LEFT 15
#define | _SMU_TEXT_TOP 15
#define | _SMU_TEXT_LEFT 65
#define | _TEXT_TOP 32
#define | _TEXT_TOP_MID 48

## Enumerations
enum | { _SMU0 =_CH0, _SMU1 =_CH1, _SMU2 =_CH2, _SMU3 =_CH3, _VPLUS, _VMINUS, _VPLUSPLUS, _VMINUSMINUS, _IPLUS, _IMINUS, _IPLUSPLUS, _IMINUSMINUS, _NONE }
| used to indicate which button is pressed by the user More...

## Macro Definition Documentation

## ◆ _BUTTON_HEIGHT

#define _BUTTON_HEIGHT ((_LCD_HEIGHT-5*_SMU_SPACE)/4)

Definition at line 157 of file EasySMU_IOpanel.h.

## ◆ _BUTTON_RADIUS

#define _BUTTON_RADIUS (_BUTTON_HEIGHT/12)

Definition at line 158 of file EasySMU_IOpanel.h.

## ◆ _BUTTON_TEXT_LEFT

#define _BUTTON_TEXT_LEFT 25

Definition at line 203 of file EasySMU_IOpanel.h.

## ◆ _BUTTON_TEXT_PLUSPLUS_LEFT

#define _BUTTON_TEXT_PLUSPLUS_LEFT 15

Definition at line 205 of file EasySMU_IOpanel.h.

## ◆ _BUTTON_TEXT_TOP [1/2]

#define _BUTTON_TEXT_TOP 35

Definition at line 204 of file EasySMU_IOpanel.h.

## ◆ _BUTTON_TEXT_TOP [2/2]

#define _BUTTON_TEXT_TOP 35

Definition at line 204 of file EasySMU_IOpanel.h.

## ◆ _BUTTON_WIDTH

#define _BUTTON_WIDTH (_LCD_WIDTH-5*_SMU_SPACE)/4

Definition at line 156 of file EasySMU_IOpanel.h.

## ◆ _IMINUS_BOTTOM

#define _IMINUS_BOTTOM _VMINUS_BOTTOM

Definition at line 193 of file EasySMU_IOpanel.h.

## ◆ _IMINUS_LEFT

#define _IMINUS_LEFT _IPLUS_LEFT

Definition at line 190 of file EasySMU_IOpanel.h.

## ◆ _IMINUS_RIGHT

#define _IMINUS_RIGHT _IPLUS_RIGHT

Definition at line 191 of file EasySMU_IOpanel.h.

## ◆ _IMINUS_TOP

#define _IMINUS_TOP _VMINUS_TOP

Definition at line 192 of file EasySMU_IOpanel.h.

## ◆ _IMINUSMINUS_BOTTOM

#define _IMINUSMINUS_BOTTOM _IMINUS_BOTTOM

Definition at line 188 of file EasySMU_IOpanel.h.

## ◆ _IMINUSMINUS_LEFT

#define _IMINUSMINUS_LEFT _IPLUSPLUS_LEFT

Definition at line 186 of file EasySMU_IOpanel.h.

## ◆ _IMINUSMINUS_RIGHT

#define _IMINUSMINUS_RIGHT _IPLUSPLUS_RIGHT

Definition at line 187 of file EasySMU_IOpanel.h.

## ◆ _IMINUSMINUS_TOP

#define _IMINUSMINUS_TOP _IMINUS_TOP

Definition at line 185 of file EasySMU_IOpanel.h.

## ◆ _IPLUS_BOTTOM

#define _IPLUS_BOTTOM _VPLUS_BOTTOM

Definition at line 183 of file EasySMU_IOpanel.h.

## ◆ _IPLUS_LEFT

#define _IPLUS_LEFT _SMU3_LEFT

Definition at line 181 of file EasySMU_IOpanel.h.

## ◆ _IPLUS_RIGHT

#define _IPLUS_RIGHT (_IPLUS_LEFT+_BUTTON_WIDTH)

Definition at line 182 of file EasySMU_IOpanel.h.

## ◆ _IPLUS_TOP

#define _IPLUS_TOP _VPLUS_TOP

Definition at line 180 of file EasySMU_IOpanel.h.

## ◆ _IPLUSPLUS_BOTTOM

#define _IPLUSPLUS_BOTTOM _VPLUSPLUS_BOTTOM

Definition at line 198 of file EasySMU_IOpanel.h.

## ◆ _IPLUSPLUS_LEFT

#define _IPLUSPLUS_LEFT (_IPLUS_RIGHT + _SMU_SPACE)

Definition at line 196 of file EasySMU_IOpanel.h.

## ◆ _IPLUSPLUS_RIGHT

#define _IPLUSPLUS_RIGHT _SMU3_RIGHT

Definition at line 197 of file EasySMU_IOpanel.h.

## ◆ _IPLUSPLUS_TOP

#define _IPLUSPLUS_TOP _VPLUSPLUS_TOP

Definition at line 195 of file EasySMU_IOpanel.h.

## ◆ _LCD_HEIGHT

#define _LCD_HEIGHT 240

height of Adafruit TFT display in pixels

Definition at line 127 of file EasySMU_IOpanel.h.

## ◆ _LCD_WIDTH

#define _LCD_WIDTH 320

width of Adafruit TFT display in pixels

Definition at line 125 of file EasySMU_IOpanel.h.

## ◆ _SMU0_BOTTOM

#define _SMU0_BOTTOM (_SMU0_TOP + _SMU_HEIGHT)

Definition at line 139 of file EasySMU_IOpanel.h.

## ◆ _SMU0_LEFT

#define _SMU0_LEFT _SMU_SPACE

Definition at line 137 of file EasySMU_IOpanel.h.

## ◆ _SMU0_RIGHT

#define _SMU0_RIGHT (_SMU0_LEFT + _SMU_WIDTH)

Definition at line 138 of file EasySMU_IOpanel.h.

## ◆ _SMU0_TOP

#define _SMU0_TOP _SMU_SPACE

Definition at line 136 of file EasySMU_IOpanel.h.

## ◆ _SMU1_BOTTOM

#define _SMU1_BOTTOM (_SMU1_TOP + _SMU_HEIGHT)

Definition at line 144 of file EasySMU_IOpanel.h.

## ◆ _SMU1_LEFT

#define _SMU1_LEFT _SMU0_LEFT

Definition at line 142 of file EasySMU_IOpanel.h.

## ◆ _SMU1_RIGHT

#define _SMU1_RIGHT _SMU0_RIGHT

Definition at line 143 of file EasySMU_IOpanel.h.

## ◆ _SMU1_TOP

#define _SMU1_TOP (_SMU0_BOTTOM +_SMU_SPACE)

Definition at line 141 of file EasySMU_IOpanel.h.

## ◆ _SMU2_BOTTOM

#define _SMU2_BOTTOM _SMU0_BOTTOM

Definition at line 149 of file EasySMU_IOpanel.h.

## ◆ _SMU2_LEFT

#define _SMU2_LEFT _SMU0_RIGHT+_SMU_SPACE

Definition at line 147 of file EasySMU_IOpanel.h.

## ◆ _SMU2_RIGHT

#define _SMU2_RIGHT _SMU2_LEFT + _SMU_WIDTH

Definition at line 148 of file EasySMU_IOpanel.h.

## ◆ _SMU2_TOP

#define _SMU2_TOP _SMU0_TOP

Definition at line 146 of file EasySMU_IOpanel.h.

## ◆ _SMU3_BOTTOM

#define _SMU3_BOTTOM _SMU1_BOTTOM

Definition at line 154 of file EasySMU_IOpanel.h.

## ◆ _SMU3_LEFT

#define _SMU3_LEFT _SMU2_LEFT

Definition at line 152 of file EasySMU_IOpanel.h.

## ◆ _SMU3_RIGHT

#define _SMU3_RIGHT _SMU2_RIGHT

Definition at line 153 of file EasySMU_IOpanel.h.

## ◆ _SMU3_TOP

#define _SMU3_TOP _SMU1_TOP

Definition at line 151 of file EasySMU_IOpanel.h.

## ◆ _SMU_HEIGHT

#define _SMU_HEIGHT ((_LCD_HEIGHT/4)-_SMU_SPACE)

Definition at line 134 of file EasySMU_IOpanel.h.

## ◆ _SMU_SPACE

#define _SMU_SPACE 5

Definition at line 132 of file EasySMU_IOpanel.h.

## ◆ _SMU_TEXT_LEFT

#define _SMU_TEXT_LEFT 65

Definition at line 207 of file EasySMU_IOpanel.h.

## ◆ _SMU_TEXT_TOP

#define _SMU_TEXT_TOP 15

Definition at line 206 of file EasySMU_IOpanel.h.

## ◆ _SMU_WIDTH

#define _SMU_WIDTH (_LCD_WIDTH-3*_SMU_SPACE)/2

Definition at line 133 of file EasySMU_IOpanel.h.

## ◆ _TEXT_LEFT

#define _TEXT_LEFT 5

Definition at line 200 of file EasySMU_IOpanel.h.

## ◆ _TEXT_LEFT_MID

#define _TEXT_LEFT_MID 75

Definition at line 201 of file EasySMU_IOpanel.h.

## ◆ _TEXT_TOP

#define _TEXT_TOP 32

Definition at line 208 of file EasySMU_IOpanel.h.

## ◆ _TEXT_TOP_MID

#define _TEXT_TOP_MID 48

Definition at line 209 of file EasySMU_IOpanel.h.

## ◆ _VMINUS_BOTTOM

#define _VMINUS_BOTTOM (_LCD_HEIGHT-_SMU_SPACE)

Definition at line 168 of file EasySMU_IOpanel.h.

## ◆ _VMINUS_LEFT

#define _VMINUS_LEFT _SMU_SPACE

Definition at line 166 of file EasySMU_IOpanel.h.

## ◆ _VMINUS_RIGHT

#define _VMINUS_RIGHT (_VMINUS_LEFT+_BUTTON_WIDTH)

Definition at line 167 of file EasySMU_IOpanel.h.

## ◆ _VMINUS_TOP

#define _VMINUS_TOP (_VMINUS_BOTTOM-_BUTTON_HEIGHT)

Definition at line 165 of file EasySMU_IOpanel.h.

## ◆ _VMINUSMINUS_BOTTOM

#define _VMINUSMINUS_BOTTOM _VMINUS_BOTTOM

Definition at line 178 of file EasySMU_IOpanel.h.

## ◆ _VMINUSMINUS_LEFT

#define _VMINUSMINUS_LEFT _VPLUSPLUS_LEFT

Definition at line 175 of file EasySMU_IOpanel.h.

## ◆ _VMINUSMINUS_RIGHT

#define _VMINUSMINUS_RIGHT _VPLUSPLUS_RIGHT

Definition at line 176 of file EasySMU_IOpanel.h.

## ◆ _VMINUSMINUS_TOP

#define _VMINUSMINUS_TOP _VMINUS_TOP

Definition at line 177 of file EasySMU_IOpanel.h.

## ◆ _VPLUS_BOTTOM

#define _VPLUS_BOTTOM (_VMINUS_TOP-_SMU_SPACE)

Definition at line 163 of file EasySMU_IOpanel.h.

## ◆ _VPLUS_LEFT

#define _VPLUS_LEFT _SMU_SPACE

Definition at line 161 of file EasySMU_IOpanel.h.

## ◆ _VPLUS_RIGHT

#define _VPLUS_RIGHT (_VPLUS_LEFT+_BUTTON_WIDTH)

Definition at line 162 of file EasySMU_IOpanel.h.

## ◆ _VPLUS_TOP

#define _VPLUS_TOP (_VPLUS_BOTTOM-_BUTTON_HEIGHT)

Definition at line 160 of file EasySMU_IOpanel.h.

## ◆ _VPLUSPLUS_BOTTOM

#define _VPLUSPLUS_BOTTOM _VPLUS_BOTTOM

Definition at line 173 of file EasySMU_IOpanel.h.

## ◆ _VPLUSPLUS_LEFT

#define _VPLUSPLUS_LEFT (_VPLUS_RIGHT+_SMU_SPACE)

Definition at line 171 of file EasySMU_IOpanel.h.

## ◆ _VPLUSPLUS_RIGHT

#define _VPLUSPLUS_RIGHT _SMU1_RIGHT

Definition at line 172 of file EasySMU_IOpanel.h.

## ◆ _VPLUSPLUS_TOP

#define _VPLUSPLUS_TOP _VPLUS_TOP

Definition at line 170 of file EasySMU_IOpanel.h.

## ◆ ADAFRUIT_TFT_TOUCHSHIELD_1947

#define ADAFRUIT_TFT_TOUCHSHIELD_1947

Definition at line 94 of file EasySMU_IOpanel.h.

## ◆ TFT_CS

#define TFT_CS 10

Definition at line 101 of file EasySMU_IOpanel.h.

## ◆ TFT_DC

#define TFT_DC 9

Definition at line 102 of file EasySMU_IOpanel.h.

## Enumeration Type Documentation

## ◆ anonymous enum

anonymous enum

used to indicate which button is pressed by the user

Enumerator
_SMU0 |
_SMU1 |
_SMU2 |
_SMU3 |
_VPLUS |
_VMINUS |
_VPLUSPLUS |
_VMINUSMINUS |
_IPLUS |
_IMINUS |
_IPLUSPLUS |
_IMINUSMINUS |
_NONE |

Definition at line 122 of file EasySMU_IOpanel.h.