Aller au contenu

Messages recommandés

Nouveau, Posté(e)
fower Nouveau 1 message
Baby Forumeur‚
Posté(e)

Bonjour,

On aurait besoins d'aide pour notre Projet en STI2D pour arriver a relever les impulsions de notre compteur électrique. Pour cela on a commencer a faire le programme sur Arduino (je vous le met si dessous) mais ce programme sert uniquement a capter une luminosité. On a déjà essayer sur le compteur, la photorésistance arrive bien a capter l'impulsion lumineuse qu'émet le compteur. Donc pour ça ont a pas de problème, mais je n'arrive pas a modifié le programme pour arriver a compter les impulsion on avait essayer de faire une modification (je vous la met après le programme) mais ça ne fonctionne pas.

Donc si vous pouriez m'aider a faire un programme qui arrive a compter le nombre d'impulsions.

Arduino programme:

const int sensorPin = 0;

const int ledPin = 9;

// We'll also set up some global variables for the light level:

int lightLevel, high = 0, low = 1023;

void setup()

{

// We'll set up the LED pin to be an output.

// (We don't need to do anything special to use the analog input.)

pinMode(ledPin, OUTPUT);

}

void loop()

{

lightLevel = analogRead(sensorPin);

manualTune(); // manually change the range from light to dark

analogWrite(ledPin, lightLevel);

}

void manualTune()

{

lightLevel = map(lightLevel, 700, 1023, 1, 255);

lightLevel = constrain(lightLevel, 0, 255);

}

void autoTune()

{

if (lightLevel < low)

{

low = lightLevel;

}

if (lightLevel > high)

{

high = lightLevel;

}

lightLevel = map(lightLevel, low+30, high-30, 0, 255);

lightLevel = constrain(lightLevel, 0, 255);

// Now we'll return to the main loop(), and send lightLevel

// to the LED.

}

modification apporter pour essayer de compter les imp:

le but était de quand une impulsion ce produit le compteur rentre dans une phase ou il commence a compter et il arrête de compter quand et seulement quand la lumière de l'impulsion s’arrête (pour éviter de compter deux imp alors qu'il n'y en aurait eu qu'une seul) et quand cette boucle ce fini on compte +1 et que a la fin on puisse relever le nombre d'impulsion qu'il a reçus puis on essaierai de le mettre sous forme graphique

int main()

{

double lightLevel(0);

if (lightLevel > 0)

{

if (lightLevel < 0)

{

double impulsion(0);

impulsion + 1;

}

}

printf(impulison);

Je vous remercie d'avoir prit connaissance de ce sujet et je vous en serrez reconnaissant si vous pourriez m'apporter une aide.

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, 33ans Posté(e)
Lebowski Membre 67 messages
Baby Forumeur‚ 33ans‚
Posté(e)

Bonjour.

Concernant ta sous-fonction, j'ai des doutes avec le fait que lightlevel puissent descendre en dessous de zéros, surtout que tu mets plus haut que l'état haut est égal à 0 (la partie en anglais)

Ainsi, la condition dans le if serait "lightlevel == 0" (d'ailleurs, il semble nécessaire de mettre une sorte de palier, la luminosité ne sera peut être pas toujours au max)

De plus, ajouter une tempo le temps de lire la commande est souvent nécessaire donc je pense qu'il faudrait que tu en ajoutes une en-dessous de "analogread" (j'ai eu énormément d'erreurs à cause de transition de signal qui varié en début de changement de phase).

Edit : ensuite je peux dire des bêtises, j'ai toujours du mal à lire les programmes sans les essayer par moi-même.

Lien à poster
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×