Show Posts
Pages: [1] 2 3 ... 17
1  Using Arduino / Programming Questions / Re: beginner doubt about variables on: Today at 08:17:31 am
Quote
basically add 1 to va every sec,

It will do it muuuuuuuuuuuuuuuuuuuuuuuuch faster than every second. I don't know how many clock cycles it will take, but it's doing 16 million of them in a second to it will breeze through loop() a zillion times before you can blink.

Why don't you describe what it is you're trying to do?- what are those variables (what do they represent), where do they get their values from (other than each other), what's your actual application?

yep. I understand it is running so fast that one day of my time equals to many years in the machine world.

I have 2 values: Va and Vv; Va is a value that doesn't change a lot, and Vv is the one adding 1 to itself for every 1 sec; so I want to add 1 to Va by Vv for every second; that is basically what I want to do;

need to keep the original Va value, add 1 to Va because Vv is adding 1 to itself;

so

Vv=Va; //update Vv with Va;

Va=Vv; // since Vv is constantly adding one to itself, won't this Va=(Vv++); or this Va is merely equal to Va=(Vv=Va) ?

2  Using Arduino / Programming Questions / Re: beginner doubt about variables on: Today at 08:08:26 am
If you want to exchange the value of two variables you need to use a third variable to temporarily hold one of the values.

va = 1
vb = 2

temp = vb
vb = va
va = temp

now va will have 2 in it and vb will have 1 in it

...R

This is more complicated than I can handle. I actually just want to change one value of va with a temporary value of vv; vv is my temp value, and it's adding 1 to itself for every sec; I just need to have va does the something as vv, which is adding one to itself

so will it work like this?

va=5;
vv=0;
vv++;  // for every sec +1
temp;

temp=vv; // update temp with whatever value vv is; which is 0 when time is 0;
vv=va; // update vv with whatever va is, which is 5;
va=temp;// temp= vv, which is 0 for time =0; va=0; but va should be 5 instead of 0.
3  Using Arduino / Programming Questions / Re: beginner doubt about variables on: Today at 07:49:11 am
Quote
and I want to change va-c by just changing vv.
highly doubted it will work;
Correct. It will not.

Code:
case 1:
vv=va; //update vv with whatever va is;
va=vv; //update va with vv, basically add 1 to va every sec, just like vv
break;
Once you've assigned the value in va to vv, there is no point in then assigning the same value to va.

Quote
can someone explain to me why it won't work,
Think of a variable as a box you can put data in. Putting a value in one box will not affect the value in any other box.

will it work like this? highly think it will work. so the problem here is that the code is running so fast, that it just ignore vv++; and va is not being updated with the new value of vv after vv++;
vv=va;  //update vv with va
vv++;  //add one to vv
va=vv; //update va with vv, basically add 1 to va every sec, just like vv



4  Using Arduino / Programming Questions / beginner doubt about variables on: Today at 07:27:59 am

so I have 4 values or variables va vb vc  vv;

and I want to change va-c by just changing vv.
highly doubted it will work;
can someone explain to me why it won't work,
and how to go around it?
==================================
Code:
vv++; // let's assume vv is second count; For every sec vv=vv+1;

case 1:
vv=va; //update vv with whatever va is;
va=vv; //update va with vv, basically add 1 to va every sec, just like vv
break;

case 2:
vv=vb; //same thing
vb=vv;
break;

case 3:
vv=vc; //same thing
vc=vv;
break;
5  Using Arduino / Programming Questions / Re: simple logic wrong result on: August 31, 2014, 05:20:40 am
Quote
seems to me that when bb goes to 1, counter goes to 0, but after bb goes back to 0, counter goes back to 1

So this line....

Code:
if(bb.clicks==1) counter=0;                 //<<<<<<<<<<<<<<<<<<<<<<< Only this part doesn't work

.... actually does work, as suspected all along.

So now we (read as, you  smiley-cool ) need to examine the rest of the flow to see where it goes to set counter to 1 again.

Methinks you need some more serial prints, so that you can see where this convolution of code actually goes.

I think i see where the problem is. It is probably from the noises of the button, and my code is stupid too. thanks for the help anyway. entire code save to my floppy disk doesn't really help even a tiny bit.
6  Using Arduino / Programming Questions / Re: simple logic wrong result on: August 31, 2014, 04:42:07 am
The line you're saying doesn't work, relies on counter being 1 already (inside case 1 of menu 2) if I followed the thread properly. Then it looks for bb.clicks being 1.

Have you got serial.prints right here:

Code:
if(counter==1){
    char y[17];
    sprintf(y, "< Time is Up!! >");
    lcd.setCursor (0,1);
    lcd.print (y);   
             Serial.println(counter);  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (must be 1)
             Serial.println(bb.clicks);  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (hoping for 1)
    if(bb.clicks==1) counter=0;                 //<<<<<<<<<<<<<<<<<<<<<<< Only this part doesn't work
             Serial.println(counter);  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (should be 0 now)
    }





here is the result, seems to me that when bb goes to 1, counter goes to 0, but after bb goes back to 0, counter goes back to 1

-
counter before:1
bb:0
counter after:1
------
counter before:1
bb:0
counter after:1
------
counter before:1
bb:0
counter after:1
------
counter before:1
bb:1
counter after:0
------
counter before:1
bb:1
counter after:0
------
counter before:1
bb:1
counter after:0
------
counter before:1
bb:1
counter after:0
------
counter before:1
bb:1
counter after:0
------
counter before:1
bb:0
counter after:1
------
counter before:1
bb:0
counter after:1
------
counter before:1
bb:0
counter after:1
------
counter before:1


Code:
if(counter==1){
    char y[17];
    sprintf(y, "< Time is Up!! >");
    lcd.setCursor (0,1);
    lcd.print (y);   
             Serial.print ("counter before:");
             Serial.println(counter);  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (must be 1)
             
             Serial.print ("bb:");
             Serial.println(bb.clicks);  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (hoping for 1)
    if(bb.clicks==1) counter=0;       //<<<<<<<<<<<<<<<<<<<<<<< Only this part doesn't work
   
             Serial.print ("counter after:");
             Serial.println(counter);  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (should be 0 now)
             Serial.println ("------");
    }

    if(counter==0)  if(bb.clicks==1) timer=!timer;
   
    break;   
7  Using Arduino / Programming Questions / Re: simple logic wrong result on: August 31, 2014, 04:10:00 am
Quote
here is all the code:

But still, as far as I can see, without Serial.prints to see if bb.clicks is 1, when counter is 1, inside case 1 of menu 2.

Do you, or do you not, know for a fact that bb.clicks is 1 under those very specific constraints (counter is 1, inside case 1 of menu 2), and if so, how do you know. 10 seconds work to stick a serial print in there....

here is my serial result

 counter:0
 timer:0
 counter:0
 timer:0
 counter:0
 timer:1                                     ////<<<< timer = 1 when I press the button
 counter:1                                ////<<<<< counter became 1 right away
 timer:0
 counter:1                      
 timer:0
 counter:1                          
 timer:0
 counter:1
 timer:0
 counter:1
 timer:0
 counter:1
 timer:0
 counter:1
 timer:0


===========here is when the button is pressed
 bb 0
 bb 1
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 0
 bb 1
 bb 0
8  Using Arduino / Programming Questions / Re: simple logic wrong result on: August 31, 2014, 03:46:47 am
Quote
so, I am very confused what is wrong here.
What is wrong is that you are being very arrogant and not taking the advice that has been given you.

You present an impossible situation because that is what you have in your mind. Yes it is impossible that code does behave like this.
So the soloution is to either post all the code or write a much smaller piece of code that shows the problem.

If you are not prepared to make that effort the. Why should anyone make the effort to help you?

here is all the code:

Code:
byte AU[8] = {
  0b00100,
  0b00100,
  0b01110,
  0b11111,
  0b00100,
  0b01110,
  0b01110,
  0b01010};
 
byte AR[8] = {
0b01000,
0b00100,
0b00110,
0b11111,
0b11111,
0b00110,
0b00100,
0b01000}; 

byte CK[8] = {
0b00000,
0b01110,
0b10101,
0b10101,
0b10111,
0b10001,
0b01110,
0b00000
}; 


byte AL[8] = {
0b00000,
0b00100,
0b01110,
0b01110,
0b01110,
0b11111,
0b00100,
0b00000
};

#define au 0x01
#define ar 0x02
#define ck 0x03
#define al 0x04

#define led 6

#include "ClickButton.h"
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,10,9,8,7);

//------------------------------------------------------------------------------------------------------

ClickButton ba(4, LOW, CLICKBTN_PULLUP);
ClickButton bb(3, LOW, CLICKBTN_PULLUP);

int menu=1;

int sec=0;
int minn=0;
int hr=0;
int halfDay=0;
int day=0;
char* ap="";
char* face="";
int fc=1;

int csec=0;
int cmin=0;
int chr=0;
int cday=0;
int timer=0;
int counter=0;
char* sp="";
int arps=0;

int asec=0;
int amin=0;
int ahr=0;
int ahalfDay=0;
int aday=0;
int alarm=0;
int bell=0;
char* of="";
char* aap="";

int post=1;
int pspost=1;

int test=888;

unsigned long nowtimer=0;
unsigned long pretimer=0;

//------------------------------------------------------------------------------------------------------
void setup()
{

  lcd.begin(16,2);
  lcd.createChar(1, AU);
  lcd.createChar(2, AR); 
  lcd.createChar(3, CK);
  lcd.createChar(4, AL); 
  pinMode (led, OUTPUT);
  ba.multiclickTime = 50;
  bb.multiclickTime = 50;   
}


//------------------------------------------------------------------------------------------------------
void loop()
{
  ba.Update();
  bb.Update(); 

  if(ba.clicks==-1) {menu++; post=1; pspost=0;}    //3 menu
  if(menu==4) menu=1;
 
  if(post-pspost==1){  //clear lcd display everytime position has been changed
      lcd.clear();
      pspost=post;
  }
 
  if(counter ==1 || bell == 1)   digitalWrite (led, HIGH);
  else digitalWrite (led, LOW);
 
  nowtimer=millis();
  if(nowtimer-pretimer>=1000) {
    sec++;   
    fc++;
    if(fc==9)fc=1;
   
    if(timer==1){
      lcd.clear();
      csec--;
      arps++;
      if(arps==8)arps=0;
    }
   
    pretimer=nowtimer;     
  } 


  if(sec==60){  minn++;    sec=0;  }
  if(minn==60){   hr++;    minn=0;  }
  if(hr==12){ halfDay++;  hr=0; }
  if(halfDay==2){ day++;  halfDay=0; }
 
  if(csec==-1){cmin--; csec=59;}
  if(cmin==-1){chr--; cmin=59;}
  if(chr==-1){cday--; chr=23;}
  if(cday==0 && chr==0 && cmin==0 && csec==0 && timer==1){timer=0; counter=1; }
 
 
  if(asec==60){  asec=0;  }
  if(amin==60){  amin=0;  }
  if(ahr==12) {   ahr=0; }
  if(aday==50) {   aday=0; }
 
 if(sec==asec && minn==amin && hr==ahr && halfDay==ahalfDay && day==aday && alarm==1){alarm=0; bell=1;}
 
  if(halfDay==0)ap="AM"; else ap="PM";
  if(timer==0)sp="Start"; else sp="Pause"; 
 
  if(alarm==0)of="OFF"; else of="ON "; 
  if(ahalfDay==0)aap="AM"; else aap="PM"; 
 
  if(fc==1)face="=_="; 
  if(fc==2)face="-.-"; 
  if(fc==3)face="*.*"; 
  if(fc==4)face="*o*"; 
  if(fc==5)face="^_^"; 
  if(fc==6)face="^.^"; 
  if(fc==7)face="@-@"; 
  if(fc==8)face="w.w";   
  //===== menu 1 =============================================================================================

  if(menu==1){

    char x[17];
    sprintf(x,"%c %02d:%02d:%02d:%02d %s", ck,day,hr,minn,sec,ap); 
    lcd.setCursor (0,0);
    lcd.print (x); 
   
 
  switch (post){
  case 1:
    char y[17];
    sprintf(y, " Day:Hr:Min  %s", face);
    lcd.setCursor (0,1);
    lcd.print (y);
    break;
   
  case 2:
    lcd.setCursor (0,1);
    lcd.print ("[ Reset ]");
    if(bb.clicks==1){day=0; hr=0; minn=0; sec=0; halfDay=0; post=1; pspost=0;  }   
    break;   
   
  case 3:
    lcd.setCursor (3,1);
    lcd.write (au);
    if(bb.clicks==1) day++;   
    break;   
   
  case 4:
    lcd.setCursor (6,1);
    lcd.write (au);
    if(bb.clicks==1) hr++;   
    break;   

  case 5:
    lcd.setCursor (9,1);
    lcd.write (au);
    if(bb.clicks==1) minn++;   
    break;

  case 6:
    lcd.setCursor (12,1);
    lcd.write (au);
    if(bb.clicks==1) sec=0;   
    break;     
   
  case 7:
    lcd.setCursor (15,1);
    lcd.write (au);
    if(bb.clicks==1) halfDay=!halfDay;   
    break;     
  }
 

  if(ba.clicks==1) post++;
  if(bb.clicks==-1){post=1; pspost=0;} 
  if(post==8){post=1; pspost=0;} 

  }


  //===== menu 2 =============================================================================================
  if(menu==2){

    char x[17];
    sprintf(x,"C%c %02d:%02d:%02d:%02d %c", ar, cday,chr,cmin,csec, ar); 
    lcd.setCursor (0,0);
    lcd.print (x);       


  switch (post){
  case 1:
    if(timer==0  && counter==0){
    char y[17];
    sprintf(y, " <Timer> [%s]", sp);
    lcd.setCursor (0,1);
    lcd.print (y);
     }
     
    if(timer==1 && counter==0){
     
    lcd.setCursor (arps,1);
    lcd.write (ar);   
       
    char y[17];
    sprintf(y, "[%s]", sp);
    lcd.setCursor (9,1);
    lcd.print (y);
     }         
     
    if(counter==1){
    char y[17];
    sprintf(y, "< Time is Up!! >");
    lcd.setCursor (0,1);
    lcd.print (y);   
    if(bb.clicks==1) {post=1; pspost=0; counter=0;}   
    }
   
    if(counter==0) if(bb.clicks==1) timer=!timer;
   
    break;   
   
  case 2:
    lcd.setCursor (0,1);
    lcd.print ("[ Reset ]");
    if(bb.clicks==1) {cday=0; chr=0; cmin=0; csec=0; post=1; pspost=0; counter=0; }   
    break;     
   
  case 3:
    lcd.setCursor (4,1);
    lcd.write (au);
    if(bb.clicks==1) cday++;   
    break;   
   
  case 4:
    lcd.setCursor (7,1);
    lcd.write (au);
    if(bb.clicks==1) chr++;   
    break;   

  case 5:
    lcd.setCursor (10,1);
    lcd.write (au);
    if(bb.clicks==1) cmin++;   
    break;

  case 6:
    lcd.setCursor (13,1);
    lcd.write (au);
    if(bb.clicks==1) csec++;   
    break;     
     
  }
 

  if(ba.clicks==1) post++;
  if(bb.clicks==-1) {post=1; pspost=0;}
  if(post==7){post=1; pspost=0;} 
  } 
  //===== menu 3 =============================================================================================
 
  if(menu==3){

    char x[17];
    sprintf(x,"%c %02d:%02d:%02d:%02d %s", al, aday,ahr,amin,asec,aap); 
    lcd.setCursor (0,0);
    lcd.print (x);       


  switch (post){
  case 1:
    if(bell==0){
    char y[17];
    sprintf(y, "  <Alarm>  [%s]", of);
    lcd.setCursor (0,1);
    lcd.print (y);}
     
     else {
     char y[17];
    sprintf(y, "<Alarm went off>");
    lcd.setCursor (0,1);
    lcd.print (y);
     }
   
    if(bb.clicks==1) alarm=!alarm; 
    break;

  case 2:
    lcd.setCursor (0,1);
    lcd.print ("[ Reset ]");
    if(bb.clicks==1){aday=0; ahr=0; amin=0; asec=0; ahalfDay=0; post=1; pspost=0; alarm=0; bell=0;}   
    break;
   
  case 3:
    lcd.setCursor (3,1);
    lcd.write (au);
    if(bb.clicks==1) aday++;   
    break;   
   
  case 4:
    lcd.setCursor (6,1);
    lcd.write (au);
    if(bb.clicks==1) ahr++;   
    break;   

  case 5:
    lcd.setCursor (9,1);
    lcd.write (au);
    if(bb.clicks==1) amin++;   
    break;

  case 6:
    lcd.setCursor (12,1);
    lcd.write (au);
    if(bb.clicks==1) asec++;   
    break;     
   
  case 7:
    lcd.setCursor (15,1);
    lcd.write (au);
    if(bb.clicks==1) ahalfDay=!ahalfDay;   
    break;     
  }
 

  if(ba.clicks==1) post++;
  if(bb.clicks==-1) {post=1; pspost=0;} 
  if(post==8){post=1; pspost=0;} 
  }   
  //===== menu 4 ===========================


}
9  Using Arduino / Programming Questions / Re: simple logic wrong result on: August 31, 2014, 03:29:23 am
Perhaps bb.clicks isn't 1?

Stick a Serial.println(bb.clicks); in there so you can see.

Or, maybe it is setting counter to 0 but you don't know it?

Stick a Serial.println(counter); in there so you can see.

bb.clicks is just a press button...I have use this code through out my sketch. highly doubted it's the problem.
and I am pretty sure, counter is one  because when counter is 1, it print out a line on the LCD;

so, I am very confused what is wrong here.

more bb.clicks without any problem
Code:
   
  case 2:
    lcd.setCursor (0,1);
    lcd.print ("[ Reset ]");
    if(bb.clicks==1) {cday=0; chr=0; cmin=0; csec=0; post=1; pspost=0; counter=0; }   
    break;     
   
  case 3:
    lcd.setCursor (4,1);
    lcd.write (au);
    if(bb.clicks==1) cday++;   
    break;   
10  Using Arduino / Programming Questions / Re: simple logic wrong result on: August 31, 2014, 03:24:26 am
It is silly to ask this question without posting the entire code.

If you have really managed to isolate the problem to a single line then it shouldn't tak you more than 5 or 10 minutes of diagnostics to figure out what causes it.

As well as not posting all the code you have not told us how you have come to the conclusion that that line is at fault or what diagnostic tests you have already tried.

...R

that is exactly the entire code with "counter" in it. The rest of the code has nothing to do with counter.
11  Using Arduino / Programming Questions / [half-Solved?]simple logic wrong result on: August 31, 2014, 01:36:29 am
timer is a switch to turn ON/OFF the timer count down;
Code:
nowtimer=millis();
  if(nowtimer-pretimer>=1000) {
    sec++;    
    fc++;
    if(fc==9)fc=1;
    
    if(timer==1){
      lcd.clear();
      csec--;
      arps++;
      if(arps==8)arps=0;
    }
    
    pretimer=nowtimer;    
  }  



counter is the result once timer is over.
Code:
 if(cday==0 && chr==0 && cmin==0 && csec==0 && timer==1){timer=0; counter=1; }

Only one line doesn't work here. After  (counter==1),  I want to reset counter back to   counter=0.  It doesn't work.
Code:
 case 1:
    if(timer==0  && counter==0){
    char y[17];
    sprintf(y, " <Timer> [%s]", sp);
    lcd.setCursor (0,1);
    lcd.print (y);
     }
    
    if(timer==1 && counter==0){
      
    lcd.setCursor (arps,1);
    lcd.write (ar);    
      
    char y[17];
    sprintf(y, "[%s]", sp);
    lcd.setCursor (9,1);
    lcd.print (y);
     }        
    
    if(counter==1){
    char y[17];
    sprintf(y, "< Time is Up!! >");
    lcd.setCursor (0,1);
    lcd.print (y);  
    if(bb.clicks==1) counter=0;                 //<<<<<<<<<<<<<<<<<<<<<<< Only this part doesn't work
    }
    
    if(counter==0) if(bb.clicks==1) timer=!timer;
    
    break;  
12  Using Arduino / Programming Questions / Re: variable value not being updated - lcd.setCursor on: August 30, 2014, 08:07:21 pm
One error is here:
Code:
if(arps=11)arps=0;

must be:
Code:
if(arps==11)arps=0;

wow. I can't believe that I miss this error. thanks a lot. GOT IT
13  Using Arduino / Programming Questions / [Solved]variable value not being updated - lcd.setCursor on: August 30, 2014, 07:48:42 pm
Here is how it looks on the lcd; arrow doesn't move at all.
">                 Stop";

here is how It should
">                 Stop"
" >                Stop"
"  >               Stop"
"   >              Stop"....etc


global value
Code:
int arps=0;

when timer is on; position shift to right for every sec
Code:
 nowtimer=millis();
  if(nowtimer-pretimer>=1000) {
    sec++;
    
    if(timer==1){
      lcd.clear();
      csec--;
      arps++;    //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
      if(arps=11)arps=0;
    }
    
    pretimer=nowtimer;    
  }  

update and write the new location of the arrow
Code:
 case 1:
    if(timer==0){
    char y[17];
    sprintf(y, "Count Down %s", sp);
    lcd.setCursor (0,1);
    lcd.print (y);
     }
    
    if(timer==1){
      
    lcd.setCursor (arps,1);     //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    lcd.write (ar);    
      
    char y[17];
    sprintf(y, "%s", sp);
    lcd.setCursor (12,1);
    lcd.print (y);
     }    
    
    if(bb.clicks==1) timer=!timer;  
    break;  
14  Using Arduino / Project Guidance / Need advice for my Battery powered DC-DC power supply/ Battery discharger on: August 27, 2014, 12:59:16 am
Always want to build a digital power supply, have tried many times, but all failed terribly, and this would be my fourth attempts. want to get some help from expert out there. Please if you can spot some potential problem, let me know.

Here is what my Power supply should be able to do:
-1.3-20V adjustable regulated output (Spent few hours hacking a step Up/Down board just for it to do that; tested, 4 amp output at 20V)
- Current monitor using a 5W 1 ohm resistor ( 1mv drop = 100ma )
- Constant current control (Using above current read out to finely adjust the PWM feeding to the P-Channel mosfet (with this affect my voltage output?? ))
-Battery dicharger/Test at different discharge rate ( Using the same 5W resistor to discharge a battery through a NPN resistor with its base connect to a PWM pin)
15  Using Arduino / Project Guidance / Re: Battery powered DC lab bench power supply controlled by arduion on: August 26, 2014, 08:24:48 am
you could use http://www.farnell.com/datasheets/1639075.pdf Ic for application

Since controller require few mA current , SO i don't think you must use high rated regulator. I would like to interface your microcontroller . Can u share us simple connection diagram of interface.



I have bought some mini booster/buck modules, hacked them, and build my power supply based on that. This is easier for me.

For that failed project shown in the picture; Basically, it consists a hacked 5v mini lithium portable supply circuit for powering my arduino and recharge my lithium battery ; the main board with arduino nano brain, a digital pot for controlling the voltage of the booster, a 5W resistor for measuring the current, a temp resistor for high temp shut down and some wires for 3 buttons, 2 control pins for PWM for control the current, few pins for the LCD. On the left, are a heat-sink with the booster/buck modules with 1 NPN, and 1 Mosfet;  I don't have the diagram that I draw on a paper anymore.  It didn't work because some how the digital pot burned down by the high voltage of the booster for no reason, 10K digital pot, only 40V max output.
Pages: [1] 2 3 ... 17