/*--------------------------------------------------------------
0-50, ,
, LCD-
16 , 2 ,
NR05 ┬л ┬╗; 4 10
1, 100, A0,A4,A5,A7
5 V_REF
.
-
.
(
)
Vin
.
Vout .
DIV_* Vin/Vout.
startingelectronics.com--------------------------------------------------------------*/
#include <LiquidCrystal.h>
// ( )
#define LED 13
//
#define NUM_SAMPLES 20
//
#define DIV_1 11.186
#define DIV_2 11.186
#define DIV_3 11.186
#define DIV_4 11.186
//
#define V_REF 4.575
//
#define NUM_KEYS 5
// ( )
int adcKeyVal[NUM_KEYS] = {30, 150, 360, 535, 760};
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);
unsigned long sum[4] = {0}; //
unsigned char sample_count = 0; //
float voltage[4] = {0.0}; //
int cnt = 0; //
int keyIsPressed = 0; // ┬л┬╗
void setup()
{
lcd.begin(16, 2);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
}
void loop()
{
// 3 , ┬л┬╗
if (get_key() == 3){
keyIsPressed = !keyIsPressed;
delay(500);
}
// (1),
if (keyIsPressed == 0){
digitalWrite(LED, LOW);
//
while (sample_count < NUM_SAMPLES) {
// sample channel A0, A4, A5, A7
sum[0] += analogRead(A0);
sum[1] += analogRead(A4);
sum[2] += analogRead(A5);
sum[3] += analogRead(A7);
sample_count++;
delay(10);
}
digitalWrite(LED, HIGH);
//
for (cnt = 0; cnt < 4; cnt++) {
voltage[cnt] = ((float)sum[cnt] / (float)NUM_SAMPLES * V_REF) / 1024.0;
}
//
lcd.setCursor(0, 0);
lcd.print(┬лA тАЮ);
lcd.print(voltage[0] * DIV_1, 1);
lcd.print(тАЬV тАЮ);
// voltage 2 тАФ B (pin A4)
lcd.setCursor(8, 0);
lcd.print(тАЬB тАЮ);
lcd.print(voltage[1] * DIV_2, 1);
lcd.print(тАЬV тАЮ);
// voltge 3 тАФ C (pin A5)
lcd.setCursor(0, 1);
lcd.print(тАЬC тАЮ);
lcd.print(voltage[2] * DIV_3, 1);
lcd.print(тАЬV тАЮ);
// voltage 4 тАФ D (pin A7)
lcd.setCursor(8, 1);
lcd.print(тАЬD тАЮ);
lcd.print(voltage[3] * DIV_4, 1);
lcd.print(тАЬV тАЮ);
//
sample_count = 0;
for (cnt = 0; cnt < 4; cnt++) sum[cnt] = 0;
delay(20);
}
}
//
int get_key()
{
int input = analogRead(A6);
int k;
for (k = 0; k < NUM_KEYS; k++)
if (input < adcKeyVal[k])
return k + 1;
return 0;
}