Grazie delle risposte! @docdoc il mio problema è che voglio i dati esattamente ogni 40 ms, putroppo è questa la maggiore difficoltà. Ho cambiato il codice e lavoro tramite un pulsante, cioè fintantochè viene premuto acquisisce mentre se il suo valore scende a zero no. ora sono riuscito ad abbassare fino ">= 20" ma mi serve qualcosa tipo "=="
#define PULSANTE 9
#include <HX711.h>
#include <SD.h>
#include <SPI.h>
HX711 cell(5,4);
File myFile;
int pinCS = 10;
boolean STATO = LOW;
int potentiometerPin = A0;
int value = 0;
int potentiometer = 0;
int spostamento = 0;
int delta_spostamento = 0;
int spostamentoprec = 0;
unsigned long referenceMillis = 0;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
unsigned long targetMillis = 0;
long zero;
long lecture;
long attuale;
void setup(){
Serial.begin(9600);
pinMode(pinCS,OUTPUT);
pinMode (PULSANTE, INPUT_PULLUP);
if (!SD.begin()) { // Initialize SD card
Serial.println("Could not initialize SD card."); // if return value is false, something went wrong. digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
}
if (SD.exists("test.txt")) { // if "file.txt" exists, fill will be deleted
Serial.println("test exists.");
if (SD.remove("test.txt") == true) {
Serial.println("Successfully removed file.");
} else {
Serial.println("Could not removed file.");
}
}
zero = cell.read();
potentiometer = analogRead(potentiometerPin);
}
void loop(){
STATO = digitalRead(PULSANTE);
if(STATO == 1) {
currentMillis = millis();
if ( currentMillis - previousMillis >= 20 ) {
value = analogRead(potentiometerPin);
attuale = cell.read();
lecture = attuale - zero;
if ( value - potentiometer >= 0 ){
spostamento = spostamento + (value - potentiometer);
delta_spostamento = spostamento - spostamentoprec;
if ( lecture < 0 ){
lecture = lecture*(-1);
}
}
else {
spostamento = spostamento + (potentiometer - value);
delta_spostamento = spostamento - spostamentoprec;
if ( lecture < 0 ){
lecture = lecture*(-1);
}
}
potentiometer = value;
spostamentoprec = spostamento;
zero = attuale;
Serial.println(millis());
myFile = SD.open("test.txt",FILE_WRITE);
if (myFile) {
myFile.print(millis());
myFile.print(",");
myFile.print(delta_spostamento);
myFile.print(",");
myFile.println(lecture);
myFile.close(); // close the file
}else {
Serial.println("error opening test.txt");
}
}
}
}
come faccio ad avere intervalli "regolari"?