Grazie Mille Guglielmo ;D
Sono riuscito ad avere i dati aggiornati, e va tutto perfetto tranne che per l'inversione di marcia, che sembra essere ostacolata dall'altro verso e si compensa. ![]()
Ecco il codice corretto.
#define ORARIO 2
#define ANTIOR 3
#define STEP 11
#define DIR 10
#define MODE0 12
// #define MODE1 11
// #define MODE2 12
#define ENABLE 13
#include <LiquidCrystal.h>
int POTENZ = A0;
int ora = 0;
int ant = 0;
int VALORE01 = 0;
int VALORE02 = 0;
int i = 0;
int tempPin = A1;
int analogInput = A2;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0; // inserire valore esatto resistenza R1 (100K)
float R2 = 10000.0; // inserire valore esatto resistenza R2 (10K)
int value = 0;
// BS E D4 D5 D6 D7
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);
void setup() {
lcd.begin(16, 2);
Serial.begin( 9600 );
// Serial.println(F("Tempo in Millisecondi per impulso"));
pinMode( ENABLE , OUTPUT );
pinMode( DIR , OUTPUT );
pinMode( STEP , OUTPUT );
pinMode( MODE0 , OUTPUT );
//pinMode( MODE1 , OUTPUT );
//pinMode( MODE2 , OUTPUT );
pinMode(POTENZ , INPUT );
pinMode(ORARIO , INPUT );
pinMode(ANTIOR , INPUT );
pinMode(tempPin , INPUT );
pinMode(analogInput, INPUT);
}
void loop() {
int readPin = analogRead(POTENZ);
int delayTime = map(readPin, 0, 1024, 70, 80);
digitalWrite( DIR , HIGH );
digitalWrite( STEP , LOW );
digitalWrite( MODE0 , HIGH );
for ( i = 0; i < 1; i++) {
digitalWrite( STEP, HIGH );
delay( delayTime);
digitalWrite( STEP, LOW );
delay( delayTime);
VALORE01 = analogRead(POTENZ);
VALORE02 = analogRead(value);
// tempPin =analogRead(tempC);
// Serial.println();
ora = digitalRead(ORARIO);
ant = digitalRead(ANTIOR);
}
if (ora == HIGH) {
for ( i = 0; i < 1; i++) {}
digitalWrite( DIR , HIGH);
digitalWrite( STEP, HIGH );
delay( 1 );
digitalWrite( STEP, LOW );
delay( 1 );
}
if (ant == HIGH) {
for ( i = 0; i < 1; i++) {}
digitalWrite( DIR , LOW);
digitalWrite( STEP, HIGH );
delay( 1 );
digitalWrite( STEP, LOW );
delay( 1 );
}
value = analogRead(analogInput);
vout = (value * 5.0) / 1024.0;
// inserire al posto di 5.0V l`uscita in volt tra i Pin 5V e GND del vostro Arduino
vin = vout / (R2 / (R1 + R2));
if (vin < 0.09) {
vin = 0.0;
}
// Sensore temperatura e conversione
int tempReading = analogRead(tempPin);
double tempK = log(10000.0 * ((1024.0 / tempReading - 1)));
tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK )) * tempK ); // Temp Kelvin
float tempC = tempK - 273.15; // Convert Kelvin to Celcius
float tempF = (tempC * 9.0) / 5.0 + 32.0; // Convert Celcius to Fahrenheit
lcd.setCursor(0, 0);
lcd.print("Precisione ");
lcd.setCursor(11, 0);
lcd.print(VALORE01);
delay(1);
lcd.setCursor(0, 1);
lcd.print("Temp V ");
lcd.setCursor(4, 1);
lcd.print(tempC);
delay(1);
lcd.setCursor(11, 1);
// lcd.print("INPUT V= ");
lcd.print(vin);
delay(1);
}