Morning All.
I have tried the below to read the weight of a scale and output to cloud. However my readings are erratic and not correct. Could it be that the scale is switching between the 7 segments to fast and the Time hold is to little for the Argon to read correctly.
for testing I wrote some simple code just to see if I can get the correct values
include "Particle.h"
#include "wire.h"
/********************************************************************************************/
//SerialLogHandler logHandler(LOG_LEVEL_TRACE);
SYSTEM_THREAD(ENABLED);
SYSTEM_MODE(AUTOMATIC);
bool DIGIT_CC_0;//hold value of weight LSB
bool DIGIT_CC_1;//hold value of weight
bool DIGIT_CC_2;//hold value of weight
bool DIGIT_CC_3;//hold value of weight
bool DIGIT_CC_4;//hold value of weight MSB
bool segment_a;
bool segment_b;
bool segment_c;
bool segment_d;
bool segment_e;
bool segment_f;
bool segment_g;
bool segment_dp;
#define CC_0 A0//address line for digit 0
#define CC_1 A1//address line for digit 1
#define CC_2 A2//address line for digit 2
#define CC_3 A3//address line for digit 3
#define CC_4 A4//address line for digit 4
#define a D0//data read a from 7 segment
#define b D1//data read b from 7 segment
#define g D2//data read g from 7 segment
#define c D3//data read c from 7 segment
#define f D4//data read f from 7 segment
#define d D5//data read d from 7 segment
#define e D6//data read e from 7 segment
#define dp D7//data read dp from 7 segment
//setup remote cloud reset
#define DELAY_BEFORE_REBOOT 2000
unsigned int rebootDelayMillis = DELAY_BEFORE_REBOOT;
unsigned long rebootSync = millis();
bool resetFlag = false;
void setup() {
//(void)logHandler; // Does nothing, just to eliminate the unused variable warning
SYSTEM_MODE(AUTOMATIC);
SYSTEM_THREAD(ENABLED);
Particle.keepAlive(20);
Serial.begin(115200);
pinMode(CC_0, INPUT);//common cathode digit 0 LSB
pinMode(CC_1, INPUT);//common cathode digit 1
pinMode(CC_2, INPUT);//common cathode digit 2
pinMode(CC_3, INPUT);//common cathode digit 3
pinMode(CC_4, INPUT);//common cathode digit 4 MSB
pinMode(a, INPUT);//7 segmant read
pinMode(b, INPUT);//7 segmant read
pinMode(c, INPUT);//7 segmant read
pinMode(d, INPUT);//7 segmant read
pinMode(e, INPUT);//7 segmant read
pinMode(f, INPUT);//7 segmant read
pinMode(g, INPUT);//7 segmant read
pinMode(dp, INPUT);//7 segmant read
digitalWrite (a, LOW);//off
digitalWrite (b, LOW);//off
digitalWrite (c, LOW);//off
digitalWrite (d, LOW);//off
digitalWrite (e, LOW);//off
digitalWrite (f, LOW);//off
digitalWrite (g, LOW);//off
digitalWrite (CC_0, LOW);//off
digitalWrite (CC_1, LOW);//off
digitalWrite (CC_2, LOW);//off
digitalWrite (CC_3, LOW);//of
}
void loop() {
DIGIT_CC_0 = digitalRead(CC_0);//check if cc_1 selected
DIGIT_CC_1 = digitalRead(CC_1);//check if cc_1 selected
DIGIT_CC_2 = digitalRead(CC_2);//check if cc_1 selected
DIGIT_CC_3 = digitalRead(CC_3);//check if cc_1 selected
DIGIT_CC_4 = digitalRead(CC_4);//check if cc_1 selected
Serial.printf("DIGIT_CC_0 :%d \n",DIGIT_CC_0);
Serial.printf("DIGIT_CC_1 :%d \n",DIGIT_CC_1);
Serial.printf("DIGIT_CC_2 :%d \n",DIGIT_CC_2);
Serial.printf("DIGIT_CC_3 :%d \n",DIGIT_CC_3);
Serial.printf("DIGIT_CC_4 :%d \n",DIGIT_CC_4);
Serial.printf("\n");
Serial.printf("\n");
if ((DIGIT_CC_0 == 1)&&(DIGIT_CC_1 == 0)&&(DIGIT_CC_2 == 1)&&(DIGIT_CC_3 == 1)&&(DIGIT_CC_4 == 1)){
segment_a = digitalRead(D0);//
segment_b = digitalRead(D1);//
segment_c = digitalRead(D3);//
segment_d = digitalRead(D5);//
segment_e = digitalRead(D6);//
segment_f = digitalRead(D4);//
segment_g = digitalRead(D2);//
Serial.printf("segment a:%d \n",segment_a);
Serial.printf("segment b:%d \n",segment_b);
Serial.printf("segment c:%d \n",segment_c);
Serial.printf("segment d:%d \n",segment_d);
Serial.printf("segment e:%d \n",segment_e);
Serial.printf("segment f:%d \n",segment_f);
Serial.printf("segment g:%d \n",segment_g);
if ((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 1)&&(segment_b == 1)&&(segment_a == 1)){
Serial.print("the number is 0\n");
}
if ((segment_e == 0)&&(segment_d == 0)&&(segment_f == 0)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 0)){
Serial.print("the number is 1\n");
}
/* if ((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 1)) {
Serial.print("the number is 2\n");
}
if ((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 1)) {
Serial.print("the number is 3\n");
}
if ((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 1)) {
Serial.print("the number is 4\n");
}
if ((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 1)){
Serial.print("the number is 5\n");
}
if ((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 1)){
Serial.print("the number is 6\n");
}
if ((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 1)){
Serial.print("the number is 7\n");
}
if ((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 1)){
Serial.print("the number is 8\n");
}
if((segment_e == 1)&&(segment_d == 1)&&(segment_f == 1)&&(segment_c == 1)&&(segment_g == 0)&&(segment_b == 1)&&(segment_a == 1)){
Serial.print("the number is 9\n");
}*/
}
}//end of main
//*****************************************************************************************
//Custom functions
//*****************************************************************************************
//Softdelay function
inline void softDelay(uint32_t msDelay){
for (uint32_t ms = millis();
millis() - ms < msDelay;
Particle.process());
}