Pages: [1]   Go Down
Author Topic: Help in adding a simple counter?  (Read 107 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

OK so I finally got the LCD shield to read and display. But for the life of me I'm stuck on the simple task of adding a counter to keep track of how many times the shutter has been triggered. I tried to change the button push code to meet my needs but past printing out "Calibrate" for the first 30 seconds  I'm lost. I get numbers going so fast I cant even read them and just for a flash it prints out "Number of Frames" and back to numbers going so fast I cant even read them. I'm wanting it to read "Number of Frames" all the time and just change the frame number.
Can anyone point me in the right direction?

Code:

#include <multiCameraIrControl.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

// this constant won't change:
 const int  FramePin = 12;    // the pin that the Framebutton is attached to
const int ledPin = 13;        // pin that the LED is attached to
// Variables will change:
int FramePushCounter = 0;   // counter for the number of Frame presses
int FrameState = 0;         // current state of the Framebutton
int lastFrameState = 0;     // previous state of the Framebutton
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const int sensor1Pin = A0;      //Red/Gray
const int sensor2Pin = A1;      // White/White  Yellow/Black=Ground
Olympus E510(12); //  (camera model E510) Pin 12 Hot IR LED Red Wire

int sensor1Value = 0;         // the sensor value
int sensor1Min = 1023;        // minimum sensor value
int sensor1Max = 0;           // maximum sensor value
int sensor2Value = 0;         // the sensor value
int sensor2Min = 1023;        // minimum sensor value
int sensor2Max = 0;           // maximum sensor value


void setup() {
   // initialize the button pin as a input:
   pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);   // turn on LED to signal the start of the calibration period:
 lcd.begin(16, 2);
  lcd.println("Calibrate");
  while (millis() < 30000)  // calibrate during the first 30 seconds
 
{
    sensor1Value = analogRead(sensor1Pin);
    sensor2Value = analogRead(sensor2Pin);
    if (sensor1Value > sensor1Max) // record the maximum sensor value
{
      sensor1Max = sensor1Value;
    }
if (sensor2Value > sensor2Max) {
      sensor2Max = sensor2Value;
    }
    if (sensor1Value < sensor1Min)  // record the minimum sensor value
{
      sensor1Min = sensor1Value;
    }
 if (sensor2Value < sensor2Min) {
      sensor2Min = sensor2Value;
    }
  }
  digitalWrite(13, LOW);// signal the end of the calibration period
   lcd.clear();
}
void loop()
{ lcd.println("on");
       lcd.print("Number of Frames:  ");
       lcd.println(FramePushCounter);
  sensor1Value = analogRead(sensor1Pin); // read the sensor:
 sensor2Value = analogRead(sensor2Pin);
  sensor1Value = map(sensor1Value, sensor1Min, sensor1Max, 0, 255); // apply the calibration to the sensor reading
sensor2Value = map(sensor2Value, sensor2Min, sensor2Max, 0, 255);
  sensor1Value = constrain(sensor1Value, 0, 255);// in case the sensor value is outside the range seen during calibration
 sensor2Value = constrain(sensor2Value, 0, 255);
if (sensor1Value == 0,sensor2Value == 0)

{
 E510.shutterNow(); // trigger the shutter

 FrameState = digitalRead(12); // read the  Framebutton input pin:
   if (FrameState != lastFrameState){ // compare the  FrameState to its previous state
     if (FrameState == HIGH){  // if the state has changed, increment the counter
       FramePushCounter++; // if the current state is HIGH then the button // went from off to on:
     
     }   
     else {
       // if the current state is LOW then the button
       // went from on to off:
       lcd.println("off");
     }
   }
   // save the current state as the last state,
   //for next time through the loop
   lastFrameState = FrameState;
 
   // turns on the LED every four button pushes by
   // checking the modulo of the button push counter.
   // the modulo function gives you the remainder of
   // the division of two numbers:
   if (FramePushCounter % 4 == 0) {
     digitalWrite(ledPin, HIGH);
   } else {
    digitalWrite(ledPin, LOW);
   }
}
}

« Last Edit: April 11, 2014, 05:17:55 am by 1sennafan » Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
   pinMode(12, OUTPUT);
...
 FrameState = digitalRead(12); // read the  Framebutton input pin:

Do you think that reading from an output pin makes sense?

BTW: format your code, the IDE offers an automatic code formatter. Use it!
Logged

Pages: [1]   Go Up
Jump to: