here is the code i have created to solve the problem...
however the playback function doesnt seem to function as required.. as well as this when in the playback subroutine the lcd clears however the pots are still displayed from the enter data 1 subroutine.. how can i remove them.. i thought lcd clear would do this :~
/*
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 13
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
* Pot to Analog 0
* enable pin 8
* motor 1 pin 9
* motor 2 pin 10
*/
#include <LiquidCrystal.h> // include the library code:
LiquidCrystal lcd(12, 11, 5, 13, 3, 2); // initialize the library with the numbers of the interface pins
int sensorPin = A1; // select the input pin for the potentiometer for time
int sensorValue = 0; // variable to store the value coming from the sensor
const int motor1Pin = 9; // H-bridge leg 1 (pin 9, 1A)
const int motor2Pin = 10; // H-bridge leg 2 (pin 10, 2A)
const int enablePin =8; // H-bridge enable pin 8
const int PotPin = A0; // input pin for the potentiometer for speed/direction
int x = 10;
int zero_speed;
int Reverse;
int Forward;
int sensorValue2 = 1; // variable to store the value coming from the sensor
int value = analogRead(PotPin);
int speed = abs(value - 512)/2 ; // 0..1023 -> -512.0..+512 -> 512..0..512 -> 256..0..256
int direction = value < 512; // or "value > 512" to reverse the action of the pot
char flag;
int count1 = 0;
int time_1;
int speed1;
int drive1;
//*************************************************************************************
void enter_point_a() // Subroutime "enter_point_a"
{
lcd.clear(); // Clear Screen
lcd.setCursor(1, 0); // set the cursor to column 0, line 0
lcd.print("Enter Data for"); // Print "Enter Data for"
lcd.setCursor(4, 1); // set the cursor to column 4, line 1
lcd.print("Point A"); // Print "Point A"
delay(3000); // Delay
lcd.clear(); // Clear Screen
enter_data_1();
}
//*************************************************************************************
void enter_data_1() // Subroutime "enter_data_1"
{
digitalWrite(7, HIGH); // set the LED on
lcd.setCursor(0, 0); // set the cursor to column 0, line 0
lcd.print("Time"); // Print "Time"
lcd.setCursor(4, 0); // set the cursor to column 4, line 0
lcd.print(":"); // Print ":"
lcd.setCursor(8, 0); // set the cursor to column 8, line 0
lcd.print("."); // Print ":"
lcd.setCursor(12, 0); // set the cursor to column 12, line 0
lcd.print("Min"); // Print "Min"
lcd.setCursor(0, 1); // set the cursor to column 0, line 1
lcd.print("Rotation"); // Print "Rotation"
lcd.setCursor(8,1); // set the cursor to column 8, line 0
lcd.print(":"); //Print ":"
Pot_Speed_Time_1(); // go to sub routine "Pot_Speed_Time"
digitalWrite(7, LOW); // set the LED off
}
//*************************************************************************************
void Pot_Speed_Time_1()
{
while(1)
{
digitalWrite (enablePin, HIGH);
int retval = analogRead(value);
if (retval < 510)
{
Reverse = map(retval, 0, 510, 255, 0);
analogWrite (motor1Pin, Reverse);
count_pulse_neg_1();
}
else if(retval > 518)
{
Forward = map(retval, 518, 1023, 0, 255);
analogWrite (motor2Pin, Forward);
count_pulse_pos_1();
}
else
{
analogWrite (motor1Pin, 0);
analogWrite (motor2Pin, 0);
}
int val = analogRead(sensorPin); // read value from pot at sensorPin
time_1 = map(val, 0, 1023, 0, 600); // map function
lcd.setCursor(6,0); // set the cursor to column 0, line 1
lcd.print(time_1/60); // Print "val/100"
lcd.setCursor(8, 0); // set the cursor to column 2, line 1
lcd.print(":"); // Print ":"
lcd.setCursor(9,0); // set the cursor to column 3, line 1
lcd.print(time_1/10); // Print "val/10"
if (digitalRead(1) == HIGH) // if button is pressed
{ // then go to sub routine
lcd.clear(); // Clear Screen
playback(); // go to sub routine "enter_point_b"
}
}
}
//*****************************************************************************************
void count_pulse_pos_1()
{
if((digitalRead(4) == HIGH) && (flag == 0))
{
count1 ++ ;
flag = 1;
}
if(digitalRead(4) == LOW)
{
flag = 0;
}
lcd.setCursor(10,1);
lcd.print((count1/1.4));
}
//***********************************************************************
void count_pulse_neg_1()
{
if((digitalRead(4) == HIGH) && (flag == 0))
{
count1 --;
flag = 1;
}
if(digitalRead(4) == LOW)
{
flag = 0;
}
lcd.setCursor(10,1);
lcd.print((count1/1.4));
}
//***********************************************************************
void zero_motor()
{
zero_speed= map(x, 0,50,0, 255);
lcd.setCursor(1,0);
lcd.print("Configuration");
lcd.setCursor(2,1);
lcd.print("In Progress");
while(1)
{
digitalWrite(enablePin, HIGH);
analogWrite (motor1Pin, zero_speed);
digitalWrite(motor2Pin, LOW);
if(digitalRead(6) == HIGH)
{
digitalWrite(motor1Pin, LOW);
digitalWrite(motor2Pin, LOW);
lcd.clear();
return;
}
}
lcd.clear();
}
//*************************************************************************************
void playback()
{
lcd.setCursor (4,0);
lcd.print("PLAYBACK");
if (analogRead (16), HIGH);
{
lcd.setCursor (4,0);
lcd.print("POINT A");
speed1 = count1/time_1;
digitalWrite (enablePin, HIGH);
int val = analogRead(sensorPin); // read value from pot at sensorPin
drive1 = map(speed1, 0, 500, 0, 225);
if (count1 >(0));
{
digitalWrite(motor1Pin, drive1);
digitalWrite(motor2Pin, LOW);
}
if (count1 <(0));
{
digitalWrite(motor1Pin, LOW);
digitalWrite(motor2Pin, drive1);
}
if (count1 == count1);
{
digitalWrite(motor1Pin, LOW);
digitalWrite(motor2Pin, LOW);
}
}
}
//***********************************************************************
void setup()
{
lcd.begin(16, 2); // set up the LCD's number of columns and rows:
zero_motor();
enter_point_a(); // go to sub routine "enter_point_a"
}
void loop()
{
playback(); // go to sub routine "enter_point_a_data"
}