weird Serial.print() problem


hello all,

i plugged 12 switches in arduino controller , need know on , off.  i sending info using serial.print()  now, don't want hog serial port , send data continuously because make program receiving data freak out.  so created variables each switch, , check whether or not value changes @ every loop() iteration , if does, send new value.  here code:

code: [select]
int rpin = 0;
int apin = 2;
int bpin = 3;
int cpin = 4;
int dpin = 5;

int hpin = 6;
int epin = 7;
int spin = 8;
int opin = 9;
int gpin = 10;

int napin = 11;
int nbpin = 12;
int ncpin = 13;

// variables
int alock = 0;
int block = 0;
int clock = 0;
int dlock = 0;

int htoggle = 0;
int etoggle = 0;
int stoggle = 0;
int otoggle = 0;
int gtoggle = 0;

int nselect = 0;

int val = 0;


void setup() {
 pinmode(rpin, input);
 
 pinmode(apin, input);
 pinmode(bpin, input);
 pinmode(cpin, input);
 pinmode(dpin, input);
 
 pinmode(hpin, input);
 pinmode(epin, input);
 pinmode(spin, input);
 pinmode(opin, input);
 pinmode(gpin, input);
 
 pinmode(napin, input);
 pinmode(nbpin, input);
 pinmode(ncpin, input);
 
 // open serial port
 serial.begin(19200);
}


void loop() {
 //if (digitalread(rpin) == low) {
 //  serial.print('r');
 //}
 
 // report changes handle locks
 val = digitalread(apin);
 if (alock != val) {
   alock = val;
   serial.print('a');
   serial.print(alock);  
 }
 
 val = digitalread(bpin);
 if (block != val) {
   block = val;
   serial.print('b');
   serial.print(block);  
 }
 
 val = digitalread(cpin);
 if (clock != val) {
   clock = val;
   serial.print('c');
   serial.print(clock);  
 }
 
 val = digitalread(dpin);
 if (dlock != val) {
   dlock = val;
   serial.print('d');
   serial.print(dlock);  
 }
 
 // report changes option toggles
 /*val = digitalread(hpin);
 if (htoggle != val) {
   htoggle = val;
   serial.print('h');
   serial.print(htoggle);
 }
 
 val = digitalread(epin);
 if (etoggle != val) {
   etoggle = val;
   serial.print('e');
   serial.print(etoggle);
 }

 val = digitalread(spin);
 if (stoggle != val) {
   stoggle = val;
   serial.print('s');
   serial.print(stoggle);
 }
 
 val = digitalread(opin);
 if (otoggle != val) {
   otoggle = val;
   serial.print('o');
   serial.print(otoggle);
 }*/
 
 val = digitalread(gpin);
 if (gtoggle != val) {
   gtoggle = val;
   serial.print('g');
   serial.print(gtoggle);
 }
 
 // report changes handle selection
 if (digitalread(napin) == low) {
   val = 1;
 } else if (digitalread(nbpin) == low) {
   val = 2;
 } else if (digitalread(ncpin) == low) {
   val = 3;
 } else {
   val = 4;
 }
 if (nselect != val) {
   nselect = val;
   serial.print('n');
   serial.print(nselect);
 }
 
 delay(200);
}


i have major problem.  as whole if (changed) { print() } thing more 8 times, stops working.  nothing goes through serial port.  that's why lines commented in code above.  now know it's not variable name or hardware problem, because if comment other 4 if-statements still works.  as take out comments or comment out 3 statements, nothing gets printed serial port.  

on top of that, following code, prints out values without checking if they're changed or not, works perfectly:

code: [select]
int rpin = 0;
int apin = 2;
int bpin = 3;
int cpin = 4;
int dpin = 5;

int hpin = 6;
int epin = 7;
int spin = 8;
int opin = 9;
int gpin = 10;

int napin = 11;
int nbpin = 12;
int ncpin = 13;

int val = 0;

void setup() {
 pinmode(rpin, input);
 
 pinmode(apin, input);
 pinmode(bpin, input);
 pinmode(cpin, input);
 pinmode(dpin, input);
 
 pinmode(hpin, input);
 pinmode(epin, input);
 pinmode(spin, input);
 pinmode(opin, input);
 pinmode(gpin, input);
 
 pinmode(napin, input);
 pinmode(nbpin, input);
 pinmode(ncpin, input);
 pinmode(ndpin, input);
 
 // open serial port
 serial.begin(19200);
}


void loop() {
 serial.print('r');
 serial.print(digitalread(rpin));
 
 serial.print('a');
 serial.print(digitalread(apin));
 serial.print('b');
 serial.print(digitalread(bpin));
 serial.print('c');
 serial.print(digitalread(cpin));
 serial.print('d');
 serial.print(digitalread(dpin));
 
 serial.print('h');
 serial.print(digitalread(hpin));
 serial.print('e');
 serial.print(digitalread(epin));
 serial.print('s');
 serial.print(digitalread(spin));
 serial.print('o');
 serial.print(digitalread(opin));
 serial.print('g');
 serial.print(digitalread(gpin));
 
 serial.print('n');
 if (digitalread(napin) == low) {
   serial.print(1);
 } else if (digitalread(nbpin) == low) {
   serial.print(2);
 } else if (digitalread(ncpin) == low) {
   serial.print(3);
 } else {
   serial.print(4);
 }
 
 serial.println();
 
 delay(100);
}


has encountered problem?  i have no idea do!  does have delay()?  is there buffer exceeding?

thanks in advance help

it may code big arduino chip, if don't error when try upload it.  what size reported when try upload?  if it's between 6 , 7 kb, may have board 2 kb bootloader.  the ide expects 1 kb bootloader when checks if code big.


Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > weird Serial.print() problem


arduino

Comments

Popular posts from this blog

CAN'T INSTALL MAMBELFISH 1.5 FROM DIRECTORY - Joomla! Forum - community, help and support

error: expected initializer before 'void'

CPU load monitoring using GPIO and leds - Raspberry Pi Forums