je suis un élève et j'ai pour partie de projet de faire descendre ou monter un store ( volet électrique ) avec des relais.
je dois faire 2 modes, un automatique en fonction de l'indice UV et un mode manuel avec l'application app inventor, du coté de l'application pas de problème j'arrive à allumer des leds etc... j'ai réussis a faire baisser et monter le store avec l'application ( en mode manuel ) et aussi en mode automatique avec l'indice UV, mais quand j'assemble les 2 programmes sa ne marche plus voici mon code
char val;
char valManuel;
int UV = A0;
int Monter = 4;
int Descendre = 8;
void setup() {
Serial.begin(9600);
pinMode(Monter, OUTPUT);
pinMode(Descendre, OUTPUT);
digitalWrite(Descendre, LOW);
digitalWrite(Monter, LOW);
}
void loop() {
while (Serial.available() > 0)
{
val = Serial.read();
}
if ( val == 'z' ) {
void Mode_Auto();
}
if ( val == 's' ) {
void Mode_Manuel();
}
Serial.print((IndiceUV() * 1000 / 4.3 - 83 ) / 21 * 0.001);
}
int IndiceUV() {
int ValUV = 0;
long sum = 0;
for (int i = 0; i < 1024; i++)
{
ValUV = analogRead(UV);
sum = ValUV + sum;
delay(2);
}
long meanVal = sum / 1024;
return (meanVal);
}
void Mode_Manuel() {
while (Serial.available() > 0)
{
val = Serial.read();
}
if ( valManuel == 'd')
{
digitalWrite(Descendre, HIGH);
}
else {
digitalWrite(Descendre, LOW);
}
if (valManuel == 'c')
{
digitalWrite(Monter, HIGH);
}
else {
digitalWrite(Monter, LOW);
}
if (valManuel == 'e')
{
digitalWrite(Descendre, LOW);
digitalWrite(Monter, LOW);
}
}
void Mode_Auto() {
if ((( IndiceUV()* 1000 / 4.3 - 83 ) / 21 * 0.001) == 0 )
{
digitalWrite(Descendre, LOW);
digitalWrite(Monter, LOW);
}
if ((( IndiceUV()* 1000 / 4.3 - 83 ) / 21 * 0.001) > 2 )
{
digitalWrite(Descendre, HIGH);
}
else {
digitalWrite(Descendre, LOW);
}
if ((( IndiceUV()* 1000 / 4.3 - 83 ) / 21 * 0.001) > 0.01)
{
digitalWrite(Monter, HIGH);
}
else {
digitalWrite(Monter, LOW);
}
}
Je ne connais pas grand chose en arduino, mais les lignes 24 et 27 sont plus que suspectes vu qu'au lieu d'appeler les fonctions, tu les déclares (ce qui n'a rien à faire à cet endroit).
Copie ces lignes en début de programme et supprime le "void" aux lignes 24 et 27. Ca devrait déjà aller un peu mieux.
j'ai donc appliqué ton conseil et sa marche merci mais que pour le mode automatique
edit
j'ai trouvé une autre erreur à la ligne 53 à la place de val faut que j'ecris valManuel
mais même après cette correction sa ne marche toujours pas pour le mode manuel
- Edité par RidaDesLrs 7 mars 2019 à 12:20:45
Mode Automatique et Manuel
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.