Hi, I'm posting my problem here because that neither me or my brother can find why this program dosen't work. I tried to rewrite it completly many times, use the "else if" instead of all my "if" "else" and I tried other programs on the net. I use a reed switch wich is connected to A0 but I use it as digital input 14 because that my two 7 segments displays use all the digital outputs from 0 to 13. Thank you for your help and sorry for my bad english, i'm 16 y-o and french...
btw: this program shows the speed in KM/h and its designed for a 72.5 milimiters wheel (longboard wheels)
Here's the sketch:
#define DELAY_START HIGH // or low depending on your blink detection logic
#define DELAY_END !DELAY_START // this is the inverse of the above
const int buttonPin = 14;
int buttonState = 0;
long start, duration;
long start2, duration2;
long start1, duration1;
long duration3;
long vitesse;
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(1, OUTPUT);
pinMode(0, OUTPUT);
}
void loop(){
duration = 0;
while( digitalRead(buttonPin) != DELAY_START );
start1 = millis();
while( digitalRead(buttonPin) != DELAY_END );
duration1 = start1 - millis();
delay(50);
while( digitalRead(buttonPin) != DELAY_START );
start2 = millis();
while( digitalRead(buttonPin) != DELAY_END );
duration2 = start2 - millis();
duration3 = duration1 + duration2;
duration = duration3/2;
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
if (217/duration*3.6 == 1 or 11 or 21 or 31) {
digitalWrite(1, HIGH);
digitalWrite(4, HIGH);
delay(500);
}
else {
digitalWrite(1, LOW);
digitalWrite(4, LOW);
}
if (217/duration*3.6 == 2 or 12 or 22 or 32) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(0, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
delay(500);
}
else {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(0, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
if (217/duration*3.6 == 3 or 13 or 23 or 33) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(0, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
delay(500);
}
else {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(0, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
}
if (217/duration*3.6 == 4 or 14 or 24 or 34) {
digitalWrite(1, HIGH);
digitalWrite(0, HIGH);
digitalWrite(3, HIGH);
digitalWrite(6, HIGH);
delay(500);
}
else {
digitalWrite(1, LOW);
digitalWrite(0, LOW);
digitalWrite(3, LOW);
digitalWrite(6, LOW);
}
if (217/duration*3.6 == 5 or 15 or 25 or 35) {
digitalWrite(2, HIGH);
digitalWrite(1, HIGH);
digitalWrite(0, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, HIGH);
delay(500);
}
else {
digitalWrite(2, LOW);
digitalWrite(1, LOW);
digitalWrite(0, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
}
if (217/duration*3.6 == 6 or 16 or 26 or 36) {
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
digitalWrite(7, HIGH);
delay(500);
}
else {
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
}
if (217/duration*3.6 == 7 or 17 or 27 or 37) {
digitalWrite(9, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
delay(500);
}
else {
digitalWrite(9, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if (217/duration*3.6 == 8 or 18 or 28 or 38) {
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
delay(500);
}
else {
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
if (217/duration*3.6 == 9 or 19 or 29 or 39) {
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
delay(500);
}
else {
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
[code]
[/code]