Hey everyone, this is my first posting. I recently started throwing together some arduino projects such as face tracking, servos controlled with a mouse, sonar etc with processing. I am somewhat of a beginner though and just followed the tutorials, Ive adjusted my code and hardware so all these features work without changing any wiring etc. I then wrote a program to display different numbers with a 7 segment led from radioshack. My idea was as it switches numbers to switch sketches and ultimately throw the more advanced sketches on there once I got the hang of it. I got some basic one to pair for the time being like blink and fade but when I tried to use a basic sonar testing program it seems like the sensor falls out of sync if something is not in front of it or moves out of a certain range. It does not reset though the code I transferred works fine when it stands alone. I am sure I am missing some loop or parenthesis. Can anyone help point me in a right direction? I followed an ada merging tutorial and a good one i found on vimeo. Here is the code:
int led = 11;
int brightness = 0; // how bright the LED is
int fadeAmount = 5;
#define echoPin A2 // Echo Pin
#define trigPin A3 // Trigger Pin
#define LEDPin 13 // Onboard LED
int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A4);
// print out the value you read:
Serial.println(sensorValue);
//0
if (sensorValue < 100 && sensorValue >= 0){
//0
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 0);
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
delay (100);}
if (sensorValue < 200 && sensorValue > 100){
//1
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 1);
digitalWrite(10, 0);
analogWrite(led, brightness);
// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// wait for 30 milliseconds to see the dimming effect
delay (100);}
//2
if (sensorValue < 300 && sensorValue > 200){
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 0);
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;
if (distance >= maximumRange || distance <= minimumRange){
/* Send a negative number to computer and Turn LED ON
to indicate "out of range" /
Serial.println("-1");
digitalWrite(LEDPin, HIGH);
}
else {
/ Send the distance to the computer using Serial protocol, and
turn LED OFF to indicate successful reading. */
Serial.println(distance);
digitalWrite(LEDPin, LOW);
}
//Delay 50ms before next reading.
delay (100);}
//3
if (sensorValue < 400 && sensorValue > 300){
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 1);
digitalWrite(10, 0);
delay (100);}
//4
if (sensorValue < 500 && sensorValue > 400){
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 1);
digitalWrite(10, 0);
delay (100);}
//5
if (sensorValue < 600 && sensorValue > 500){
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 0);
delay (100);}
//6
if (sensorValue < 700 && sensorValue > 600){
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);
digitalWrite(10, 0);
delay (100);}
//7
if (sensorValue < 800 && sensorValue > 700){
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 1);
digitalWrite(10, 0);
delay (100);}
//8
if (sensorValue < 900 && sensorValue > 800){
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 0);
delay (100);}
//9
if ( sensorValue > 900){
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 1);
digitalWrite(10, 0);
delay (100);
}
}