Go Down

Topic: Besoin d'aide (Read 235 times) previous topic - next topic

Nusro

Salut tout le monde.J'ai besoin d'aide pour un programme car je suis complètement bloqué et je n'ai trouver aucune solutions alors voila je dois faire un programme qui fait clignoter une led a différentes fréquences je suis censé fixée la fréquence par l'envoie d'un caractère ASCII (avec le moniteur série) et le '1' doit donner une période de clignotement de 100ms ... jusqu'à '4' qui vaut 400ms

Code: [Select]
[
int led = 3;
int data,temps;

void setup()
{
  Serial.begin(9600);
  pinMode(led,OUTPUT);
  Serial.println("Debut");
  temps=100;
}

void loop()
{
  data=Serial.read();
  switch(data)
  {
    case'1':delay(temps);
    case'2':delay(200);
    case'3':delay(300);
    case'4':delay(400);
  }

  digitalWrite(led,HIGH);
  delay(temps);
  digitalWrite(led,LOW);
  delay(temps);



}]


Voila ce que j'ai déjà fais a faire en espérant que vous pourrez m'aider

Artouste

#1
Jan 11, 2017, 08:58 pm Last Edit: Jan 11, 2017, 08:59 pm by Artouste
je suis censé fixée la fréquence par l'envoie d'un caractère ASCII (avec le moniteur série) et le '1' doit donner une période de clignotement de 100ms ... jusqu'à '4' qui vaut 400ms
bonsoir
Donc seulement 4 possibilités ?
1,2,3 ou 4   pour 100,200,300,400 ms ?

Jambe

Bonsoir,

ici clignotement restera toujours a 100ms, puisque dans chaque case du switch, tu ne change pas la valeurs de ta variable "temps", tu lances juste des delay() differents.

Assigne une valeurs à "temps" dans chaque case et ça ira mieux: case '1': temps = 100; etc...

dfgh

tu devrais t'investir un peu plus dans ton devoir
lors des contrôles, il n'y aura pas le forum pour t'aider

testes ça et regardes le code de près
(c'est une autre façon d'apprendre)

Code: [Select]
int led = 3;
char data ='0';
int temps=0;

void setup()
{
  Serial.begin(9600);
  pinMode(led,OUTPUT);
  Serial.println("Debut");
}

void loop()
{
  if (Serial.available() > 0)
  {
    data = Serial.read();
  }
 
  switch(data)
  {
    case '0':temps=0;
    break;
    case '1':temps=100;
    break;
    case '2':temps=200;
    break;
    case '3':temps=300;
    break;
    case '4':temps=400;
    break;
    default:
    break;
  }

  digitalWrite(led,HIGH);Serial.print("led allumee pour");Serial.print(temps);Serial.println(" ms ");
  delay(temps);
  digitalWrite(led,LOW);Serial.print("led eteinte ");Serial.print(temps);Serial.println(" ms ");
  delay(temps);
}

Nusro

Merci pour vos réponses, les contrôles sont plus facile que les devoirs j'ai des bonnes notes et bien sur les aides que vous me donnez je l'ai comprends avant des les utiliser

Go Up