Voltmeter with Atmega8515

Go To Last Post
36 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I am trying to build 4 digit led voltmeter with 10 bit resolution with ATmega8515.

I have AVR Studio 4.18 and STK500 for programming.

Give me the hands,  

 

 

Last Edited: Tue. Jun 6, 2017 - 01:59 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

That is not a good starting configuration, as that AVR model does not have a built-in ADC (analog-to-digital converter).

 

 

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

theusch wrote:

That is not a good starting configuration, as that AVR model does not have a built-in ADC (analog-to-digital converter).

 

 

Sorry, it is ATmega8535 also I have ATmega328P

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

MAGL wrote:
Give me the hands

What hands do you need?

 

Google has many hands ...

 

What work have you done so far?

 

Is there something you're stuck with?

 

What does this have to do with Studio specifically?

Last Edited: Sun. Jun 4, 2017 - 03:19 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

awneil wrote:
What hands do you need?

Like the dozen entries in the Projects section?

http://www.avrfreaks.net/search/...

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

nonono

John Samperi

Ampertronics Pty. Ltd.

www.ampertronics.com.au

* Electronic Design * Custom Products * Contract Assembly

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

theusch wrote:

awneil wrote:
What hands do you need?

Like the dozen entries in the Projects section?

http://www.avrfreaks.net/search/...

[/quote]

 

Thank you very much awneil.

I am planning to make a pcb for display section to connect STK500, which one would you recommend, through PORTs or EXPAND connection or make dedicated PCB.

I am trying to go step by step however the project needs 10 digit display for two 3 digit voltage reading and the others for parameters and 2 analog inputs

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

MAGL wrote:
I am trying to go step by step however (sic?) the project needs 10 digit display for two 3 digit voltage reading and the others for parameters and 2 analog inputs

Why the "however" ?

 

How does the fact that the project needs "10 digit display", etc, stop you from going step by step?

Last Edited: Tue. Jun 6, 2017 - 10:57 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

As far as I can see we haven't yet heard what the display device is - can we assume you mean 7 segments? I can see why you might want to take it "a digit at a time". First set up the simple case of one digit. Then 2. Once you can do 2 you can probably do 4, 6 or 10.

 

Of course I could be completely off here and perhaps it's a composite display (maybe a HD44780 based text LCD "module" or perhaps even a graphic LCD?) but if each digit is effectively a "separate" peripheral to the micro then I could see why you might want to build it up one step at a time.

 

By the way don't be tempted to try and put the whole thing (ADC reading and whatever else) together all at the start. Just concentrate on each piece in isolation. Start by simply trying to get the display to show '1' then "12" then "123456" etc. When you have the display working you can "park" that part and move on to making ADC readings or whatever else.
 

Last Edited: Tue. Jun 6, 2017 - 12:27 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

clawson wrote:

As far as I can see we haven't yet heard what the display device is - can we assume you mean 7 segments? I can see why you might want to take it "a digit at a time". First set up the simple case of one digit. Then 2. Once you can do 2 you can probably do 4, 6 or 10.

 

Of course I could be completely off here and perhaps it's a composite display (maybe a HD44780 based text LCD "module" or perhaps even a graphic LCD?) but if each digit is effectively a "separate" peripheral to the micro then I could see why you might want to build it up one step at a time.

 

By the way don't be tempted to try and put the whole thing (ADC reading and whatever else) together all at the start. Just concentrate on each piece in isolation. Start by simply trying to get the display to show '1' then "12" then "123456" etc. When you have the display working you can "park" that part and move on to making ADC readings or whatever else.
 

Yes, displays are 7 segment, Led.

For the PCB making, which one would you recommend, through PORTs or EXPAND connection.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

awneil wrote:

MAGL wrote:
I am trying to go step by step however (sic?) the project needs 10 digit display for two 3 digit voltage reading and the others for parameters and 2 analog inputs

Why the "however" ?

 

How does the fact that the project needs "10 digit display", etc, stop you from going step by step?

Sorry awneil,

I am not a native english speaker, translate by google

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

MAGL wrote:
For the PCB making, which one would you recommend,
Too early to be thinking about PCBs at this stage - start by wiring up a prototype on protoboard or vero/stripboard or similar. Only when you are convinced you have ironed out any problems in the electrical design (which may also involve have some/all of the software in place too) can you really think about hard coding it in copper.

 

For multiple 7-seg you will no doubt have read on the internet that the usual way is to "multiplex" (so you are only ever really lighting one digit at a time but you hop between them so quick it looks like they are all on. This allows you to use common data lines. Even then (certainly for 10 digits) you are going to have a load of wires involved (presumably at least 18 ?) so a further approach worth considering might be to look at "charlieplexing" which can put multiple segments on single wires (and just enables one path of current flow at a time).

 

Be warned that if you multi/charlie-plex that to get the brightness you need (because you are only turning on segments for a short time) you may have low or no resistance to limit the current to the LEDs so if you make a mistake in the software and the multiplexing "freezes" at any stage you may find a lot (too much) current being delivered through one path - so be careful with that.

 

Equally, because AVRs generally limit 20mA per pin and 200mA for the entire device (varies but that ball park) that if you have a LOT of LEDs being driven at once you may overload the available current paths. Be careful with that too.

 

Of course things like this have been done loads of times and there's a lot written on the internet about it.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

clawson wrote:
Too early to be thinking about PCBs at this stage - start by wiring up a prototype on protoboard or vero/stripboard or similar. Only when you are convinced you have ironed out any problems in the electrical design (which may also involve have some/all of the software in place too) can you really think about hard coding it in copper.

And, by the time you've done all that, you will almost certainly have answered the question about which connector(s) to use - or, at least, be in a very good position to answer it.

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thank you very much.

It would be better to use hc595 or 4056 to avoid the multiplexing/brightness problem

Frankly, PCB is more easier and quicker for me, of course I will not to make whole card at the beginning, I just asked STK500 users experience.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I found a program, write for PIC 16F88. is it possible to convert for Atmega 8535

 

/********************************************************************
 *                                                                  *
 *  Project: Modular 4-digit                                        *
 *   Source: modular.c                                              *
 *   Author: Mike McLaren, K8LH                                     *
 *     Date: 20-Aug-09                                              *
 *  Revised: 20-Aug-09                                              *
 *                                                                  *
 *  16F88 demo for three 4-digit 7-segment display modules using    *
 *  a 5-pin bus (RB0 for PWM and RB1-RB4 for column driver lines)   *                             *                                                                  *
 *      IDE: MPLAB 8.14 (tabs = 4)                                  *
 *     Lang: SourceBoost BoostC v6.95, Lite/Free version            *
 *                                                                  *
 *                                                                  *
 ********************************************************************/

#include <system.h>

#pragma DATA _CONFIG1, _CCP1_RB0&_LVP_OFF&_MCLR_OFF&_WDT_OFF&_INTRC_IO
#pragma DATA _CONFIG2, _IESO_OFF&_FCMEN_OFF

#pragma CLOCK_FREQ 8000000      // 8 MHz INTOSC

//--< function prototypes >------------------------------------------
//--< typedef and defines >------------------------------------------

typedef unsigned char u08;
typedef unsigned int u16;

#define r08 const rom unsigned char

#define clk portb.1             // the RB1 pin

//--< variables >----------------------------------------------------

u08 colsel = 2;                 // column select bit mask
u08 colnbr = 0;                 // colnbr, 0..3
u08 srdata[] =  { 0,0,0,0,      // bended shift register data
                  0,0,0,0 };    //
u08 display[] = { 0,0,0,0,      // module 1, columns 0..3
                  0,0,0,0,      // module 2, columns 0..3
                  0,0,0,0 };    // module 3, columns 0..3

u08 work;                       // isr, work variable

r08 segdata[] = { 0b00111111,   // "0"   -|-|F|E|D|C|B|A
                  0b00000110,   // "1"   -|-|-|-|-|C|B|-
                  0b01011011,   // "2"   -|G|-|E|D|-|B|A
                  0b01001111,   // "3"   -|G|-|-|D|C|B|A
                  0b01100110,   // "4"   -|G|F|-|-|C|B|-
                  0b01101101,   // "5"   -|G|F|-|D|C|-|A
                  0b01111101,   // "6"   -|G|F|E|D|C|-|A
                  0b00000111,   // "7"   -|-|-|-|-|C|B|A
                  0b01111111,   // "8"   -|G|F|E|D|C|B|A
                  0b01101111 }; // "9"   -|G|F|-|D|C|B|A

//--< functions >----------------------------------------------------

void brightness(u08 percent)
{ ccpr1l = 250 - (percent*2);   // 100% =  20% duty cycle, 80% bright
}                               //   0% = 100% duty cycle,  0% bright

//--< main >---------------------------------------------------------

void main()

  ansel = 0;                    // a2d off, digital i/o
  osccon = 0b01110000;          // set INTOSC to 8 MHz
  while(!osccon.IOFS);          // wait 'til oscillator stable
  trisb = 0b11100000;           // set RB4..RB0 to outputs
  trisa = 0b00000000;           // set all pins to outputs
  portb = 0b00000000;           // set all output latches to '0'
  porta = 0b00000000;           // set all output latches to '0'

//  setup PWM for a 2 msec period (8 MHz Clock) for a 1/4th or 25%
//  display duty cycle and a 125 Hz (8 msec) display refresh rate

  ccp1con = 0b00001100;         // '00------' unimplemented bits
                                // '--00----' CCP1X:CCP1Y (pwm)
                                // '----1100' pwm mode, active hi
  ccpr1l = 250;                 // 100% duty cycle, 0% brightness
  tmr2 = 0;                     // clear Timer 2 register
  t2con = 0b00000110;           // '0-------' unimplemented bit
                                // '-0000---' TOUTPS<3:0>, postscale 1
                                // '-----1--' TMR2ON, turn Timer 2 on
                                // '------10' T2CKPS<1:0>, prescale 16
  pr2 = 250-1;                  // 250 x 8-usec 'ticks' = 2 msecs
  pir1 = 0;                     // clear peripheral interrupt flags
  pie1.TMR2IE = 1;              // set Timer 2 interrupt enable bit
  intcon = 0b11000000;          // '1-------' GIE, enable global and
                                // '-1------' PEIE, peripheral ints
                                // '--0-----' T0IE, TMR0 ints off
                                // '---0----' INTE, off
                                // '----0---' GPIE, IOC disabled
                                // '-----000' T0IF/INTF/GPIF flags
  while(1)
  {
    brightness(70);             // display brightness 70%

    display[0] = segdata[0];    // module 1 = "0123"
    display[1] = segdata[1];    //
    display[2] = segdata[2];    //
    display[3] = segdata[3];    //

    display[4] = segdata[8];    // module 2 = "8642"
    display[5] = segdata[6];    //
    display[6] = segdata[4];    //
    display[7] = segdata[2];    //

    display[8] = segdata[4];    // module 3 = "4125"
    display[9] = segdata[1];    //
    display[10] = segdata[2];   //
    display[11] = segdata[5];   //
  }
}

/********************************************************************
 *  interrupt service routine, approx 5% 'overhead'                 *
 ********************************************************************/
 
void interrupt()                // 2-msec Timer 2 interrupts
{ pir1.TMR2IF = 0;              // clear timer 2 interrupt flag
 /*                                                                 *
  *  retask the column driver lines while PWM is hi (display off)   *
  *  to update all three 74HC595 module drivers in parallel (bit-   *
  *  banged 3 chan SPI bus) then update portb with the new column   *
  *  select mask (on RB4-RB1) before PWM goes lo (display on)       *
  *                                                                 */
  portb = srdata[7]; clk = 1;   // clock out the b7 SR data bits
  portb = srdata[6]; clk = 1;   // clock out the b6 SR data bits
  portb = srdata[5]; clk = 1;   // clock out the b5 SR data bits
  portb = srdata[4]; clk = 1;   // clock out the b4 SR data bits
  portb = srdata[3]; clk = 1;   // clock out the b3 SR data bits
  portb = srdata[2]; clk = 1;   // clock out the b2 SR data bits
  portb = srdata[1]; clk = 1;   // clock out the b1 SR data bits
  portb = srdata[0]; clk = 1;   // clock out the b0 SR data bits
  portb = colsel;               // select new column
 /*                                                                 *
  *  bump 'colnbr' and 'colpos' for next column update interrupt    *
  *                                                                 */
  if(colnbr == 3)               // if last column
  { colnbr = 0;                 // reset column number
    colsel = 2;                 // reset column select for RB1
  }
  else                          // not last column
  { colnbr++;                   // bump column number, 0..3
    colsel <<= 1;               // bump column select bit mask
  }
 /*                                                                 *
  *  build new srdata[] array for next column update interrupt      *
  *                                                                 */
  srdata[0] = 0;                // clear srdata[] array
  srdata[1] = 0;                //
  srdata[2] = 0;                //
  srdata[3] = 0;                //
  srdata[4] = 0;                //
  srdata[5] = 0;                //
  srdata[6] = 0;                //
  srdata[7] = 0;                //
 /*                                                                 *
  *  example 'data bender' srdata[] output for a column 0 update    *
  *                                                                 *
  *  display[0]  0x2C  00101100  'module 1 column 0 segment data    *
  *  display[4]  0x37  00110111  'module 2 column 0 segment data    *
  *  display[8]  0x42  01000010  'module 3 column 0 segment data    *
  *                                                                 *
  *   srdata[0]  0x08  00001000  'bended SR data on b2..b4 bits     *
  *   srdata[1]  0x18  00011000  'all b1 (RB1) 'clk' bits = 0       *
  *   srdata[2]  0x0C  00001100  'all module 'clk' pins on RB1      *
  *   srdata[3]  0x04  00000100  'module 1 'ser' pin on RB2         *
  *   srdata[4]  0x05  00001000  'module 2 'ser' pin on RB3         *
  *   srdata[5]  0x0C  00001100  'module 3 'ser' pin on RB4         *
  *   srdata[6]  0x10  00010000                                     *
  *   srdata[7]  0x00  00000000                                     *
  *                                                                 */
  work = display[colnbr];       // data bender for 1st module
  if(work.0) srdata[0] |= 4;    // (4 is mask for b2/rb2 bit)
  if(work.1) srdata[1] |= 4;    //
  if(work.2) srdata[2] |= 4;    //
  if(work.3) srdata[3] |= 4;    //
  if(work.4) srdata[4] |= 4;    //
  if(work.5) srdata[5] |= 4;    //
  if(work.6) srdata[5] |= 4;    //
  if(work.7) srdata[7] |= 4;    //
  work = display[colnbr+4];     // data bender for 2nd module
  if(work.0) srdata[0] |= 8;    // (8 is mask for b3/rb3 bit)
  if(work.1) srdata[1] |= 8;    //
  if(work.2) srdata[2] |= 8;    //
  if(work.3) srdata[3] |= 8;    //
  if(work.4) srdata[4] |= 8;    //
  if(work.5) srdata[5] |= 8;    //
  if(work.6) srdata[5] |= 8;    //
  if(work.7) srdata[7] |= 8;    //
  work = display[colnbr+8];     // data bender for 3rd module
  if(work.0) srdata[0] |= 16;   // (16 is mask for b4/rb4 bit)
  if(work.1) srdata[1] |= 16;   //
  if(work.2) srdata[2] |= 16;   //
  if(work.3) srdata[3] |= 16;   //
  if(work.4) srdata[4] |= 16;   //
  if(work.5) srdata[5] |= 16;   //
  if(work.6) srdata[5] |= 16;   //
  if(work.7) srdata[7] |= 16;   //
}

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

CAN you convert the program? Yes

Is it worth converting the program?  Probably not.

 

It is much easier to connect an LCD display to a micro, and use a software library for driving it, than it is to connect a 7-Segment LED type display.

 

There are many examples of both available for AVR micros, start with one of them, not with a PIC program.

 

Once you have a display working, then work on the ADC part of the project.

 

JC 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thank you very much indeed.

It would be better listen to you, however give me an example about conversion, is it line by line ?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I would start with an Arduino Uno.
Use the analogRead() function to read your voltage.
Use the Serial terminal to report the results.
Or even use an intelligent 7-segment display module.
.
Then write your own ADC read function.
And your own 7-seg function.
Debug it all on the Uno.
.
Finally, rebuild for the ATmega8535 if that is your target chip.
.
Nowadays, you can buy cheap ready made display modules but for indoor use, an AVR can drive a bare 4-digit display at a reasonable brightness with nothing more than 8 segment resistors.
David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

MAGL wrote:

Thank you very much indeed.

It would be better listen to you, however give me an example about conversion, is it line by line ?

 

To convert, you will have to know exactly what the program is doing. To know this, you would have to know PIC programming. You would have to know both AVR and PIC.

So yes, it's line by line, especially inside the functions. The global variables probably can be reused.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thank you very much,

Nice idea and seems painless, however I want to learn AVR programming.

I found two 7 segment driving program with 595 register. I will try and see.

By the way if you find such information that can help me, please forward the links

Thanks again for all.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello David

I will order Uno R3 (with smd Atmega328) and Multifunction shield with HC595 and 4 digit Led display

Good luck with me

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

What hardware do you have?

Which country do you live in?

 

Electronics from China is very cheap.   But it takes a long time to arrive.

Local mail order may cost more but you get the goods within 48 hours.

 

From a learning point of view.    Start with ready made working hardware and software.

Adapt it to your needs.   e.g. different hardware or your own C code.

You will make better progress than starting from scratch.

 

If you live in a remote part of the world,   you are probably better off working with whatever parts you have on your desk.   

There is little point in using a HC595 if you have enough (12) pins on your Uno / mega8535.

 

David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello David,

Thank you very much for your interest.

I am living in Turkey, yes mentioned cards are avalable and cheap, total $9 and will reach tomorrow.

The reason for HC595 is, 10 pcs 7 segment driving and brightness is the problem.

Hope I can do it. Every advice is worth for me.

Thanks again.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

MAGL wrote:
The reason for HC595 is, 10 pcs 7 segment driving and brightness is the problem.

The brightness is depends on the scanning freq not the HC595. Each display should stay on for about 5ms. For higher scanning freq the current limiting resistor should be reduce or even not use any.
But when the scanning stop and stay at one segment, you know what will happen.
.
MG

I don't know why I'm still doing this hobby

Last Edited: Wed. Aug 16, 2017 - 10:24 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brightness depends on the average segment current. With a multiplexed display, the peak current is N times the average.
Or to look at it another way: a HC595 pin or AVR pin max current is about 20mA. A 4-digit multiplex means 5mA average.
.
The only way to get more out of HC595 is to have one HC595 per digit and shift all the bits in one go.
But this is a lot of wiring. You might just as well buy a purpose chip like MAX7219 which handles multiplexing and high currents.
There are also intelligent I2C controllers from China that are cheap and easy to use.
.
Yes, if you want 10 digits with high brightness, you probably need two purpose chips.
10 digits is far too many for bare AVR to drive with multiplexing.
.
Do NOT omit segment resistors. Choose a sensible multiplex frequency with sensible currents.
.
David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks David,

As you say, multiplexed display is okay for 3-4 digit, I plan 3 HC595 for 3+3+4 display.

Actually we made a Exchange Sign Board with 108 digit, and we used 74LS164 with ULN2003 for each 6 digits, I found our first prototype, it still works. Good old days.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Do you really need 10 digits?
3 HC595s implies that you will be multiplexing. You will not achieve much brightness. And you will be stuck with a fixed brightness level related to your segment resistors.
Purpose chips like MAX7219 allow you to alter brightness under program control.
.
Yes, there are many ways to produce prototypes with standard chips. For a real life product it is worth choosing the most appropriate electronics. Especially for high brightness.
But then you would never choose a ATmega8515.
.
David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

I built a voltmeter recently using an AVR ATMega328p,  a TFT ST7735R display module, a 18650 LithiumIon battery, and an INA219 I2C power-meter breakout board.   I used an old beat-up Arduino Nano and soldered the PowerMeter breakout board and TFT directly to the the 0.1" VIA holes on the Nano PCB using 0.025" header pins.   Took about four hours and cost about $9 total.  The circuit displays the current (up to 3 Amps) as well as the voltage level (up to 32 Volts DC).

 

A problem with using most digital voltmeters is constantly having to move your head from looking at the circuit board (where you are holding the probes) to looking at the DVM LCD screen.  With this new INA219 powerMeter, I added some NeoPixels (LEDs with programmable color and brightness levels) to light-up in different colors according to the voltage level.  Thus I can "see" the voltage level with peripheral vision as each new placement of the probes at a different testpoint on the PCB causes a different background LED color according to its voltage reading.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

MAGL wrote:
I plan 3 HC595 for 3+3+4 display.

Just use a 4017 as 10 digit scanner and all the same each segment (7 segment) connected together each to one of 7 bits of MCU PORT. The 8th bit is for 4017 clock.
.
MG

I don't know why I'm still doing this hobby

Last Edited: Fri. Aug 18, 2017 - 01:55 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

But then you would never choose a ATmega8515.

...since it doesn't have ADC ....

John Samperi

Ampertronics Pty. Ltd.

www.ampertronics.com.au

* Electronic Design * Custom Products * Contract Assembly

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi David,

Okay I will use Max7219. There is a typing error, I am planning to use 8535. It is not "display only" requirement, I also need 5 Anaolg inputs and 2 PWM outputs, and 2 digital I/O

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Simonetta wrote:
A problem with using most digital voltmeters is constantly having to move your head from looking at the circuit board...

Not just digital voltmeters - same applies to analogue

 

Thus I can "see" the voltage level with peripheral vision as each new placement of the probes at a different testpoint on the PCB causes a different background LED color according to its voltage reading.

Now that is a great idea!

 

I think people have tried similar with either a tone varying with voltage, or a beep rate - but I guess that could soon get irritating for others in earshot.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello Simonetta,

Brilliant idea, LED color changing is what I will try to do.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There's always someone who got there first:

 

http://www.edn.com/design/power-management/4329054/Rainbow-LED-indicates-voltage-with-color - doing the RGB manually (I guess this was before the days of NeoPixels?)

 

Not great if your colour vision is impaired, though.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

awneil wrote:
I think people have tried similar with either a tone varying with voltage, or a beep rate - but I guess that could soon get irritating for others in earshot.
So it probably needs the dulcet tones of "Alexa" to read it out to you! Maybe something like "Alexa, reading now please" ?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have actually done a remote monitoring project like that: you phone it up, and it speaks the reading to you!