Guys,
'1284 , IDE 1.0, maniacbug environment for pin definitions, optiboot hexfile bootloader.
What am I doing wrong here?
I power, LED on D0 flashes 4 times.
What I am I doing wrong here? IDE 1.0
I enter 00, I get back
"0207207
Invalid Relay Number 207"
according to asciitable.com, character '0' is 0x30, so why is the math not working?
arrg, software ...
/*
Relay Control Sketch
Robert Patterson, Cross Roads Fencing Center
for Brad Rojas, brojas@accllcpos.com
*/
byte relayArray[21] = { 1, 14, 16, 18,20,22,28,1,1,1,1,1,15,17,19,21,23,24,25,26,27};
/*
byte relayArray[0] = 1; // not used
byte relayArray[1] = 14; // T3-C10
byte relayArray[2] = 16; // T2-C2
byte relayArray[3] = 18; // T4-C2
byte relayArray[4] = 20; // T2-C3
byte relayArray[5] = 22; // T1-C5
byte relayArray[6] = 28; // T2-C5
byte relayArray[7] = 1; // not used
byte relayArray[8] = 1; // not used
byte relayArray[9] = 1; // not used
byte relayArray[10] = 1; // not used
byte relayArray[11] = 1; // not used
byte relayArray[12] = 15; // T1-C2
byte relayArray[13] = 17; // T3-C2
byte relayArray[14] = 19; // T0-C3
byte relayArray[15] = 21; // T1-C3
byte relayArray[16] = 23; // T3-C3
byte relayArray[17] = 24; // T3-C5
byte relayArray[18] = 25; // T4-C5
byte relayArray[19] = 26; // NO CONNECTIONS
byte relayArray[20] = 27; // NO CONNECTIONS
*/
byte activityLED = 0; //
// VARIABLES
byte x = 0;
byte digitTens = 0;
byte digitOnes = 0;
byte relayNumber = 0;
byte relayValid = 0;
void setup(){
// set up relay control pins and make sure turned off
// output pins float at turn on
for (x = 1; x<21; x=x+1){
pinMode (relayArray[x], OUTPUT);
digitalWrite(relayArray[x], HIGH); // HIGH = off, LOW = energized
}
// Enable serial ports & clear incoming buffer
Serial.begin(9600); // USB port
Serial.flush();
//Serial1.begin(9600); // RS232 port
//Serial1.flush();
// set up activity LED, flash to show set up is done
pinMode (activityLED, OUTPUT); // HIGH = On, LOW = Off
for (int x = 0; x<4; x=x+1){ // flash a couple times on startup
digitalWrite (activityLED, HIGH);
delay (200);
digitalWrite (activityLED, LOW);
delay (200);
}
}
void loop(){
// get 2 characters from the UBS Serial port
if (Serial.available()){
digitTens = Serial.read(); // read a byte & convert from ASCII
Serial.print(digitTens, HEX);
}
if (Serial.available() ){
digitOnes = Serial.read();
Serial.print(digitOnes, HEX);
}
relayNumber = digitTens * 10 + digitOnes;
Serial.println (relayNumber);
// check of a good number
if (( relayNumber >=1 & relayNumber <=6) | (relayNumber >=12 & relayNumber <=20)){
relayValid = 1;
Serial.print("Relay Number ");
Serial.println(relayNumber);
} // end valid relay received
else {
relayValid = 0;
Serial.print ("Invalid Relay Number ");
Serial.println (relayNumber);
// turn any that were on, off.
for (x = 1; x<21; x=x+1){
digitalWrite(relayArray[x], HIGH); // HIGH = off, LOW = energized
} // end turn off relays with invalid relayNumber received
// end invalid relay received
} // end if Serial available
// clear for next command
digitTens = 0;
digitOnes = 0;
// Change state of the Relay
if (relayValid == 1){
if (activityLED ==1){
digitalWrite (relayArray[relayNumber], LOW);
digitalWrite (activityLED, HIGH);
activityLED = 0;
// do something with the other serial port
Serial.print(relayNumber);
Serial.println ("relay on");
}
else {
digitalWrite (relayArray[relayNumber], LOW);
digitalWrite (activityLED, LOW);
activityLED = 1;
Serial.print(relayNumber);
Serial.println ("relay off");
}
delay (500);
} // end change relay state
} // end void loop