Pages: [1] 2   Go Down
Author Topic: Arduino Control Desktop - ACiD  (Read 1596 times)
0 Members and 1 Guest are viewing this topic.
Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink ).

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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
//
//
//  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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Next part :
Code:
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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley , 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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 :

Code:
//
//
//  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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code part 2:

Code:
   
    
   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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Phoenix, Arizona USA
Offline Offline
Faraday Member
**
Karma: 36
Posts: 5519
Where's the beer?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

 smiley
« Last Edit: April 25, 2010, 05:10:11 pm by keeper63@cox.net » Logged

I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Updated - Smaller, and Some logic errors fixed.
Code:
//
//
//  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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Is anyone downloading and using this ? ? ?
if you are please E-Mail me : arduino01@badnetwork.co.uk
or leave a reply here.
Logged

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Scotland
Offline Offline
God Member
*****
Karma: 11
Posts: 988
Have you had your Arduino fix today?
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Updated the logic (does not turn on pins 3 when you change menu level). Thanks to REX510 for the feedback.

the updated code :

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

Drew.
http://www.uk-pcb.co.uk - My UK Based PCB Fab & Assembly Company
Design work undertaken
SMD & Thru-Hole assembly

Kortrijk, Belgium
Offline Offline
Full Member
***
Karma: 1
Posts: 151
Young geek
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Code:
))))))©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 Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

doublet are you using 57600 BAUD in the serial monitor?
« Last Edit: May 01, 2010, 11:25:38 am by ah642403hy » Logged

Pages: [1] 2   Go Up
Jump to: