#include <HX711.h>
#define LED1 2
#include <SD.h>
#include <SPI.h>
#define PULSANTE 9
File myFile;
int pinCS = 10;
HX711 cell(5,4);
int val = 0;
volatile byte stato = LOW;
long lastBlink = millis();
int ledState = LOW;
float zero;
float lecture;
float attuale;
int potentiometerPin = A0;
int value = 0;
int potentiometer = 0;
int spostamento = 0;
int delta_spostamento = 0;
int spostamentoprec = 0;
void debug(){
value = analogRead(potentiometerPin); // leggo valore potenziometro
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.print(delta_spostamento);
Serial.print(",");
Serial.println(lecture);
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");
}
}
void setup(){
Serial.begin(9600);
pinMode(pinCS,OUTPUT);
if (!SD.begin()) { // Initialize SD card
Serial.println("Could not initialize SD card."); // if return value is false, something went wrong.
}
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.");
}
}
attachInterrupt( digitalPinToInterrupt(2), debug, HIGH );
pinMode( LED1, OUTPUT );
Serial.println( "Setup Done" );
zero = cell.read();
potentiometer = analogRead(potentiometerPin);
pinMode(PULSANTE, INPUT);
}
void loop(){
val = digitalRead(PULSANTE);
digitalWrite( LED1, ledState );
if ((val != HIGH)) {
if ( millis() - lastBlink == 40){
lastBlink = millis();
if ( ledState == LOW )
ledState = HIGH;
else
ledState = LOW;
}
}else if(val == HIGH){
ledState =LOW;
}
}
Il programma deve prendere ogni 25 Hz (40 millisecondi) il valore di un potenziometro e quello di una cella di carico. Il campionamento è stato grazie ad un interrupt governato da un Led. Quando un pulsante viene premuto l'acquisizione si ferma. Ora il mio problema è che una volta staccata l'alimentazione e poi ricollegata il programma non prende più l'acquisizione bensì rimane spento. Per intenderci il led rimane spento invece che lampeggiare. Grazie dell'aiuto e scusate se posso essere stato poco chiaro