ciao tutti,
so che è l'ennesimo thread sulla comunicazione seriale ma sono arrivato un punto morto e mi servirebbe una dritta.
voglio riuscire pilotare un led in pwm da visual basic 2010 express.
il led si accende ma non funziona correttamente; fino pwm 19 la luminosità sale regolarmente, 20 scende leggermente e poi torna salire regolarmente fino 175. 176 cala bruscamente e fino 255 varia caso. se arrivo 255 non riesco neanche più spegnerlo.
immagino sia la conversione dei valori fregarmi ma non più come correggere
lato visual basic, con una trackbar tarata 0 - 255 ho questo codice:
quindi se ad esempio setto la trackbar 125 ad arduino arriva questa stringa in ascii, corretto? "99'49'50'53'102" (senza apici)
lato arduino ho questo:
se potete darmi una dritta sull'errore o gli errori ve ne sarei grato, ho dei dubbi un po su tutta la parte lato arduino
so che è l'ennesimo thread sulla comunicazione seriale ma sono arrivato un punto morto e mi servirebbe una dritta.
voglio riuscire pilotare un led in pwm da visual basic 2010 express.
il led si accende ma non funziona correttamente; fino pwm 19 la luminosità sale regolarmente, 20 scende leggermente e poi torna salire regolarmente fino 175. 176 cala bruscamente e fino 255 varia caso. se arrivo 255 non riesco neanche più spegnerlo.
immagino sia la conversione dei valori fregarmi ma non più come correggere
lato visual basic, con una trackbar tarata 0 - 255 ho questo codice:
code: [select]
private sub trackbar1_scroll(byval sender system.object, byval e system.eventargs) handles trackbar1.scroll
label3.text = "pwm " & trackbar1.value
serialport1.write("c" & trackbar1.value & "f") ' "c" carattere di inizio e "f" carattere di fine trasmissione
end sub
quindi se ad esempio setto la trackbar 125 ad arduino arriva questa stringa in ascii, corretto? "99'49'50'53'102" (senza apici)
lato arduino ho questo:
code: [select]
int ledpin = 11; // number of led pin
int valpwm;
char input[6]; // memorizzo la stringa in arrivo
void setup() {
serial.begin(9600); // set serial speed
pinmode(ledpin, output); // set led output
digitalwrite(ledpin, low); //turn off led
}
void loop(){
while (serial.available() == 0); // nothing if nothing sent
int i=0;
input[i++] = serial.read();
delay(5);
while((input[i++] = serial.read()) != 'f'){
delay(5);
}
if (input[0]=='c'){ // controllo carattere di inizio trasmissione
valpwm=(atoi(input+1)+atoi(input+2)+atoi(input+3));
analogwrite(ledpin,valpwm);
}
}
se potete darmi una dritta sull'errore o gli errori ve ne sarei grato, ho dei dubbi un po su tutta la parte lato arduino
perché, finita la lettura dalla seriale, ma prima del if, non fai una serial.println() del contenuto di input[] ? così sei sicuro di ciò che veramente stai ricevendo e ... potresti avere delle sorprese
guglielmo
guglielmo
Arduino Forum > International > Italiano > Software (Moderator: leo72) > [Risolto] Visual Basic e pwm
arduino
Comments
Post a Comment