[HELP] Serial.print + boucle LED = ?

Hello, j'essaye en ce moment de réaliser un programme simple pour un projet d'électronique :
Je souhaite détecter la position d'un bateau qui vient manoeuvrer contre le quai : si le bateau avance trop par rapport à sa position ( bouton de gauche ) il est détecté et doit reculer, de meme si il est trop en arrière. Si il est en position au bout de 3 secondes la lumière verte indique "En position" et encore 3 secondes plus tard si le bateau est toujours bien en place (sécurité) la rampe (servo moteur) se baisse de 90° pour laisser les véhicules descendre du navire. Si le navire avance ou recule la rampe se replie et le navire n'est plus "en position".

Problème : je souhaite ajouter du texte qui s'afficherais aux différentes étapes : "Reculez" "Avancez" "En position" "Attention ouverture de la rampe", lorsque j'ajoute mon Serial.begin(9600); et mes Serial.Println("TEXTE"); mes leds se dérèglent comme si le serial avait une influence, je ne comprend pas.

Voici mon code :

#include <Servo.h>

  Servo moteur;
  unsigned long prevMillis = 0;
  int delai = 2000;
  int delai2 = 3000;

  
void setup(){
  moteur.attach(5);
  pinMode(13, OUTPUT);		//
  pinMode(12, OUTPUT);		//	
  pinMode(8, OUTPUT);		//
  pinMode(2, INPUT);		//	
  pinMode(1, INPUT);		//
  moteur.write(180);
  Serial.begin(9600);
}


void loop(){
  
  if (digitalRead(1)==HIGH){
		digitalWrite(13,HIGH);
  		prevMillis=millis();
    	moteur.write(180);
        Serial.println("Reculez");      //
  } 
  else{
		digitalWrite(13,LOW);
  }
  
  
  if (digitalRead(2)==HIGH){
		digitalWrite(8,HIGH);
   		prevMillis=millis();
    	moteur.write(180);
        Serial.println("Avancez");     //
  }
  else{
		digitalWrite(8,LOW);
  }
  
  
  
if (millis() - prevMillis > delai){
    if (digitalRead(13) == LOW && digitalRead(8) == LOW ){
  		digitalWrite(12, HIGH);
                Serial.println("En position");       //
      if (millis() - prevMillis > delai2){
        moteur.write(90);
        Serial.println("Ouverture de la rampe");    //
      }
      else{
        moteur.write(180);
      }
  }
  	else {
    	digitalWrite (12, LOW);
  }
  }
  else {
    digitalWrite (12, LOW);
  }
}

Une photo du montage :

Je suis débutant débutant, si vous pouvez m'aider c'est avec plaisir !!

la pin 1 c'est le Tx du port série - ne l'utilisez pas pour votre projet si vous utilisez Serial

c'est écrit sur la carte
image

1 Like

Vous ne pouvez pas utiliser la broche 1 car elle sera utilisée par le port série.

1 Like

suivant le type et ce que va faire votre servo, il faudrait songer à l'alimenter autrement que par la carte Arduino, certains peuvent tirer trop de courant

sinon comment détectez vous la position du bateau ? :question:

1 Like

La position du bateau devrait être modélisée par des capteurs, ici j'ai représenté cela par des boutons poussoirs, peut-être devrais-je les remplacer par des cellules photosensibles en partant du principe que le bateau qui longe le quai cacherais la lumière ...

J'ai a disposition un tout petit servo moteur normalement la carte est capable de l'alimenter d'après mon professeur ...

OK pour le moment donc c'est vous qui appuyez les boutons pour donner une info; dans la réalité faudrait pouvoir détecter la vitesse du bateau apparement donc ce n'est pas juste un capteur photosensibles

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.