I am trying write four digit number to SPIFFS file, and read that four digit from SPIFFS file and display on seven segment.
The code, I am writing as below, I got "0" on each segment, but if manually make number = 4567; then seven segment show proper number on every segment.
Please help me to learn more about how to read & write and convert to object data.
Here is my code;
#include <FS.h>
const char* filename = "/InputInt.txt";
int digit_1 = 0;
int digit_2 = 0;
int digit_3 = 0;
int digit_4 = 0;
int Anode_1 = 16;
int Anode_2 = 14;
int Anode_3 = 5;
int Anode_4 = 4;
int count = 0;
int digits[4] ;
int AnodePins[4] = {4, 5, 14, 16};
int clockPin = 12;
int latchPin = 13;
int dataPin = 15;
int number = 0; //declear the variables
byte numbers[10] {B00000011, B10011111, B00100101, B00001101, B10011001, B01001001, B01000001, B00011111, B00000001, B00001001};
void setup() {
Serial.begin(115200);
Serial.println();
bool success = SPIFFS.begin();
if (!success) {
Serial.println("Error mounting the file system");
return;
}
SPIFFS.format();
File fw = SPIFFS.open(filename, "w");
if (!fw) {
Serial.println("Error opening file for writing");
return;
}
char Written = fw.print("1234");
if (Written == 0) {
Serial.println("File write failed");
return;
}
fw.close();
pinMode(Anode_1, OUTPUT);
pinMode(Anode_2, OUTPUT);
pinMode(Anode_3, OUTPUT);
pinMode(Anode_4, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
} //End of setup
void loop() {
int i;
File fr = SPIFFS.open(filename, "r");
if (!fr) {
Serial.println("Failed to open file for reading");
return;
}
for (i = 0; i < 4; i++) {
byte number = (Serial.write(fr.read()));
}
fr.close();
break_number(number);
display_number();
delay(3000);
} // End of loop
// seperate the input number into 4 single digits
void break_number(int num) {
Serial.println("");
digit_1 = num / 1000;
digits[0] = digit_1;
Serial.print(" Digit_1: ");
Serial.println(digit_1);
int dig_1_remove = num - (digit_1 * 1000);
digit_2 = dig_1_remove / 100;
digits[1] = digit_2;
Serial.print(" Digit_2: ");
Serial.println(digit_2);
int dig_2_remove = dig_1_remove - (digit_2 * 100);
digit_3 = dig_2_remove / 10;
digits[2] = digit_3;
Serial.print(" Digit_3: ");
Serial.println(digit_3);
digit_4 = dig_2_remove - (digit_3 * 10);
digits[3] = digit_4;
Serial.print(" Digit_4: ");
Serial.println(digit_4);
}
void display_number() { //scanning
digitalWrite(AnodePins[count], HIGH); //turn on the relevent digit
digitalWrite(latchPin, LOW); //put the shift register to read
shiftOut(dataPin, clockPin, LSBFIRST, numbers[digits[count]]); //send the data
digitalWrite(latchPin, HIGH); //put the shift register to write mode
delay(0);
digitalWrite(AnodePins[count], LOW); //turn on the relevent digit
count++; //count up the digit
if (count == 4) { // keep the count between 0-3
count = 0;
}
}
Here is the result;
1234
Digit_1: 0
Digit_2: 0
Digit_3: 0
Digit_4: 0
1234
Digit_1: 0
Digit_2: 0
Digit_3: 0
Digit_4: 0
1234
Digit_1: 0
Digit_2: 0
Digit_3: 0
Digit_4: 0
Thanks,