Hi! I am working on Arduino and I would like to put a condition to the program so that it could start a loop. Can someone help please? Thanks!
Not sure exactly what you mean, but sounds as if you want to look at for, while and do...while, here.
I already tried these conditions. I want the program to start the loop if the condition is applied .
Jhjh:
I already tried these conditions. I want the program to start the loop if the condition is applied .
Well that's exactly what (say) while does.... if the condition is met, the while is entered.
So you'll need to explain further, probably be posting the code you tried and saying why it doesn't work- what it does wrong.
here is my code but i want it to restart the loop only if a specific action is detected
thanks
int led = 13; // Alimentation de la bobine
int hall = A0; // Analyse du capteur a effet Hall
unsigned long valeur; //Donnees directes du capteru a effet Hall
float tension; // Valeur actuelle en voltage du capteur
float pretension; // Valeur precedente en voltage du capteur
void setup() // Effectuer une seule fois
{
pinMode (hall, INPUT); // Declarer capteur a effet Hall comme INPUT
pinMode (led, OUTPUT); // Declarer led comme OUTPUT
Serial.begin (9600); // Vitesse du retour des donnees
}
void loop() // Effectuer à chaque fois
{
pretension = tension; // Tension precedente vs tension actuelle
valeur = analogRead (hall); // Lecture du capteur a effet Hall
tension = valeur * 5.0 / 1024; // Formule de calcul du voltage du capteur a effet Hall
if (tension < 2.54 && tension > (pretension + 0.01)) // Si la tension est plus basse que 2.4 et plus grande que la precedente continue
{digitalWrite (led, HIGH); // Allimente
delay (200); // Durant 0.2 secondes
digitalWrite (led, LOW);
}
Serial.print("previous= "); // Imprimer les valeurs pecedentes du capteur
Serial.println(pretension);
Serial.print("current= "); // Imprimer les valeurs actuelles du capteur
Serial.println(tension);
Serial.println(); // Sauter une ligne lors de l'affichage
Serial.println();
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.
what about something simple like
if (x == y) {
for (int n = 0; n < 10; n++) {
// whatever needs to happen
}
}
...R
ok so it will work one time until ...
i will try it
what does the mean
i want to run my loop one time until an event
int led = 13; // Alimentation de la bobine
int hall = A0; // Analyse du capteur a effet Hall
unsigned long valeur; //Donnees directes du capteru a effet Hall
float tension; // Valeur actuelle en voltage du capteur
float pretension; // Valeur precedente en voltage du capteur
void setup() // Effectuer une seule fois
{
pinMode (hall, INPUT); // Declarer capteur a effet Hall comme INPUT
pinMode (led, OUTPUT); // Declarer led comme OUTPUT
Serial.begin (9600); // Vitesse du retour des donnees
}
void loop() // Effectuer à chaque fois
{
pretension = tension; // Tension precedente vs tension actuelle
valeur = analogRead (hall); // Lecture du capteur a effet Hall
tension = valeur * 5.0 / 1024; // Formule de calcul du voltage du capteur a effet Hall
if (tension < 2.54 && tension > (pretension + 0.01)) // Si la tension est plus basse que 2.4 et plus grande que la precedente continue
{digitalWrite (led, HIGH); // Allimente
delay (200); // Durant 0.2 secondes
digitalWrite (led, LOW);
}
Serial.print("previous= "); // Imprimer les valeurs pecedentes du capteur
Serial.println(pretension);
Serial.print("current= "); // Imprimer les valeurs actuelles du capteur
Serial.println(tension);
Serial.println(); // Sauter une ligne lors de l'affichage
Serial.println();
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.
Define "event"
i want to restart the loop...
if(tension < 2.54)
and it restart
start of loop
while (tension >= 254)
{
//do stuff here
}
end of loop
thank you did i write start of loop and end of loop
I want to insert a condition so the program will only continue if its acomplished
int led = 13; // Alimentation de la bobine
int hall = A0; // Analyse du capteur a effet Hall
unsigned long valeur; //Donnees directes du capteru a effet Hall
float tension; // Valeur actuelle en voltage du capteur
float pretension; // Valeur precedente en voltage du capteur
void setup() // Effectuer une seule fois
{
pinMode (hall, INPUT); // Declarer capteur a effet Hall comme INPUT
pinMode (led, OUTPUT); // Declarer led comme OUTPUT
Serial.begin (38400); // Vitesse du retour des donnees
}
void loop() // Effectuer à chaque fois
{
pretension = tension; // Tension precedente vs tension actuelle
valeur = analogRead (hall); // Lecture du capteur a effet Hall
tension = valeur * 5.0 / 1024; // Formule de calcul du voltage du capteur a effet Hall
if (tension <2.52) {
for (int n = 0; n <= 1; n++) {
if (tension < 2.54 && tension > (pretension )) // Si la tension est plus basse que 2.4 et plus grande que la precedente continue
{digitalWrite (led, HIGH); // Allimente
delay (50); // Durant 0.2 secondes
digitalWrite (led, LOW);
} // whatever needs to happen
}
}
Serial.print("previous= "); // Imprimer les valeurs pecedentes du capteur
Serial.println(pretension);
Serial.print("current= "); // Imprimer les valeurs actuelles du capteur
Serial.println(tension);
Serial.println(); // Sauter une ligne lors de l'affichage
Serial.println();
}
how to make my code stop until a condition is considered
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.
I want to stop my loop until an event
the event = tension< 2.52
here is my code
thank you
int led = 13; // Alimentation de la bobine
int hall = A0; // Analyse du capteur a effet Hall
unsigned long valeur; //Donnees directes du capteru a effet Hall
float tension; // Valeur actuelle en voltage du capteur
float pretension; // Valeur precedente en voltage du capteur
void setup() // Effectuer une seule fois
{
pinMode (hall, INPUT); // Declarer capteur a effet Hall comme INPUT
pinMode (led, OUTPUT); // Declarer led comme OUTPUT
Serial.begin (38400); // Vitesse du retour des donnees
}
void loop() // Effectuer à chaque fois
{
pretension = tension; // Tension precedente vs tension actuelle
valeur = analogRead (hall); // Lecture du capteur a effet Hall
tension = valeur * 5.0 / 1024; // Formule de calcul du voltage du capteur a effet Hall
if (tension < 2.6)
{if (tension < pretension)
{digitalWrite (led, HIGH);
delay (100);
digitalWrite (led, LOW);}}
Serial.print("previous= "); // Imprimer les valeurs pecedentes du capteur
Serial.println(pretension);
Serial.print("current= "); // Imprimer les valeurs actuelles du capteur
Serial.println(tension);
Serial.println(); // Sauter une ligne lors de l'affichage
Serial.println();
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.
Perhaps you intent isn't clear, but as I read the problem, it seems this might work. If appears to me that you want to stay away from the Serial statements at the end of the loop until your conditions are met. If that's the case, then:
void loop() // Effectuer à chaque fois
{
do {
pretension = tension; // Tension precedente vs tension actuelle
valeur = analogRead (hall); // Lecture du capteur a effet Hall
tension = valeur * 5.0 / 1024; // Formule de calcul du voltage du capteur a effet Hall
digitalWrite (led, HIGH); // Allimente
delay (200); // Durant 0.2 secondes -- This is pretty short
digitalWrite (led, LOW);
} while (tension >= 2.54 && tension <= (pretension + 0.01));
Serial.print("previous= "); // Imprimer les valeurs pecedentes du capteur
Serial.println(pretension);
Serial.print("current= "); // Imprimer les valeurs actuelles du capteur
Serial.println(tension);
Serial.println(); // Sauter une ligne lors de l'affichage
Serial.println();
}
It seems to me that your code needs some way to continually update tension. Again, I may be misunderstanding what you're trying to do.
Please use code tags.
Three posts for one question?
its important that why can you help
but they are quite different
but they are quite different
What are "they"? Why not take a few moments to tell us what you really want to do? And use code tags!