Hey everyone, just working on a simple project for my electrical class. I have two 7 segment displays wired up to a few bcd converters that are outputting values for a coin detection circuit. The input in this case comes from a photo-transistor that when blocked, produces 5 v. However, when I read this input, the Arduino takes the signal over and over again, and it speeds through the 1-35 case statements.
What I want to know is can I hold this input and not take a new input until the old one is no longer high?
(when the coin is removed, only then does it accept new input)
Here is my code so far:
int j = 6;
int k = 8;
int l = 10;
void setup() {
Serial.begin(9600);
pinMode(j, OUTPUT);
pinMode(k, OUTPUT);
pinMode(l, OUTPUT); //thats a "l" not a one
pinMode(4, INPUT);
}
void loop()
{
for (int x = 0; x < 40;)
{
int p;
p = digitalRead(4); //what dosen't work
if (p == 1)
x= x + 5;
printa(x);
}
}
int refresh() //just in case
{
digitalWrite(j, LOW);
digitalWrite(j, LOW); //lsb
digitalWrite(k, LOW);
}
int printa(int x) //what writes the value to the display
{ //works perfectly
if (x == 0)
{
digitalWrite(j, LOW); //lsb
digitalWrite(k, LOW);
digitalWrite(l, LOW); //msb
}
if (x == 5)
{
digitalWrite(j, LOW); //lsb
digitalWrite(k, LOW);
digitalWrite(l, HIGH); //msb
}
else if (x == 10)
{
digitalWrite(j, LOW); //lsb
digitalWrite(k, HIGH);
digitalWrite(l, LOW); //msb
}
else if (x == 15)
{
digitalWrite(j, LOW); //lsb
digitalWrite(k, HIGH);
digitalWrite(l, HIGH); //msb
}
else if (x == 20)
{
digitalWrite(j, HIGH); //lsb
digitalWrite(k, LOW);
digitalWrite(l, LOW); //msb
}
else if (x == 25)
{
digitalWrite(j, HIGH); //lsb
digitalWrite(k, LOW);
digitalWrite(l, HIGH); //msb
}
else if (x == 30)
{
digitalWrite(j, HIGH); //lsb
digitalWrite(k, HIGH);
digitalWrite(l, LOW); //msb
}
else if (x == 35)
{
digitalWrite(j, HIGH); //lsb
digitalWrite(k, HIGH);
digitalWrite(l, HIGH); //msb
}
}