Go Down

Topic: Projet Transmission Laser (Read 1 time) previous topic - next topic

cereal

yes nickel! je vais regarder ça! merci!

bon, je fais tout par module que je vais assembler au fur et à mesure...

Pour l'instant j'écris juste le numéro du gilet, et à chaque fois que le gilet est touché, ça marque +1, jusque là c'est pas compliqué ^^
dés que j'essaye de rajouter un nombre de vie limité à 20, avec l'affiche de GameOver, dés la première touche le logiciel écrit GameOver...

Si vous avez des idées...

j'ai lu et essayé de comprendre le fonctionnement des fonctions mais la je seche ^^

merci d'avance

voici le code :

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 8;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin
const int GameOver =  20;      // le nombre de vie

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // variable for reading the pushbutton status
int lastButtonState = 0;     // previous state of the button

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);     
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);   
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Gilet num xx");
}

void loop(){

  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
    if (buttonState == HIGH) {
    // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      lcd.setCursor(0, 1);
      lcd.print("Dead:");
      lcd.print(buttonPushCounter, DEC);
     
// compare le score en cours avec le score de fin de partie
  if (buttonPushCounter == 20)
    lcd.setCursor(8, 1);
    lcd.print("GameOver");
   

   
  }
}
  // save the current state as the last state,
  //for next time through the loop
  lastButtonState = buttonState;
 
  // turns on the LED every four button pushes by
  // checking the modulo of the button push counter.
  // the modulo function gives you the remainder of
  // the division of two numbers:
  if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, HIGH);
  } else {
   digitalWrite(ledPin, LOW);
  }

}

cereal

C'est bon j'ai réussi! ^^
j'ai pas mal avancé!

maintenant quand je tire avec le laser sur le photorésistor,l y a un flash, il me dit cible avant pendant 4sec, et revient sur l'écran de départ avec +1 d'incrémentation!

maintenant encore une question (avant que je ne trouve tout seul ^^), comment faire pour avoir une formule du type :

Attendre...
ou
(Si ça, faire ça)
ou
(Si ça, faire ça)

résultat final, +1 incrémentation du compteur

en langage français ça donne,
le arduino attend que je tire sur la cible 1 ou la cible 2 et en fonction de celle qui est touché, il enchaine leur code respectif, pour au final revenir à l'état de départ +1 d'incrémentation

merci d'avance!!

voici mon code pour vous montrer ou je suis bloqué :

// constants won't change. They're used here to
// set pin numbers:
const int lightPin0 = 0;     // Cible n°1 Avant
const int lightPin1 = 1;     // Cible n°2 Arrière
const int ledPin0 =  13;     // Lumière Cible n°1
const int ledPin1 =  8;      // Lumière Cible n°2

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


// variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // variable for reading the pushbutton status
int lastButtonState = 0;     // previous state of the button
int threshold = 250;


void setup() {
  Serial.begin(9600);  //Begin serial communication
  // initialize the LED pin as an output:
   pinMode(ledPin0, OUTPUT);     
  // Lumière cible avant en OUTPUT
   pinMode(ledPin1, OUTPUT);     
  // Lumière cible arrière en OUTPUT
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Gilet num 1");
}

void loop(){

  // compare la valeur de la résistance du photorésistor de "Cible n°1 Avant"
  if (analogRead(lightPin0) > threshold) {
// Si l'état a changé, incrémenter le compteur
    digitalWrite(13, LOW);
    // if the current state is HIGH then the button
      // wend from off to on:
     
      lcd.setCursor(0, 1);
      lcd.print("Dead:");
      lcd.print(buttonPushCounter);
     
  }
  else {
      digitalWrite(13, HIGH);
      delay(150);
      digitalWrite(13, LOW);
      lcd.begin(16, 2);
      lcd.print("cible avant");
      delay(4000);
      buttonPushCounter++;
      lcd.print(buttonPushCounter);
      lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Gilet num 1");
     
     
  }
}


cereal

ça serait pas Else If ma fonction ??

cereal

#8
Mar 06, 2011, 11:36 am Last Edit: Mar 06, 2011, 12:17 pm by cereal Reason: 1
bonjour!

j'ai beau chercher je trouve pas :(
ça bloque m'exécute que la première instruction...

voici ou en est mon code :

// constants won't change. They're used here to
// set pin numbers:
const int lightPin0 = 0;     // Cible n°1 Avant
const int lightPin1 = 1;     // Cible n°2 Arrière
const int ledPin0 =  13;     // Lumière Cible n°1
const int ledPin1 =  8;      // Lumière Cible n°2

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


// variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // variable for reading the pushbutton status
int lastButtonState = 0;     // previous state of the button
int threshold = 250;


void setup() {
 Serial.begin(9600);  //Begin serial communication
 // initialize the LED pin as an output:
  pinMode(ledPin0, OUTPUT);      
 // Lumière cible avant en OUTPUT
  pinMode(ledPin1, OUTPUT);      
 // Lumière cible arrière en OUTPUT
 lcd.begin(16, 2);
 // Print a message to the LCD.
 lcd.print("Gilet num 1");
}

void loop()
{
 // compare la valeur de la résistance du photorésistor de "Cible n°1 Avant"
 if (analogRead(lightPin0) > threshold)
  if (analogRead(lightPin1) > threshold)
{
 
   digitalWrite(8, LOW);
   digitalWrite(13, LOW);
   // if the current state is LOW then the button
     // wend from off to on:
     
     lcd.setCursor(0, 1);
     lcd.print("Dead:");
     lcd.print(buttonPushCounter);
}
 else if (analogRead(lightPin0) > threshold)
{
     digitalWrite(8, HIGH);
     delay(150);
     digitalWrite(8, LOW);
     lcd.begin(16, 2);
     lcd.print("cible avant");
     delay(4000);
     buttonPushCounter++;
     lcd.print(buttonPushCounter);
     lcd.begin(16, 2);
 // Print a message to the LCD.
 lcd.print("Gilet num 1");

}
 else if (analogRead(lightPin1) > threshold)
{
     digitalWrite(13, HIGH);
     delay(150);
     digitalWrite(13, LOW);
     lcd.begin(16, 2);
     lcd.print("cible arriere");
     delay(4000);
     buttonPushCounter++;
     lcd.print(buttonPushCounter);
     lcd.begin(16, 2);
 // Print a message to the LCD.
 lcd.print("Gilet num 1");
   
     
 }
}
merci d'avance!

cereal

aaaaaaaaaaaah!

j'en vois le bout ^^

ça à l'air de fonctionner !!

// constants won't change. They're used here to
// set pin numbers:
const int lightPin0 = 0;     // Cible n°1 Avant
const int lightPin1 = 1;     // Cible n°2 Arrière
const int ledPin0 =  13;     // Lumière Cible n°1
const int ledPin1 =  8;      // Lumière Cible n°2

// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


// variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // variable for reading the pushbutton status
int lastButtonState = 0;     // previous state of the button
int threshold = 100;


void setup() {
  Serial.begin(9600);  //Begin serial communication
  // initialize the LED pin as an output:
   pinMode(ledPin0, OUTPUT);     
  // Lumière cible avant en OUTPUT
   pinMode(ledPin1, OUTPUT);     
  // Lumière cible arrière en OUTPUT
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Gilet num 1");
 
}

void loop()

{
if (analogRead(lightPin0) > threshold)

  digitalWrite(8, LOW);
  digitalWrite(13, LOW);
  // if the current state is LOW then the button
  // wend from off to on:
     
      lcd.setCursor(0, 1);
      lcd.print("Dead:");
      lcd.print(buttonPushCounter);
}
else if (analogRead(lightPin0) < threshold)
{
      digitalWrite(8, HIGH);
      delay(150);
      digitalWrite(8, LOW);
      lcd.begin(16, 2);
      lcd.print("cible avant");
      delay(4000);
      buttonPushCounter++;
      lcd.print(buttonPushCounter);
      lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Gilet num 1");

}
if (analogRead(lightPin1) > threshold)

  digitalWrite(8, LOW);
  digitalWrite(13, LOW);
  // if the current state is LOW then the button
  // wend from off to on:
     
      lcd.setCursor(0, 1);
      lcd.print("Dead:");
      lcd.print(buttonPushCounter);
}
else if (analogRead(lightPin1) < threshold)
{
      digitalWrite(13, HIGH);
      delay(150);
      digitalWrite(13, LOW);
      lcd.begin(16, 2);
      lcd.print("cible arriere");
      delay(4000);
      buttonPushCounter++;
      lcd.print(buttonPushCounter);
      lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("Gilet num 1");
     
     
  }
}

Go Up