Ciao a tutti, tralasciando la solita frase:"sono nuovo nel campo di Arduino" e similari, che evito di dirvi per non essere troppo scontato, vorrei chiedere aiuto alla community italiana di Arduino.
Riassumendo in poche parole ho provato a fare un Voltmetro abbastanza semplice, e anche abbastanza impreciso, su Arduino(usando anche un display), e ci sono riuscito.
Ma ciò che mi serve non è un vero e proprio Voltmetro, ma più un sistema che quando la corrente è minore di un certo valore(in questo caso 100) accenda il Led verde.
Quando la corrente è compresa tra due valori(100 e 400), accenda il Led blu.
E infine quando la corrente è maggiore di quest'ultimo valore(400) si accenda il Led rosso.
Intendiamoci, non sono bravo in queste cose, ma sto cercando di imparare
#define NAME "Ciao"
#define VERSION "0.1"
const int PIN_BACKLIGHT = 7;
const int PIN_VOLTAGE = 0;
const int PIN_LED_G = 6;
const int PIN_LED_B = 5;
const int PIN_LED_R = 4;
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
int VOLTAGE_CURRENT;
float VOLTAGE_CALCULATED;
const int SENSOR_INTERVAL = 500;
const float VOLTAGE_STEP = 0.1;
void setup() {
pinMode(PIN_BACKLIGHT, OUTPUT);
pinMode(PIN_VOLTAGE, INPUT);
pinMode(PIN_LED_G, OUTPUT);
pinMode(PIN_LED_B, OUTPUT);
pinMode(PIN_LED_R, OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print(NAME);
lcd.setCursor(0, 1);
lcd.print("Versione ");
lcd.print(VERSION);
digitalWrite(PIN_BACKLIGHT, HIGH);
#ifdef DEBUG
delay(2000);
lcd.setCursor(0, 1);
lcd.print("Debug abilitato!");
lcd.print(VERSION);
Serial.begin(9600);
Serial.println("============================");
Serial.println(NAME);
Serial.println("Versione ");
Serial.println(VERSION);
Serial.println("============================");
Serial.println("Messaggi debug:");
Serial.println("----------------------------");
#endif
delay(2000);
lcd.clear();
void showLabels()
{
lcd.setCursor(0, 1);
lcd.print("Volt ");
}
void showVoltage()
{
lcd.setCursor(0, 0);
lcd.print(VOLTAGE_CALCULATED, 2);
lcd.print(" V");
if (VOLTAGE_CALCULATED<10)
lcd.print(" ");
}
void readVoltage()
{
VOLTAGE_CURRENT = analogRead(PIN_VOLTAGE);
if ( VOLTAGE_CURRENT < 100) {
digitalWrite(PIN_LED_R, HIGH);
}
if ( VOLTAGE_CURRENT=>100) && ( VOLTAGE_CURRENT=<=400) {
digitalWrite(PIN_LED_B, HIGH);
}
if ( VOLTAGE_CURRENT > 400) {
digitalWrite(PIN_LED_G, HIGH);
}
}
}