besoin d'aide sur une Appli arduino

Les cartes Arduino, les platines

besoin d'aide sur une Appli arduino

Message non lude peuch88 » Dim 24 Juin 2012 07:52

Bonjour,

j'aimerais avoir l'explication de ce phénomene bizard, "a mes yeux de novice"


quand j'utilise ce sketch

------------------------------------------------------------

char winddr;
int windd;

void setup() {
Serial.begin (112500);
}
void loop ()
{
windd=0;
ecris();
windd=45;
ecris();
windd=90;
ecris();
windd=135;
ecris();
windd=180;
ecris();
windd=225;
ecris();
windd=270;
ecris();
windd=315;
ecris();

}
void ecris (){
switch(windd){
case 0: winddr = 'N';
break;
case 45: winddr = 'NE';
break;
case 90: winddr = 'E';
break;

case 135: winddr = 'SE';
break;
case 180: winddr = 'S';
break;
case 225: winddr = 'SW';
break;
case 270: winddr = 'W';
break;
case 315: winddr = 'NW';
break;
}
Serial.print(winddr);
Serial.print(" = ");
Serial.println(windd);
delay (2000);
}
-----------------------------------------------------------------------

je me retrouve avec

----------------------------------------------------------------------
N = 0
E = 45
E = 90
E = 135
S = 180
W = 225
W = 270
W = 315

-------------------------------------------------------------------
alors que chaque case devrais switcher devant les caractères correspondants

quelqu'un aurais une explication a ce 'bug' ?
peuch88
 
Messages: 3
Inscription: Dim 24 Juin 2012 07:37

Re: besoin d'aide sur une Appli arduino

Message non lude peuch88 » Dim 24 Juin 2012 08:01

Autre variante, même resultats

-------------------------------------------------------------

char winddr;
int windd;

void setup() {
Serial.begin (112500);
}
void loop ()
{
windd=0;
ecris();
windd=45;
ecris();
windd=90;
ecris();
windd=135;
ecris();
windd=180;
ecris();
windd=225;
ecris();
windd=270;
ecris();
windd=315;
ecris();

}
void ecris (){
if (windd==0)
{
winddr = 'N';
}
if (windd==45)
{
winddr = 'NE';
}
if (winddr==90)
{
winddr = 'E';
}

if (windd==135)
{
winddr = 'SE';
}
if (windd==180)
{
winddr = 'S';
}
if (windd==225)
{
winddr = 'SW';
}
if (windd==270)
{
winddr = 'W';
}
if (windd==315)
{
winddr = 'NW';
}

Serial.print(winddr);
Serial.print(" = ");
Serial.println(windd);
delay (2000);
}
--------------------------------------------------------------
s'est fou non ?
peuch88
 
Messages: 3
Inscription: Dim 24 Juin 2012 07:37

Re: besoin d'aide sur une Appli arduino

Message non lude SesechXP » Dim 24 Juin 2012 09:05

Salut,

Il n'y a pas de bogue et le comportement est tout à fait normal. C'est plutôt ton code qui ne fait pas ce que tu attends ;)

Code: Tout sélectionner
char winddr;

// ...

case 45:
    winddr = 'NE';
break;


Déjà la notation de ta chaîne de caractères 'NE' est mauvaise, il faut utiliser des doubles quotes : "NE". Ensuite winddr devrait être une chaîne (String) et non un caractère (char) puisque tu veux y mettre une chaîne de caractères.

Code: Tout sélectionner
String winddr;
int windd;

void setup() {
    Serial.begin (115200);
}

void loop ()
{
    windd=0;
    ecris();
    windd=45;
    ecris();
    windd=90;
    ecris();
    windd=135;
    ecris();
    windd=180;
    ecris();
    windd=225;
    ecris();
    windd=270;
    ecris();
    windd=315;
    ecris();
}

void ecris (){
    switch(windd){
        case 0: winddr = "N";
        break;
        case 45: winddr = "NE";
        break;
        case 90: winddr = "E";
        break;

        case 135: winddr = "SE";
        break;
        case 180: winddr = "S";
        break;
        case 225: winddr = "SW";
        break;
        case 270: winddr = "W";
        break;
        case 315: winddr = "NW";
        break;
    }
    Serial.print(winddr);
    Serial.print(" = ");
    Serial.println(windd);
    delay (2000);
}


PS : Merci d'utiliser les balises code pour faciliter la lecture...
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: besoin d'aide sur une Appli arduino

Message non lude peuch88 » Dim 24 Juin 2012 09:09

un grand merci a toi , je n'y connais pas grand chose en language arduino ni en c++ , je programme habituellement en vb.net

en réalité la base de ce programme n'est pas de moi, et je n'ais pas vraiment fait attention a la déclaration de cette variable

comme quoi ont peut bloquer sur des détails !

encore merci et au plaisir
peuch88
 
Messages: 3
Inscription: Dim 24 Juin 2012 07:37


Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

cron