Salut tout le monde ;D !
Tout d'abord merci de prendre le temps de lire mon sujet ![]()
Alors je travaille actuellement sur un projet interdisciplinaire (projet que l'on réalise dans le cadre des Sciences de l'Ingénieur en Terminale) qui pourrait m'amener aux Olympiades académiques.
Je ne vais pas vous présenter mon projet (car d'autres pourraient reprendre mon idée
) mais le fonctionnement que j'aurai voulu réaliser ne fonctionne pas avec le code que j'ai créé
. Il faut savoir que j'ai découvert Arduino lors de la création de mon projet, j'ai donc vu quelques tutoriels (Openclassroom, le blog d'Eskimon...).
Je dispose d'une carte Arduino Uno et d'un "Starter Shield" de seeed studio dont voici le lien :
J'aurai donc aimé simuler le système avec le shield que j'ai.
Si vous n'avez pas regardé le shield, il y a 3 boutons "K1", K2" et "K3" reliés respectivement sur D9, D10 et D11.
Le K1 serait le "Reset",
K2 serait "On" et
K3 serait le capteur.
La LED1 simule le moteur et LED2 le buzzer
Le fonctionnement serait le suivant :
-Si Reset est appuyé : la LED1 s'allume jusqu'à ce qu'on appui sur le capteur
-Sinon
-Si On est appuyé : La LED1 s'allume jusqu'à ce que l'on appuie 30 fois sur le capteur puis s'arrête. Là
LED2 s'allume pendant 1seconde puis s'arrête. Et ce fonctionnement continu jusqu'à ce que l'on ré-appuie sur
le bouton On.
Voici ce que j'ai réalisé pour le moment ![]()
const int brocheMoteur = 3;//commande moteur sur 3
const int on = 11;//bouton K3 branché sur 11
const int reset = 10;//bouton K2 branché sur 10
const int capteur = 9;//bouton K1 branché sur 9
const int buzzer = 2;//meme si c'est 6 sur le shield, on prend une LED comme exemple
boolean etatAllumage;
boolean etatOn;
int compteurTours = 0;
void setup() {
// put your setup code here, to run once:
pinMode(brocheMoteur, OUTPUT);
pinMode(on, INPUT);
pinMode(reset, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(capteur, INPUT);
Serial.begin(9600);
etatAllumage=0;
etatOn = HIGH;
}
void loop() {
//put your main code here, to run repeatedly:
boolean etatReset = digitalRead(reset);
boolean etatCapteur = digitalRead(capteur);
if (etatReset == LOW)//Si reset est appuyé
{
while (etatCapteur != LOW) //Tant que le capteur de position initiale n'est pas détecté
{
digitalWrite(brocheMoteur,LOW);
etatCapteur = digitalRead(capteur); //on fait fonctionner la LED ou moteur
}
analogWrite(brocheMoteur,HIGH); //on l'arrête
}
else//Si reset n'est pas appuyé
{
etatOn = digitalRead(on);
if (etatOn == LOW) //si le bouton "on" est appuyé
{
if (etatAllumage == 1) //le bouton devient interrupteur
{
etatAllumage=0;
}
else
{
etatAllumage=1;
}
}
etatCapteur = digitalRead(capteur);
if (etatAllumage == 1)
{
digitalWrite(brocheMoteur,LOW);
if (etatCapteur == 1) //si le capteur est appuyé, comment mettre un front montant ?
{
compteurTours = compteurTours + 1;
delay(1000);
if (compteurTours == 30)//si le capteur est détecté 30 fois
{
digitalWrite(brocheMoteur, HIGH);//le moteur s'arrete
digitalWrite(buzzer, LOW);//buzzer s'allume
delay(1000);
digitalWrite(buzzer, HIGH);//puis s'arrete après 1sec
compteurTours = 0;//reset du compteur
}
}
}
else
{
digitalWrite(brocheMoteur,HIGH);
}
}
delay(200);
}
Merci d'avoir pris le temps de me lire ![]()
Des bisous :-*
