Pages: 1 [2]   Go Down
Author Topic: problem rc receiver signal  (Read 1844 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Edison Member
*
Karma: 33
Posts: 1447
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Then you need something like (14330 < val) || (val < 14340))

or (abs (val-14335) < 5)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arrch i'll give that a go
Logged

Temple, Texas
Offline Offline
Sr. Member
****
Karma: 14
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This thread is a comedy of errors smiley
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Guys, Arrch this worked.

Code:
int rcpin =7;
int motpin = 13;
const int THRESHOLD = 5;

void setup() {
  Serial.begin(9600);
  pinMode(rcpin, INPUT);
  pinMode(motpin, OUTPUT);
 
}

int val;

void loop()

{
  val = pulseIn(rcpin, INPUT);
  Serial.println(val);
  delay(1000);
   Serial.println(val);
 // if ((val > 14535) && (val < 14335))
 //if ( 14335 < val || val > 14535)
 if ( (val > 14435 - THRESHOLD) && (val < 14435 + THRESHOLD) )
 {
    digitalWrite(motpin, LOW);
  }
  else {
    digitalWrite(motpin, HIGH);
  }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

trying to understand why it worked and not the previous code.  could it have something to do with the values continually moving slightly.
Logged

Offline Offline
Edison Member
*
Karma: 33
Posts: 1447
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

exactly. All the other code required the servo to read *exactly* 14335.

Again, run the code yourself!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sorry guys i can't get my head round this..  i thought if i use val > 14335 it would work for any value greater than 14335 regardless of wether the value moves slightly.
Logged

0
Offline Offline
Sr. Member
****
Karma: 7
Posts: 476
what?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
pulseIn(rcpin, INPUT);
shouldn't this be
Code:
pulseIn(rcpin, LOW);

I think INPUT is defined as 0 anyway but just to clarify the code shouldn't it be LOW?
Logged

Temple, Texas
Offline Offline
Sr. Member
****
Karma: 14
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

exactly. All the other code required the servo to read *exactly* 14335.
I never saw any code of the OPs of the form ( (14335 ? val) ?? (val ? 14335)), other than your reply to OP which I thought was a typo and Arrch's misreading of it.  Did OP edit his 14335/14535s in the original post?

Quote
Again, run the code yourself!
Agreed
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Guys thanks for all your help on this, it's late here in the UK so calling it a day.  i'll run the code and try and get a better understanding. fantastic forum and thanks for helping me out.

Cheers
Logged

Temple, Texas
Offline Offline
Sr. Member
****
Karma: 14
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sorry guys i can't get my head round this..  i thought if i use val > 14335 it would work for any value greater than 14335 regardless of wether the value moves slightly.
Hard to get your head around because you've gotten a lot of ideas, and some from every one of us has been wrong in one way or the other smiley
You could probably understand better if you broke it up like this?
Code:
  if (val > 15555){
     // joystick is FORWARD
  }
  else if (val < 14444) {
     // joystick is REARWARD
  }
  else {
     // joystick is NEUTRAL
  }


I changed the numbers so we would quit misreading 14335/14535 smiley 
Logged

Seattle, WA USA
Online Online
Brattain Member
*****
Karma: 614
Posts: 49386
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I changed the numbers so we would quit misreading 14335/14535
Actually, this is a perfect illustration of why magic numbers are a bad idea.

Code:
#define LOW_VAL 14335
#define HIGH_VAL 14535

if(val < LOW_VAL)
{
}
else if(val > HIGH_VAL)
{
}
else
{
}
means you correct an error/erroneous value in one place, and the logic is far easier to see.
Logged

Temple, Texas
Offline Offline
Sr. Member
****
Karma: 14
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
if ( 14335 < val || val < 14535) {

Can be simplified to

Code:
if ( val != 14335) {

So you want the LED to be off at that value, and on otherwise? Seems a bit loft to expect it to be EXACTLY that value.

Actually I think that code simplifies to
Code:
if (val < 14535) {

Which is still in error, but not that error smiley
Logged

Temple, Texas
Offline Offline
Sr. Member
****
Karma: 14
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Actually, this is a perfect illustration of why magic numbers are a bad idea.

Absolutely!
Logged

Pages: 1 [2]   Go Up
Jump to: