Linduino  1.3.0
Linear Technology Arduino-Compatible Demonstration Board

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.