Bonjour,
Je suis un debutant dans le domaine de programmation. J'essaye de faire aller un servo moteur avec une led RGB(fournie dans un kit arduino) ensemble et en meme temps dans différentes combinaisons a l'aide de 2 boutons. Tout cela est contrôlé vie STM32(Bluepill), je suis caller sur un truc tout simple (mais qui m'embrouille l'esprit et me rend dingue) . J'espère que vous pourriez m'éclairer...
Je déballe mon souci en detail..
pour commencer j'ai suivi plusieurs tuto pour me familiariser avec la blue pill . trucs simples LED PC13 clignote avec et sans bouton etc... ensuite je me suis dit pourquoi pas compliquer les choses, j'ai utiliser la RGB avec deux boutons (car j'en ai que 2) deux couleurs fonctionnent indépendamment , grace au bouton , tout va bien. Etape suivante faire fonctionner un servo, regarder plusieurs tuto, montage fonctionne , ok j'avais envie que mon servo se déplace avec des positions aléatoires , trouver ce qu'il faut sur le net.. fonctionne ... et la j'ai eu envie de fusionner en quelque sorte les deux experiences led et servo... et la LED s'allume , le servo tourne et fait sa vie , simple mais j'avais envie de ca ne le soit pas si simple ; ex j'appuie sur le bouton 1 la led bleu s'allume et le servo tourne aléatoirement et quand j'appuie sur le bouton 2 que la led bleu éteint et la rouge s'allume et le servo tourne aléatoirement avec une vitesse différente (plus rapide) et une foix les deux boutons lâcher que le servo soit a l'arrêt et les LED etteins.. Mais là .... ca ne fonctionne plus et j'ai beau faire de différents trucs et modifier le code de différentes manières , le résultat n'est pas celui que je voulais ...
Là c'est,
boutons lâcher ; LED rouge allumée a moitié voir 3/4 de sa puissance (pas logique) le servo ne tourne pas position 0° (logique)
bouton 1 activer ; LEDrouge tjr allumer a 3/4( pas logique) + la LED bleu qui s'allume (logique) mais le servo ne bouge pas (pas logique)
bouton 2 activer ; LED rouge allumer fort (comme il faut ) toute seule et le servo bouge aléatoirement ( ce qui est demander dans le code)
du coup mon code ne fonctionne pas vraiment comme je souhaiterais qu'il fonctionne ... j'ai verifier a plusieurs reprises mes connections ... pas d'erreurs a ce niveau la.. puis quand je teste le code juste pour les LED avec boutons , la LED rouge s'éteint quand elle doit s'éteindre et pareil pour la bleu , donc en deductions pas de souci de connections mais bien avec le code... en plus vu mon incompétence dans le domaine je ne suis meme pas sur de ce que j'ai écrit est bon ... en meme temps j'ai rassembler dans ma tete après avoir regarder des différents tuto sur différents sujets et pondu cela :
#include <Chrono.h>
#include <Servo.h>
#define bleu PA0
#define rouge PA2
#define vert PA4
#define bouton1 PA1
#define bouton2 PA5
Chrono temps;
Servo tete;
int aleatoire1 = random(1500,5000);
int aleatoire2 = random(500,1000);
int etatBouton1;
int etatBouton2;
void setup() {
tete.attach(PA3);
pinMode(bleu, OUTPUT);
pinMode(rouge, OUTPUT);
pinMode(vert, OUTPUT);
pinMode(bouton1, INPUT);
etatBouton1 = HIGH;
pinMode(bouton2, INPUT);
etatBouton2 = HIGH;
}
void loop() {
etatBouton1 = digitalRead(bouton1);
etatBouton2 = digitalRead(bouton2);
if (etatBouton1 == HIGH) {
digitalWrite(bleu, HIGH);
digitalWrite(rouge, LOW);
digitalWrite(vert, LOW);
if (temps.hasPassed(aleatoire1)) {
temps.restart();
int randomAngle = random(0,180);
tete.write(randomAngle);
}
}
if (etatBouton2 == HIGH);
{
digitalWrite(bleu, LOW);
digitalWrite(rouge, HIGH);
digitalWrite(vert, LOW);
if (temps.hasPassed(aleatoire2)) {
temps.restart();
int randomAngle = random(0,180);
tete.write(randomAngle);
}
}
if (etatBouton1|etatBouton2 == LOW)
{
digitalWrite(bleu, LOW);
digitalWrite(rouge, LOW);
digitalWrite(vert, LOW);
int randomAngle = random(0,0);
tete.write(randomAngle);
}
}
1er souci LED rouge allumée tout le temps , pas a fond, mais tout le temps
2Eme souci , le servo fonctionne avec le bouton 2 mais pas le 1
Alors voila mes petits soucis, j'espère que je me suis exprimer assez clair et qu'il y a un courageux qui va se dévouer pour m'explique tout cela?!
Merci d'avance pour vos réponses!