AvBrand Exploring Technology
AvBrand Exploring Technology
All Projects Car PC Thermostat Power Monitor Toilet Dog Dish PopCARD Cheapo Power Dance Floor 

Power Monitor Source Code

This code is copyright © 2009 Avatar-X. If you use it, please let me know.
void setup()   {                
  
  // Pin 13 is the blinking status LED

  pinMode(13, OUTPUT);    

  // Pin 2 is the input from the phototransistor
  pinMode(2, INPUT);

  // Start serial communication
  Serial.begin(115200);
}

int lastRead = HIGH; // The last reading (off)

long lastUpdate = 0; // The last time we sent an update
long counter = 0;    // The current counter

// Track the rate.
long lastBlink = 0;  // The last time we saw a blink

// Average blink times over 10 blinks

long blinkTimes[10];  
byte currBlink = 0;

void loop()                     
{
  int r = digitalRead(2);

  if (r != lastRead)
  {
    lastRead = r;

    if (r == LOW) // A blink has been detected.
    {

      counter++;
      blinkTimes[currBlink] = millis() - lastBlink;

      lastBlink = millis();
      currBlink++;
      if (currBlink > 9) currBlink = 0;

      digitalWrite(13,  HIGH);
    } else {
      digitalWrite(13,  LOW);

    }
  }

  if (millis() > lastUpdate + 1000 || millis() < lastUpdate)

  {
    // Send data out the serial port.
    lastUpdate = millis();

    Serial.print(counter);
    Serial.print("\t");

    Serial.println(avgBlinks());
  }

}

long avgBlinks()
{
  // Calculate the average time between blinks. 
  // This gives us the number we need to calculate the watts
  long avgCounter = 0;

  for (int i = 0; i <= 9; i++)

  {
    avgCounter += blinkTimes[i];
  } 
  return avgCounter / 9;

}
	
	
	
	
copyright © 2024 AvBrand.com - sitemap