A simple meter using Adafruit 2.8 TFT with touch v2
Dependencies: SPI_STMPE610 UniGraphic mbed vt100
A dumb simple voltage tester using ADC.
With FRDM-KL25Z, you can measure about 0V to 3.28V.
Nothing to drop your jaw nor holding your breath
but I wanted one, so I wrote one ;-)
とても単純はADCを使用した電圧テスターです。
FRDM-KL25Z を使用した場合、0V ~ 3.28V くらいが測定範囲です。
特に目新しいことも、驚くこともありませんが、
自分が欲しいので書いてみました (^ - ^)
On 18-May-2018
I changed the number display from 0.00 to 0.000
so that I can measure the change of a small loadcell.
2018年5月18日
ロードセル (重量センサ)の出力値の変化を見たかったので
有効数字を小数点以下2桁から3桁に変更しました。
main.cpp
- Committer:
- Rhyme
- Date:
- 2017-07-20
- Revision:
- 0:d01def9cf41e
- Child:
- 3:bf8761c8eb17
File content as of revision 0:d01def9cf41e:
#include "mbed.h"
#include "ILI9341.h"
#include "Arial12x12.h"
#include "Arial24x23.h"
#include "Arial28x28.h"
#include "Arial43x48_numb.h"
#include "SPI_STMPE610.h"
#include "vt100.h"
#include "meter.h"
#include "main.h"
vt100 *tty = 0 ;
ILI9341 *tft = 0 ;
SPI_STMPE610 *tsc = 0 ;
meter *tacho = 0 ;
DigitalOut myled(LED1, 1);
DigitalOut *backlight = 0 ;
AnalogIn *vin = 0 ;
float min_value = 0.0 ;
float max_value = 3.3 ;
void initTFT(void)
{
//Configure the display driver
tft->BusEnable(true) ;
tft->FastWindow(true) ;
tft->background(Black);
tft->foreground(White);
wait(0.01) ;
tft->cls();
tft->BusEnable(false) ;
backlight = new DigitalOut(PIN_BL_TFT, 1) ;
}
void init_hardware(void)
{
tty = new vt100() ;
tty->cls() ;
tft = new ILI9341(SPI_8, 10000000,
PIN_MOSI, PIN_MISO, PIN_SCLK,
PIN_CS_TFT, PIN_RESET_TFT, PIN_DC_TFT, "Adafruit2.8") ;
initTFT() ;
tft->set_font((unsigned char*) Arial28x28);
tft->foreground(White) ;
// tsc = new SPI_STMPE610(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TSC) ;
tacho = new meter(5, 5, 230, 230, 0.0, 3.3) ;
vin = new AnalogIn(PIN_ADC_CH0) ;
}
int main() {
float value = 0.0 ;
float prev_value = 0.0 ;
int intvalue = 0 ;
init_hardware() ;
*backlight = 1 ;
tacho->drawFrame() ;
tacho->drawScale() ;
while(1) {
value = 3.28 * vin->read() ;
intvalue = (int)(100.0 * value + 0.5) ;
value = (double)intvalue / 100.0 ;
if (value != prev_value) {
tacho->drawHand(value) ;
tacho->drawValue(value) ;
prev_value = value ;
}
wait(0.2) ;
}
}