USB not connected code?


hi, trying have code seperate things when usb connected , disconnected. @ moment using

however, when usb connected , sending serial data, keeps running disconnected code, runs connected code @ same time?

is there way this?
code: [select]
int z = 0;
float h;
int h_int;
int val = 0;
int fdelay = 20;
int r = 10;
int g = 6;
int b = 9;
int rprev = 0;
int gprev = 0;
int bprev = 0;
void setup(){
 serial.begin(115200);
 pinmode(12, output);
 pinmode(6, output);
 pinmode(9, output);
 pinmode(10, output);
}

void h2rgb(float h, int& r, int& g, int& b) {

 int var_i;
 float s=1, v=1, var_1, var_2, var_3, var_h, var_r, var_g, var_b;

 if ( s == 0 )                       //hsv values = 0 ÷ 1
 {
   r = v * 255;
   g = v * 255;
   b = v * 255;
 }
 else
 {
   var_h = h * 6;
   if ( var_h == 6 ) var_h = 0;      //h must < 1
   var_i = int( var_h ) ;            //or ... var_i = floor( var_h )
   var_1 = v * ( 1 - s );
   var_2 = v * ( 1 - s * ( var_h - var_i ) );
   var_3 = v * ( 1 - s * ( 1 - ( var_h - var_i ) ) );

   if      ( var_i == 0 ) {
     var_r = v     ;
     var_g = var_3 ;
     var_b = var_1 ;
   }
   else if ( var_i == 1 ) {
     var_r = var_2 ;
     var_g = v     ;
     var_b = var_1 ;
   }
   else if ( var_i == 2 ) {
     var_r = var_1 ;
     var_g = v     ;
     var_b = var_3 ;
   }
   else if ( var_i == 3 ) {
     var_r = var_1 ;
     var_g = var_2 ;
     var_b = v     ;
   }
   else if ( var_i == 4 ) {
     var_r = var_3 ;
     var_g = var_1 ;
     var_b = v     ;
   }
   else                   {
     var_r = v     ;
     var_g = var_1 ;
     var_b = var_2 ;
   }

   r = (1-var_r) * 255;                  //rgb results = 0 ÷ 255
   g = (1-var_g) * 255;
   b = (1-var_b) * 255;
 }
}

void loop()
{
 if(serial.available > 0){
  if(z == 1){
    if(val < 1023){
    val = val++;
    delay(fdelay);
   h = ((float)val)/1024;
   h_int = (int) 360*h;
   int redvar;
   int bluevar;
   int greenvar;
   h2rgb(h, redvar, greenvar, bluevar);
   analogwrite(r, redvar);
   analogwrite(g, greenvar);
   analogwrite(b, bluevar);
   }
   else{ val = 0; }
  }
 char c, t;
  int nnn;

  if(serial.available() > 0) // if there data read
  {
      c = serial.read(); // character

      delay(50);

      if(c >= 'a' && c <= 'z') // if it's command
      {
         nnn = 0;
         while(serial.available() > 0) // while there still data
         {
            t = serial.read(); // read next character

            if(t == ',' || t == ' ')
              continue; // skip commas , spaces
            if(t >= '0' && t <= '9') // if it's number
            {
               nnn *= 10; // multiply previous value 10
               nnn += t - '0'; // add new digit
            }
            else
               break;

            delay(50);
         }
      }
  }

  // now, c , nnn
  switch(c)
  {
     case 's':
       analogwrite(5,nnn);
       break;
     case 'f':
       analogwrite(3,nnn);
       break;
       case 'u':
         if (nnn > 100){
           digitalwrite(12, high);
         }
         if (nnn < 100){
           digitalwrite(12, low);
         }
         break;
       case 'r':
         analogwrite(r,nnn);
         rprev = nnn;
         break;
       case 'g':
         analogwrite(g,nnn);
         gprev = nnn;
         break;
       case 'b':
         analogwrite(b,nnn);
         bprev = nnn;
         break;
       case 'z':
         if(nnn > 100){
           z = 1;
         }
         if(nnn < 100){
           z = 0;
         }
         break;
       case 'x':
         fdelay = nnn;
         break;
       case 'l':
         lightning();
         break;
       case 'a':
         analogwrite(3, nnn);
         analogwrite(6, nnn);
         analogwrite(9, nnn);
         analogwrite(10, nnn);
         analogwrite(11, nnn);
         digitalwrite(12, low);
         break;
     // add other letters here, break after each one
  }
 }
 else{
     digitalwrite(12, high);
     analogwrite(11, 255);
     analogwrite(10, 255);
     analogwrite(9, 255);
     analogwrite(6, 255);
     analogwrite(5, 255);
     analogwrite(3, 100);
 }
}

void lightning(){
 int del = 0;
 analogwrite(r, 255);
 analogwrite(g, 255);
 analogwrite(b, 255);
 del = random(10, 150);
 delay (del);
 analogwrite(r, 0);
 analogwrite(g, 0);
 analogwrite(b, 0);
 del = random(10, 150);
 delay(del);
 analogwrite(r, 255);
 analogwrite(g, 255);
 analogwrite(b, 255);
 del = random(10, 150);
 delay(del);
 analogwrite(r, 0);
 analogwrite(g, 0);
 analogwrite(b, 0);
 del = random(10, 150);
 delay(del);
 analogwrite(r, 255);
 analogwrite(g, 255);
 analogwrite(b, 255);
 del = random(10, 150);
 delay(del);
 analogwrite(r, 0);
 analogwrite(g, 0);
 analogwrite(b, 0);
 delay(20);
 analogwrite(r, rprev);
 analogwrite(g, gprev);
 analogwrite(b, bprev);
}

as understand arduino detects if there power coming usb or not , can switch appropriate power source needed. not tied atmega chip @ all. if arduino has data send try , send weather usb connected or not. serial communications pretty basic , doesn't have means of verifying connectivity. arduino doesn't have interactive link usb side of board. serial communication goes it.

you may able set own verification. have code verification has connection. example can have message sent pc. send "connected" threw serial monitor arduino. once sees or other phrase knows has pc connection. you'll need send disconnect command tell stop comunicating pc.

if windows guy think win 95 days. if old enough. couldn't plug in , unplug usb devices. had go task manager , click on safely remove hardware before pulling usb device system. otherwise windows go screwy , possibly crash. day os can handle without problem.


Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > USB not connected code?


arduino

Comments