I need som help with my code (is not a programmer...
I want to communicate serial between two Arduino. A potentiometer on one board to control an output on the other. I'm building a ROV and want to control the steering in this way.
Can I have the serial communication through 60 feet of cable?)
------------Transmit code on board no 1---------------
//Send potentiometer value from one Arudino board to another
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin with LED for control of pot function
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM
void setup()
{
Serial.begin(9600);
}
void loop()
{
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);
// print the results to the serial monitor:
Serial.println(outputValue);
delay(10);
}
------------Receiving code on board no 2---------------
//Recive potentiometer value and dim a LED
int outputValue = 127; // start value
const int analogOutPin = 6; // Analog output pin that the LED is attached to
void setup()
{
Serial.begin(9600);
}
void loop()
{
// if we get a valid byte, read analog ins:
if (Serial.available() > 0) {
// get incoming byte:
outputValue = Serial.read();
delay(10);
}
analogWrite(analogOutPin, outputValue);
}
I need som help with my code (is not a programmer...
OK.
Serial.println(outputValue);
Sends the value as a string.
  outputValue = Serial.read();
Reads one character, and assumes that it is the value. It isn't.
You need to change the sender to add start and end of packet delimiters, and change the receiver to read a string, and convert the value back to an int.
#define SOP '<'
#define EOP '>'
bool started = false;
bool ended = false;
char inData[80];
byte index;
void setup()
{
 Serial.begin(57600);
 // Other stuff...
}
void loop()
{
 // Read all serial data available, as fast as possible
 while(Serial.available() > 0)
 {
  char inChar = Serial.read();
  if(inChar == SOP)
  {
   index = 0;
   inData[index] = '\0';
   started = true;
   ended = false;
  }
  else if(inChar == EOP)
  {
   ended = true;
   break;
  }
  else
  {
   if(index < 79)
   {
    inData[index] = inChar;
    index++;
    inData[index] = '\0';
   }
  }
 }
 // We are here either because all pending serial
 // data has been read OR because an end of
 // packet marker arrived. Which is it?
 if(started && ended)
 {
  // The end of packet marker arrived. Process the packet
  // Reset for the next packet
  started = false;
  ended = false;
  index = 0;
  inData[index] = '\0';
 }
}
Where it says "Process the packet", inData will contain the string sent by the sender, minus the start and end of packet markers, so
Does this only with one sensor or can I define multiple "outputs"?
You can have any number of outputs. Separate them with commas or other delimiters. On the receiver, then, use strtok() to extract the tokens (the string representing each value) and convert the token to a numeric value using atoi().
That is a useful tread. I am learning here... About atoi() and strtok() function... I can not find those functions ( atoi() and strtok() ) in the Arduino reference list of functions IDE --> Help--> reference Where can I find that ? and do I need a #include <whatever.h> to use those functions ?