- // Garbage Gauge
- // pkvi
- #ifdef SPARK
- #include "ThingSpeak/ThingSpeak.h"
- #else
- #include "ThingSpeak.h"
- #endif
- #ifdef SPARK
- TCPClient client;
- #define VOLTAGE_MAX 3.3
- #define VOLTAGE_MAXCOUNTS 4095.0
- #endif
- // ThingSpeak
- unsigned long myChannelNumber = CHANNEL;
- const char * myWriteAPIKey = "APIKEY";
- // Input
- int scale = A5;
- // Variables
- int current = 0;
- int tare = 0;
- int preweight = 0;
- int adjust = 0;
- int week = 0;
- int total = 0;
- int wait = 10800; // 3 Hours
- void setup() {
- Serial.begin(9600);
- ThingSpeak.begin(client);
- // Calm Down Power-Up Fluctuation
- delay(5000);
- // Empty Garbage Bin Weight
- tare = analogRead(scale);
- delay(5000);
- }
- void loop() {
- // Read Pot
- current = analogRead(scale);
- // Convert to Pounds
- // Pot Turn Limitation 254 Pounds
- // Particle Photon is 0 to 4095
- preweight = map(current, 0, 4095, 0, 254);
- // Subtract Tare
- adjust = preweight - tare;
- if (adjust < week && preweight < tare) {
- // No Barrel? Ignore
- }
- else if (adjust < week && preweight > tare) {
- // Barrel Emptied? Reset Week
- week = adjust;
- }
- else if (adjust == week) {
- // No Change? Ignore
- }
- else if (adjust > week) {
- // Remove Previous Week Addition
- total = total - week;
- // Adjust Week
- week = adjust;
- // Add to Total
- total = total + week;
- }
- // Total Amount
- ThingSpeak.writeField(myChannelNumber, 1, total, myWriteAPIKey);
- // Amount Since Emptying
- ThingSpeak.writeField(myChannelNumber, 2, week, myWriteAPIKey);
- // Low Power During Delay
- System.sleep(wait);
- delay(wait);
- // Allow WIFI Recovery
- delay(10000);
- }