Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« on: April 24, 2010, 07:31:10 pm » |
I got bored tonight, so sat down and wrote this to help me read/write to the ports on my Arduino. Its fairly easy to follow, and remarked throughout. If you download this and use it, please leave a reply to this post (Just so I can keep a count of users  ). Any comments, or critisism are welcome. Cheers Arduinees Spycatcher2k The Code in next posts
|
|
|
|
« Last Edit: April 24, 2010, 07:33:58 pm by spycatcher2k »
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #1 on: April 24, 2010, 07:35:08 pm » |
// // // ACiD // // Arduino Control Desktop // // Drew Anderson - 2010 (24/5/10) // // Connect with any com program - I use this as a simple // In/Out Handler for my VB6 programs - Easy protocol to // implement. // // send x - reset to root menu // send 4 - Ask for Digital port values 0=LOW 1=HIGH // // Then just parse the string to read port value // (reads ALL ports 1 - 13) // // send x - reset to root menu // send 2 - select WRITE HIGH menu // send 3->0 or a,b or c - select port to set HIGH // // send x - reset to root menu // send 3 - select WRITE LOW menu // send 3->0 or a,b or c - select port to set LOW
int level=0; int tmp1=0; int sinput=0; int temp1 = 0; int temp2 = 0; int temp3 = 0; int temp4 = 0; int temp5 = 0; int temp6 = 0; int temp7 = 0; int temp8 = 0; int temp9 = 0; int temp10 = 0; int temp11 = 0; int temp12 = 0; int temp13 = 0; char prts[]="0000000000000";
void setup() { Serial.begin(9600); Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Welcome to Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V0.1 Beta ##"); Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); Serial.println("1. Report Port Status (Digital Only)"); Serial.println("2. Set port to high"); Serial.println("3. Set port to low"); Serial.println("4. Binary string report"); Serial.println("5. About"); Serial.println(" "); Serial.println(" "); Serial.println(" ");
int x=0; for(x=2;x<14;x++) { pinMode(x, OUTPUT); } // // If you need to set any port to input then do it here // // If you can be bothered, you can make further menus // to give you the option of setting from the interface. // // pinMode(2, INPUT); // pinMode(3, INPUT); // pinMode(4, INPUT); // pinMode(5, INPUT); // pinMode(6, INPUT); // pinMode(7, INPUT); // pinMode(8, INPUT); // pinMode(9, INPUT); // pinMode(10, INPUT); // pinMode(11, INPUT); // pinMode(12, INPUT); // pinMode(13, INPUT); }
void loop() { if (Serial.available() > 0) { sinput = Serial.read(); // Serial.print("sinput = "); // Serial.println(sinput);
// x - Reset to start Screen if (sinput=='x') { level=0; } // Level 0 - 1 - 4 Choose from root menu if ((sinput=='1') & (level==0)) { level=1; } if ((sinput=='2') & (level==0)) { level=2; } if ((sinput=='3') & (level==0)) { level=3; } if ((sinput=='4') & (level==0)) { level=4; } if ((sinput=='5') & (level==0)) { level=5; } // Level 2 - 3-9 Zero, and a,b or c Select port to update HIGH if ((sinput=='2') & (level==3)) { //level=4; digitalWrite(3, HIGH); } if ((sinput=='3') & (level==2)) { //level=4; digitalWrite(3, HIGH); } if ((sinput=='4') & (level==2)) { //level=4; digitalWrite(4, HIGH); } if ((sinput=='5') & (level==2)) { //level=4; digitalWrite(5, HIGH); } if ((sinput=='6') & (level==2)) { //level=4; digitalWrite(6, HIGH); } if ((sinput=='7') & (level==2)) { //level=4; digitalWrite(7, HIGH); } if ((sinput=='8') & (level==2)) { //level=4; digitalWrite(8, HIGH); } if ((sinput=='9') & (level==2)) { //level=4; digitalWrite(9, HIGH); } if ((sinput=='0') & (level==2)) { //level=4; digitalWrite(10, HIGH); } if ((sinput=='a') & (level==2)) { //level=4; digitalWrite(11, HIGH); } if ((sinput=='b') & (level==2)) { //level=4; digitalWrite(12, HIGH); } if ((sinput=='c') & (level==2)) { //level=4; digitalWrite(13, HIGH); } // Level 2 - 3-9 Zero, and a,b or c Select port to update LOW if ((sinput=='2') & (level==3)) { //level=4; digitalWrite(2, LOW); } if ((sinput=='3') & (level==3)) { //level=4; digitalWrite(3, LOW); } if ((sinput=='4') & (level==3)) { //level=4; digitalWrite(4, LOW); } if ((sinput=='5') & (level==3)) { //level=4; digitalWrite(5, LOW); } if ((sinput=='6') & (level==3)) { //level=4; digitalWrite(6, LOW); } if ((sinput=='7') & (level==3)) { //level=4; digitalWrite(7, LOW); } if ((sinput=='8') & (level==3)) { //level=4; digitalWrite(8, LOW); } if ((sinput=='9') & (level==3)) { //level=4; digitalWrite(9, LOW); } if ((sinput=='0') & (level==3)) { //level=4; digitalWrite(10, LOW); } if ((sinput=='a') & (level==3)) { //level=4; digitalWrite(11, LOW); } if ((sinput=='b') & (level==3)) { //level=4; digitalWrite(12, LOW); } if ((sinput=='c') & (level==3)) { //level=4; digitalWrite(13, LOW); } //Lets print the menus to the serial port if (level==0) { Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Welcome to Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V0.1 Beta ##"); Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); Serial.println("1. Report Port Status (Digital Only)"); Serial.println("2. Set port to high"); Serial.println("3. Set port to low"); Serial.println("4. Binary string report"); Serial.println("5. About"); Serial.println(" "); Serial.println(" "); Serial.println(" "); // Serial.print("Level = "); // Serial.println(level); } if(level==1) { Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V0.1 Beta ##"); Serial.println("## ##"); Serial.println("## Digital port status ##"); Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); for(tmp1=2;tmp1<14;tmp1++) { if (digitalRead(tmp1)==1) { Serial.print("Pin "); if(tmp1<10) { Serial.print("0"); } Serial.print(tmp1); Serial.println(" is currently High."); } else { Serial.print("Pin "); if(tmp1<10) { Serial.print("0"); } Serial.print(tmp1); Serial.println(" is currently Low."); } } Serial.println(" "); Serial.println("x. Return to First Screen"); // Serial.print("Level = "); // Serial.println(level); } if (level==2) { Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V0.1 Beta ##"); Serial.println("## ##"); Serial.println("## Digital port update ##"); Serial.println("## ##"); Serial.println("## SET PORT HIGH ##"); Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); Serial.println("Enter 2-9, for ports 2 -> 9"); Serial.println("or 0 for 10 - a for 11 - b for 12"); Serial.println("or finaly c for 13"); Serial.println(" "); Serial.println("x. Back to main Screen"); Serial.println(" "); } if (level==3) { Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V0.1 Beta ##"); Serial.println("## ##"); Serial.println("## Digital port update ##"); Serial.println("## ##"); Serial.println("## SET PORT LOW ##"); Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); Serial.println("Enter 2-9, for ports 2 -> 9"); Serial.println("or 0 for 10 - a for 11 - b for 12"); Serial.println("or finaly c for 13"); Serial.println(" "); Serial.println("x. Back to main Screen"); Serial.println(" "); }
|
|
|
|
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #2 on: April 24, 2010, 07:37:20 pm » |
Next part : if (level==4) { temp13 = digitalRead(13); temp12 = digitalRead(12); temp11 = digitalRead(11); temp10 = digitalRead(10); temp9 = digitalRead(9); temp8 = digitalRead(8); temp7 = digitalRead(7); temp6 = digitalRead(6); temp5 = digitalRead(5); temp4 = digitalRead(4); temp3 = digitalRead(3); if (temp13 == 1) { prts[12]='1'; } else { prts[12]='0'; } if (temp12 == 1) { prts[11]='1'; } else { prts[11]='0'; } if (temp11 == 1) { prts[10]='1'; } else { prts[10]='0'; } if (temp10 == 1) { prts[9]='1'; } else { prts[9]='0'; } if (temp9 == 1) { prts[8]='1'; } else { prts[8]='0'; } if (temp8 == 1) { prts[7]='1'; } else { prts[7]='0'; } if (temp7 == 1) { prts[6]='1'; } else { prts[6]='0'; } if (temp6 == 1) { prts[5]='1'; } else { prts[5]='0'; } if (temp5 == 1) { prts[4]='1'; } else { prts[4]='0'; } if (temp4 == 1) { prts[3]='1'; } else { prts[3]='0'; } if (temp3 == 1) { prts[2]='1'; } else { prts[2]='0'; } delay(10); Serial.println(prts); delay(10); level=0; }
if (level==5) { Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V0.1 Beta ##"); Serial.println("## ##"); Serial.println("## About ##"); Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); Serial.println(" Very Basic Control Program for the Arduino"); Serial.println("-=############################################=-"); Serial.println(" "); Serial.println("Feel free to use, update, cut, copy, paste, mutilate"); Serial.println("or delete this code. Its given to the world totaly"); Serial.println("without reservation."); Serial.println(" "); Serial.println("x. Back to main Screen"); } } }
|
|
|
|
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #3 on: April 24, 2010, 07:59:50 pm » |
I'm using this with serproxy, and telnet accross my network. Turning on and off relays at the moment. Gonna hook up my lamps, tv, amp, projector, and media center to these. Full control of power for my media room from anywhere in my house, now thats just cool. I'm gonna build three stand alone Arduinos - one for the media room, and two for the workshop/server room. Turn on and off my external hard-drive cluster, drive by drive  , and the other to turn on/off the multitude of psu's I got here (seven at last count - maybe time to invest in a vairable psu). [size=14] Just a side note, to speedup the interface if using from VB6, I set the baud rate to 57600, and I will Remark out the print menu Serial.println commands. If its working blind, we dont need these. [/b][/size] Spycatcher2k
|
|
|
|
« Last Edit: April 24, 2010, 09:13:17 pm by spycatcher2k »
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #4 on: April 25, 2010, 08:31:33 am » |
Update of code to Beta 0.2 Main update is to syntax, as well as adding port selection for input/output. Info at end of code - or send h from serial monitor. Code part 1 : // // // ACiD V0.3 (Beta) // // Arduino Control Desktop // // Drew Anderson - 2010 (24/4/10) // Update 25/4/10 // // Connect with any com program - I use this as a simple // In/Out Handler for my VB6 programs - Easy protocol to // implement. // // send x - reset to root menu // send S - Ask for Digital port values 0=LOW 1=HIGH // // Then just parse the string to read port value // (reads ALL ports 2 - 13) // // send x - reset to root menu // send H - select WRITE HIGH menu // send 3->0 or a,b or c - select port to set HIGH // // send x - reset to root menu // send L - select WRITE LOW menu // send 3->0 or a,b or c - select port to set LOW // // send x - reset to root menu // send M - select MODE for PIN // send N0. - Pin number (2 - 0 a,b,c) // send the letter 'o' or 'i' for output or input
int level=0; int tmp1=0; int sinput=0; int sinput2=0; int sinput3=0; int temp1 = 0; int temp2 = 0; int temp3 = 0; int temp4 = 0; int temp5 = 0; int temp6 = 0; int temp7 = 0; int temp8 = 0; int temp9 = 0; int temp10 = 0; int temp11 = 0; int temp12 = 0; int temp13 = 0; int pm2 = 0 ; int pm3 = 0 ; int pm4 = 0 ; int pm5 = 0 ; int pm6 = 0 ; int pm7 = 0 ; int pm8 = 0 ; int pm9 = 0 ; int pm10 = 0 ; int pm11 = 0 ; int pm12 = 0 ; int pm13 = 0 ; char prts[]="0000000000000"; void setup() { Serial.begin(57600); int x=0; for(x=2;x<14;x++) { pinMode(x, OUTPUT); } // // If you need to set any port to input then do it here // // pinMode(2, INPUT); // pinMode(3, INPUT); // pinMode(4, INPUT); // pinMode(5, INPUT); // pinMode(6, INPUT); // pinMode(7, INPUT); // pinMode(8, INPUT); // pinMode(9, INPUT); // pinMode(10, INPUT); // pinMode(11, INPUT); // pinMode(12, INPUT); // pinMode(13, INPUT); } void loop() { if (Serial.available() > 0) { sinput=Serial.read(); // x - Reset to start Screen if (sinput=='x') { level=0; } // M - Set the pinMode of the digital pin if (sinput=='M') { level=7; } if (sinput=='L') { level=3; } if (sinput=='R') { level=1; } if (sinput=='H') { level=2; } if (sinput=='S') { level=4; } if (sinput=='h') { level=5; } if (sinput=='P') { level=6; } if (level==2) { if (sinput=='2') { digitalWrite(2, HIGH); } if (sinput=='3') { digitalWrite(3, HIGH); } if (sinput=='4') { digitalWrite(4, HIGH); } if (sinput=='5') { digitalWrite(5, HIGH); } if (sinput=='6') { digitalWrite(6, HIGH); } if (sinput=='7') { digitalWrite(7, HIGH); } if (sinput=='8') { digitalWrite(8, HIGH); } if (sinput=='9') { digitalWrite(9, HIGH); } if (sinput=='0') { digitalWrite(10, HIGH); } if (sinput=='a') { digitalWrite(11, HIGH); } if (sinput=='b') { digitalWrite(12, HIGH); } if (sinput=='c') { digitalWrite(13, HIGH); } } if (level==3) { if (sinput=='2') { digitalWrite(2, LOW); } if (sinput=='3') { digitalWrite(3, LOW); } if (sinput=='4') { digitalWrite(4, LOW); } if (sinput=='5') { digitalWrite(5, LOW); } if (sinput=='6') { digitalWrite(6, LOW); } if (sinput=='7') { digitalWrite(7, LOW); } if (sinput=='8') { digitalWrite(8, LOW); } if (sinput=='9') { digitalWrite(9, LOW); } if (sinput=='0') { digitalWrite(10, LOW); } if (sinput=='a') { digitalWrite(11, LOW); } if (sinput=='b') { digitalWrite(12, LOW); } if (sinput=='c') { digitalWrite(13, LOW); } } if (level==7) { if (sinput=='2') { sinput2='2'; } if (sinput=='3') { sinput2='3'; } if (sinput=='4') { sinput2='4'; } if (sinput=='5') { sinput2='5'; } if (sinput=='6') { sinput2='6'; } if (sinput=='7') { sinput2='7'; } if (sinput=='8') { sinput2='8'; } if (sinput=='9') { sinput2='9'; } if (sinput=='0') { sinput2='0'; } if (sinput=='a') { sinput2='a'; } if (sinput=='b') { sinput2='b'; } if (sinput=='c') { sinput2='c'; } if (sinput=='o') { sinput3='o'; } if(sinput=='i') { sinput3='i'; } if (sinput2=='2') { if (sinput3=='o') { pinMode(2, OUTPUT); pm2 = 0; } if (sinput3=='i') { pinMode(2, INPUT); pm2 = 1; } } if (sinput2=='3') { if (sinput3=='o') { pinMode(3, OUTPUT); pm3 = 0; } if (sinput3=='i') { pinMode(3, INPUT); pm3 = 1; } } if (sinput2=='4') { if (sinput3=='o') { pinMode(4, OUTPUT); pm4 = 0; } if (sinput3=='i') { pinMode(4, INPUT); pm4 = 1; } } if (sinput2=='5') { if (sinput3=='o') { pinMode(5, OUTPUT); pm5 = 0; } if (sinput3=='i') { pinMode(5, INPUT); pm5 = 1; } } if (sinput2=='6') { if (sinput3=='o') { pinMode(6, OUTPUT); pm6 = 0; } if (sinput3=='i') { pinMode(6, INPUT); pm6 = 1; } } if (sinput2=='7') { if (sinput3=='o') { pinMode(7, OUTPUT); pm7 = 0; } if (sinput3=='i') { pinMode(7, INPUT); pm7 = 1; } } if (sinput2=='8') { if (sinput3=='o') { pinMode(8, OUTPUT); pm8 = 0; } if (sinput3=='i') { pinMode(8, INPUT); pm8 = 1; } } if (sinput2=='9') { if (sinput3=='o') { pinMode(9, OUTPUT); pm9 = 0; } if (sinput3=='i') { pinMode(9, INPUT); pm9 = 1; } } if (sinput2=='0') { if (sinput3=='o') { pinMode(10, OUTPUT); pm10 = 0; } if (sinput3=='i') { pinMode(10, INPUT); pm10 = 1; } } if (sinput2=='a') { if (sinput3=='o') { pinMode(11, OUTPUT); pm11 = 0; } if (sinput3=='i') { pinMode(11, INPUT); pm11 = 1; } } if (sinput2=='b') { if (sinput3=='o') { pinMode(12, OUTPUT); pm12 = 0; } if (sinput3=='i') { pinMode(12, INPUT); pm12 = 1; } } if (sinput2=='c') { if (sinput3=='o') { pinMode(13, OUTPUT); pm13 = 0; } if (sinput3=='i') { pinMode(13, INPUT); pm13 = 1; } } } if (level==6) { if (pm13 == 1) { prts[12]='1'; } else { prts[12]='0'; } if (pm12 == 1) { prts[11]='1'; } else { prts[11]='0'; } if (pm11 == 1) { prts[10]='1'; } else { prts[10]='0'; } if (pm10 == 1) { prts[9]='1'; } else { prts[9]='0'; } if (pm9 == 1) { prts[8]='1'; } else { prts[8]='0'; } if (pm8 == 1) { prts[7]='1'; } else { prts[7]='0'; } if (pm7 == 1) { prts[6]='1'; } else { prts[6]='0'; } if (pm6 == 1) { prts[5]='1'; } else { prts[5]='0'; } if (pm5 == 1) { prts[4]='1'; } else { prts[4]='0'; } if (pm4 == 1) { prts[3]='1'; } else { prts[3]='0'; } if (pm3 == 1) { prts[2]='1'; } else { prts[2]='0'; } if(pm2 ==1) { prts[1]='1'; } else { prts[1]='0'; } delay(10); Serial.println(prts); delay(10); } if(level==1) { for(tmp1=2;tmp1<14;tmp1++) { if (digitalRead(tmp1)==1) { Serial.print("Pin "); if(tmp1<10) { Serial.print("0"); } Serial.print(tmp1); Serial.println(" is currently High."); } else { Serial.print("Pin "); if(tmp1<10) { Serial.print("0"); } Serial.print(tmp1); Serial.println(" is currently Low."); } } Serial.println(" "); Serial.println("x. Return to First Screen"); } if (level==2) { } if (level==3) { }
|
|
|
|
« Last Edit: April 25, 2010, 01:19:59 pm by spycatcher2k »
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #5 on: April 25, 2010, 08:33:31 am » |
Code part 2: if (level==4) { temp13 = digitalRead(13); temp12 = digitalRead(12); temp11 = digitalRead(11); temp10 = digitalRead(10); temp9 = digitalRead(9); temp8 = digitalRead(8); temp7 = digitalRead(7); temp6 = digitalRead(6); temp5 = digitalRead(5); temp4 = digitalRead(4); temp3 = digitalRead(3); if (temp13 == 1) { prts[12]='1'; } else { prts[12]='0'; } if (temp12 == 1) { prts[11]='1'; } else { prts[11]='0'; } if (temp11 == 1) { prts[10]='1'; } else { prts[10]='0'; } if (temp10 == 1) { prts[9]='1'; } else { prts[9]='0'; } if (temp9 == 1) { prts[8]='1'; } else { prts[8]='0'; } if (temp8 == 1) { prts[7]='1'; } else { prts[7]='0'; } if (temp7 == 1) { prts[6]='1'; } else { prts[6]='0'; } if (temp6 == 1) { prts[5]='1'; } else { prts[5]='0'; } if (temp5 == 1) { prts[4]='1'; } else { prts[4]='0'; } if (temp4 == 1) { prts[3]='1'; } else { prts[3]='0'; } if (temp3 == 1) { prts[2]='1'; } else { prts[2]='0'; } delay(10); Serial.println(prts); delay(10); } if (level==5) { Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V0.2 Beta ##"); Serial.println("## ##"); Serial.println("## About ##"); Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); Serial.println(" Very Basic Control Program for the Arduino"); Serial.println("-=############################################=-"); Serial.println(" "); Serial.println("Feel free to use, update, cut, copy, paste, mutilate"); Serial.println("or delete this code. Its given to the world totaly"); Serial.println("without reservation."); Serial.println(" "); Serial.println("Commands Available :"); Serial.println("Mxy - pinMode"); Serial.println(" x=pin number 2-9, 0=10, a=11, b=12, c=13"); Serial.println(" y=0 for output, y=1 for input"); Serial.println("R - Long port status report 0=LOW, 1=High"); Serial.println("S - Report port use in binary style"); Serial.println("P - Report pinMode in binary style"); Serial.println("Hx - Set port HIGH (pins as M)"); Serial.println("Lx - Set port LOW (pins as M)"); Serial.println(" "); Serial.println("affix command with x e.g : "); Serial.println("xH2 - will set pin 2 HIGH "); Serial.println("xLa - will set pin 11 LOW "); Serial.println("xM2i - will set pin 2 to INPUT"); Serial.println(" "); } } }
|
|
|
|
« Last Edit: April 25, 2010, 01:21:07 pm by spycatcher2k »
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #6 on: April 25, 2010, 10:40:19 am » |
Had to edit the above code - It just didn't work properly. Should be OK now.
Spycatcher2k
And again
Still a work on progress though. Any ideas to enhance this project then leave a reply.
|
|
|
|
« Last Edit: April 25, 2010, 01:22:50 pm by spycatcher2k »
|
Logged
|
|
|
|
|
Phoenix, Arizona USA
Offline
Faraday Member
Karma: 27
Posts: 5075
Where's the beer?
|
 |
« Reply #7 on: April 25, 2010, 05:09:55 pm » |
First off, this looks like a very useful project, most likely as a debugging tool - I think it is something that should be submitted to the playground once you have it past the beta stage. What I would suggest improving, though, is removing the redundant code; you have many areas that could be simplified into singular functions (such as the banner output), as well as where loop constructs or other constructs could be applied. Doing these things would vastly simplify the sketch, and likely reduce its footprint (size) on the Arduino. 
|
|
|
|
« Last Edit: April 25, 2010, 05:10:11 pm by keeper63@cox.net »
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #8 on: April 25, 2010, 06:55:57 pm » |
Updated - Smaller, and Some logic errors fixed. // // // ACiD V1.0 // // Arduino Control Desktop // // Drew Anderson - 2010 (24/5/10) // // Connect with any com program - I use this as a simple // In/Out Handler for my VB6 programs - Easy protocol to // implement. // // send x - reset to root menu // send 4 - Ask for Digital port values 0=LOW 1=HIGH // // Then just parse the string to read port value // (reads ALL ports 2 - 13) // // send x - reset to root menu // send 2 - select WRITE HIGH menu // send 3->0 or a,b or c - select port to set HIGH // // send x - reset to root menu // send 3 - select WRITE LOW menu // send 3->0 or a,b or c - select port to set LOW
int level=0; int tmp1=0; int sinput=0;
void bannertop() { Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V0.1 Beta ##"); Serial.println("## ##"); } void bannerbase() { Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); } void bannerinst() { Serial.println(" "); Serial.println("Enter 2-9, for ports 2 -> 9"); Serial.println("or 0 for 10 - a for 11 - b for 12"); Serial.println("or finaly c for 13"); Serial.println(" "); Serial.println("x. Back to main Screen"); Serial.println(" "); } void setup() { Serial.begin(57600); bannertop(); bannerbase(); Serial.println(" "); Serial.println("1. Report Port Status (Digital Only)"); Serial.println("2. Set port to high"); Serial.println("3. Set port to low"); Serial.println("4. Binary string report"); Serial.println("5. About"); Serial.println(" ");
int x=0; for(x=2;x<14;x++) { pinMode(x, OUTPUT); } // // If you need to set any port to input then do it here // // pinMode(2, INPUT); // pinMode(3, INPUT); // pinMode(4, INPUT); // pinMode(5, INPUT); // pinMode(6, INPUT); // pinMode(7, INPUT); // pinMode(8, INPUT); // pinMode(9, INPUT); // pinMode(10, INPUT); // pinMode(11, INPUT); // pinMode(12, INPUT); // pinMode(13, INPUT); }
void loop() { if (Serial.available() > 0) { sinput = Serial.read(); // x - Reset to start Screen if (sinput=='x') { level=0; } // Level 0 - 1 - 4 Choose from root menu if (level==0) { if (sinput=='1') { level=1; } if (sinput=='2') { level=2; } if (sinput=='3') { level=3; } if (sinput=='4') { level=4; } } // Level 2 - 3-9 Zero, and a,b or c Select port to update HIGH if(level==2) { if (sinput=='2') { digitalWrite(2, HIGH); } if (sinput=='3') { digitalWrite(3, HIGH); } if (sinput=='4') { digitalWrite(4, HIGH); } if (sinput=='5') { digitalWrite(5, HIGH); } if (sinput=='6') { digitalWrite(6, HIGH); } if (sinput=='7') { digitalWrite(7, HIGH); } if (sinput=='8') { digitalWrite(8, HIGH); } if (sinput=='9') { digitalWrite(9, HIGH); } if (sinput=='0') { digitalWrite(10, HIGH); } if (sinput=='a') { digitalWrite(11, HIGH); } if (sinput=='b') { digitalWrite(12, HIGH); } if (sinput=='c') { digitalWrite(13, HIGH); } } // Level 2 - 3-9 Zero, and a,b or c Select port to update LOW if(level==3); { if (sinput=='2') { digitalWrite(2, LOW); } if (sinput=='3') { digitalWrite(3, LOW); } if (sinput=='4') { digitalWrite(4, LOW); } if (sinput=='5') { digitalWrite(5, LOW); } if (sinput=='6') { digitalWrite(6, LOW); } if (sinput=='7') { digitalWrite(7, LOW); } if (sinput=='8') { digitalWrite(8, LOW); } if (sinput=='9') { digitalWrite(9, LOW); } if (sinput=='0') { digitalWrite(10, LOW); } if (sinput=='a') { digitalWrite(11, LOW); } if (sinput=='b') { digitalWrite(12, LOW); } if (sinput=='c') { digitalWrite(13, LOW); } } //Lets print the menus to the serial port if (level==0) { bannertop(); bannerbase(); Serial.println("1. Report Port Status (Digital Only)"); Serial.println("2. Set port to high"); Serial.println("3. Set port to low"); Serial.println("4. Binary string report"); Serial.println(" "); } if(level==1) { bannertop(); Serial.println("## Digital port status ##"); bannerbase(); for(tmp1=2;tmp1<14;tmp1++) { if (digitalRead(tmp1)==1) { Serial.print("Pin "); if(tmp1<10) { Serial.print("0"); } Serial.print(tmp1); Serial.println(" is currently High."); } else { Serial.print("Pin "); if(tmp1<10) { Serial.print("0"); } Serial.print(tmp1); Serial.println(" is currently Low."); } } Serial.println(" "); Serial.println("x. Return to First Screen"); } if (level==2) { bannertop(); Serial.println("## Digital port update ##"); Serial.println("## ##"); Serial.println("## SET PORT HIGH ##"); bannerbase(); bannerinst(); } if (level==3) { bannertop(); Serial.println("## Digital port update ##"); Serial.println("## ##"); Serial.println("## SET PORT LOW ##"); bannerbase(); bannerinst(); } if (level==4) { for(int x=2;x<13;x++) { Serial.print(digitalRead(x)); } Serial.println(digitalRead(13)); level=0; } } }
|
|
|
|
« Last Edit: April 25, 2010, 07:01:01 pm by spycatcher2k »
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #9 on: April 26, 2010, 07:51:38 pm » |
Just a minor note - the About (function 5) has been removed. But is still on the main menu :-[. Cheers to my youngest son for spotting that, I will sort this on the next update.
Cheers again Arduinees
Spycather2k
|
|
|
|
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #10 on: April 29, 2010, 06:52:08 pm » |
Is anyone downloading and using this ? ? ? if you are please E-Mail me : arduino01@badnetwork.co.uk or leave a reply here.
|
|
|
|
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #11 on: April 30, 2010, 05:54:20 pm » |
In the last code posted above, remove the; at the end of the line with
if(level==3); <-- should not be there - sorry :o
|
|
|
|
|
Logged
|
|
|
|
|
Scotland
Offline
God Member
Karma: 3
Posts: 513
Have you had your Arduino fix today?
|
 |
« Reply #12 on: May 01, 2010, 10:51:04 am » |
Updated the logic (does not turn on pins 3 when you change menu level). Thanks to REX510 for the feedback. the updated code : // // // ACiD V1.1 // // Arduino Control Desktop // // Drew Anderson - 2010 (01/05/10) // // Connect with any com program - I use this as a simple // In/Out Handler for my VB6 programs - Easy protocol to // implement. // // send x - reset to root menu // send 4 - Ask for Digital port values 0=LOW 1=HIGH // // Then just parse the string to read port value // (reads ALL ports 1 - 13) // // send x - reset to root menu // send 2 - select WRITE HIGH menu // send 3->0 or a,b or c - select port to set HIGH // // send x - reset to root menu // send 3 - select WRITE LOW menu // send 3->0 or a,b or c - select port to set LOW
int level=0; int tmp1=0; int sinput=0;
void bannertop() { Serial.println("#########################################"); Serial.println("## ##"); Serial.println("## Arduino Control Desktop ##"); Serial.println("## ##"); Serial.println("## V1.0 ##"); Serial.println("## ##"); } void bannerbase() { Serial.println("## ##"); Serial.println("#########################################"); Serial.println(" "); } void bannerfoot() { Serial.println(" "); Serial.println("Enter 2-9, for ports 2 -> 9"); Serial.println("or 0 for 10 - a for 11 - b for 12"); Serial.println("or finaly c for 13"); Serial.println(" "); Serial.println("x. Back to main Screen"); } void setup() { Serial.begin(57600); bannertop(); bannerbase(); Serial.println("1. Report Port Status (Digital Only)"); Serial.println("2. Set port to high"); Serial.println("3. Set port to low"); Serial.println("4. Binary string report"); Serial.println(" "); int x=0; for(x=2;x<14;x++) { pinMode(x, OUTPUT); } // // If you need to set any port to input then do it here // // If you can be bothered, you can make further menus // to give you the option of setting from the interface. // // pinMode(2, INPUT); // pinMode(3, INPUT); // pinMode(4, INPUT); // pinMode(5, INPUT); // pinMode(6, INPUT); // pinMode(7, INPUT); // pinMode(8, INPUT); // pinMode(9, INPUT); // pinMode(10, INPUT); // pinMode(11, INPUT); // pinMode(12, INPUT); // pinMode(13, INPUT); }
void loop() { if (Serial.available() > 0) { sinput = Serial.read(); // x - Reset to start Screen if (sinput=='x') { level=0; } // Level 0 - 1 - 4 Choose from root menu if (level==0) { if (sinput=='1') { level=1; sinput=' '; } if (sinput=='2') { level=2; sinput=' '; } if (sinput=='3') { level=3; sinput=' '; } if (sinput=='4') { level=4; sinput=' '; } } // Level 2 - 3-9 Zero, and a,b or c Select port to update HIGH if(level==2) { if (sinput=='2') { digitalWrite(2, HIGH); } if (sinput=='3') { digitalWrite(3, HIGH); } if (sinput=='4') { digitalWrite(4, HIGH); } if (sinput=='5') { digitalWrite(5, HIGH); } if (sinput=='6') { digitalWrite(6, HIGH); } if (sinput=='7') { digitalWrite(7, HIGH); } if (sinput=='8') { digitalWrite(8, HIGH); } if (sinput=='9') { digitalWrite(9, HIGH); } if (sinput=='0') { digitalWrite(10, HIGH); } if (sinput=='a') { digitalWrite(11, HIGH); } if (sinput=='b') { digitalWrite(12, HIGH); } if (sinput=='c') { digitalWrite(13, HIGH); } //level=1; } // Level 2 - 3-9 Zero, and a,b or c Select port to update LOW if(level==3) { if (sinput=='2') { digitalWrite(2, LOW); } if (sinput=='3') { digitalWrite(3, LOW); } if (sinput=='4') { digitalWrite(4, LOW); } if (sinput=='5') { digitalWrite(5, LOW); } if (sinput=='6') { digitalWrite(6, LOW); } if (sinput=='7') { digitalWrite(7, LOW); } if (sinput=='8') { digitalWrite(8, LOW); } if (sinput=='9') { digitalWrite(9, LOW); } if (sinput=='0') { digitalWrite(10, LOW); } if (sinput=='a') { digitalWrite(11, LOW); } if (sinput=='b') { digitalWrite(12, LOW); } if (sinput=='c') { digitalWrite(13, LOW); } //level=1; } //Lets print the menus to the serial port if (level==0) { bannertop(); bannerbase(); Serial.println("1. Report Port Status (Digital Only)"); Serial.println("2. Set port to high"); Serial.println("3. Set port to low"); Serial.println("4. Binary string report"); } if(level==1) { bannertop(); Serial.println("## Digital port status ##"); bannerbase(); for(tmp1=2;tmp1<14;tmp1++) { if (digitalRead(tmp1)==1) { Serial.print("Pin "); if(tmp1<10) { Serial.print("0"); } Serial.print(tmp1); Serial.println(" is currently High."); } else { Serial.print("Pin "); if(tmp1<10) { Serial.print("0"); } Serial.print(tmp1); Serial.println(" is currently Low."); } } Serial.println(" "); Serial.println("x. Return to First Screen"); } if (level==2) { bannertop(); Serial.println("## Digital port update ##"); Serial.println("## SET PORT HIGH ##"); bannerbase(); bannerfoot(); } if (level==3) { bannertop(); Serial.println("## Digital port update ##"); Serial.println("## SET PORT LOW ##"); bannerbase(); bannerfoot(); } if (level==4) { for(int x=2;x<13;x++) { Serial.print(digitalRead(x)); } Serial.println(digitalRead(13)); level=0; }
} }
|
|
|
|
|
Logged
|
|
|
|
|
Kortrijk, Belgium
Offline
Full Member
Karma: 1
Posts: 151
Young geek
|
 |
« Reply #13 on: May 01, 2010, 11:18:44 am » |
The first time I was able to upload it to the board. Then I opened up the serial, but the only things I got were: ))))))©JBJÂ )J-B
JJ)J-)))))) Æ
HJ
R HFBHB And so on. I tried resetting the board, but I got the same. Then I tried re-uploading, but I got an 'error compiling'... I closed the IDE, and re-opened it, now I was able to reupload your code, but still the same characters... Has it something to do with the fact I try it with the serial monitor? EDIT: when I tried to open up a serial example and upload that sketch to verify my serial works, it also had to reopen the IDE and then it worked fine...
|
|
|
|
« Last Edit: May 01, 2010, 11:22:40 am by doublet »
|
Logged
|
Sorry God members, I'm an atheist.
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 7
Arduino rocks
|
 |
« Reply #14 on: May 01, 2010, 11:25:05 am » |
doublet are you using 57600 BAUD in the serial monitor?
|
|
|
|
« Last Edit: May 01, 2010, 11:25:38 am by ah642403hy »
|
Logged
|
|
|
|
|
|