Pages: [1] 2   Go Down
Author Topic: Combat dans les airs arduino  (Read 2583 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 34
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous, étant fan d'aéromodélisme et surtout de FPV j'ai comme projet d'utiliser un arduino mini pour simuler un combat, je m'explique.

La carte serait munie d'un ou deux émetteur IR (canon), d'un ou plusieurs récepteurs IR (cible) et de quelques leds pour simuler le degré de dégâts, voire un buzzer pour déclarer la mort de l'avion et bien sur une voie utilisable sur la radio pour le tir. Après beaucoup d'options inutiles peuvent êtres rajoutées... (compteur de tir, pourcentage, ...)

Mon problème est le suivant:
Quel type d'émetteur et de récepteur IR faut il prévoir car je ne connais pas la portée et surtout la diffusion d'une simple led.

Si vous avez quelques idées.

Merci d'avance à tous!
« Last Edit: January 08, 2011, 01:15:27 pm by voodou » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 34
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voilà l'idée de l'implantation.
En FPV on peut intégrer sur le signal vidéo une mire donc un réglage sera obligatoire avant utilisation pour faire correspondre la mire et le signal. Pour l'instant le "tir" est permanent.
Si quelqu'un à une idée pour envoyer le signal...
J'avais pensé à un laser comme ceux vendu pas cher, couplé à une cellule photo-sensible. Parce qu'en IR je ne sais pas si on peut arriver à un trait plus ou moins fin ou réglable... Là je suis dans le flou pour la partie émission/réception...




J'ai mis une led à 4 pattes vu que je n'ai pas le composant Ir receiver.

//Leds barre de vie
int ledvie1 = 4;
int ledvie2 = 5;
int ledvie3 = 6;
int ledvie4 = 7;

//Buzzer
int buzzer = 3;

// Emetteurs, récepteurs
const int IRE = 10;
int IRR = 2;

//Compteur, hit
int compteur = 0;
int hit = 0;



void setup(){
  
  pinMode(ledvie1, OUTPUT);
  pinMode(ledvie2, OUTPUT);
  pinMode(ledvie3, OUTPUT);
  pinMode(ledvie4, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(IRE, OUTPUT);
  pinMode(IRR, INPUT);
  digitalWrite(IRE,HIGH);
  
}

void loop(){
  
  delay(3000);
  analogWrite (buzzer, LOW);
  hit = analogRead(IRR);
  if
    (compteur = 0);{
    digitalWrite (ledvie1, LOW);
    digitalWrite (ledvie2, LOW);
    digitalWrite (ledvie3, LOW);
    digitalWrite (ledvie4, LOW);
    }
    
  if
    (compteur = 1);{
    digitalWrite (ledvie1, HIGH);
    digitalWrite (ledvie2, LOW);
    digitalWrite (ledvie3, LOW);
    digitalWrite (ledvie4, LOW);
    }
    
  if
    (compteur = 3);{
    digitalWrite (ledvie1, HIGH);
    digitalWrite (ledvie2, HIGH);
    digitalWrite (ledvie3, LOW);
    digitalWrite (ledvie4, LOW);
    }
    
  if
    (compteur <= 4);{
    digitalWrite (ledvie1, HIGH);
    digitalWrite (ledvie2, HIGH);
    digitalWrite (ledvie3, HIGH);
    digitalWrite (ledvie4, LOW);
    }
    
  if
    (compteur <= 4);{
    digitalWrite (ledvie1, HIGH);
    digitalWrite (ledvie2, HIGH);
    digitalWrite (ledvie3, HIGH);
    digitalWrite (ledvie4, HIGH);
    analogWrite (buzzer, HIGH);
    delay (15000);
    }

  if (hit > 0);{
    analogWrite (buzzer, HIGH);
    compteur = compteur + 1;
    }
}
« Last Edit: January 09, 2011, 11:38:22 am by voodou » Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Avec un laser le risque d'un accident occulaire n'est pas une option, qu'en serait-il si tu abimes la rétine d'un spectateur de passage ?

Regarde avec Processing, le traitement video comporte des "blob" détection, ça pourrait être une piste....
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 34
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En fait ça serait le même principe que le laser game mais en aérien. Je me suis peut être mal expliqué pour la mire, le but n'étant pas de tirer dans la camera mais sur les capteurs sur l'avion.
« Last Edit: January 08, 2011, 06:56:22 pm by voodou » Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai bien compris.... mais les laser games sont dans des enceintes fermées ou tout les participant ont un équipement adéquat pour se protéger les yeux.

Un avion qui évolue dans le ciel n'est pas dans une enceinte fermée et le risque de "frapper" quelqu'un avec le laser existe.

Je ne suis même pas sur qu'une pratique de la sorte soit autorisée avec un laser.
« Last Edit: January 09, 2011, 01:55:19 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Jr. Member
**
Karma: 0
Posts: 57
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Tu devrais faire une liste de paramètres de jeux souhaité, différentes "armes", différentes précisions et portés.
Ensuite tu pourra voir précisément quelles sont tes options.

Tu pourrais utiliser des LEDs IR avec un angle de vue très petit, et tu pourrais même faire que seul un certain pourcentage des tirs réussis comptent, si c'est trop facile de toucher un ennemi.

Mais bon, je te donne seulement des suggestions et je suis loin d'être un expert.
À toi de voir se que tu as besoin et bonne recherche google!
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 34
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour Jean-François:
Laser c'était plus une expression qu'un choix, l'IR semble plus adapté dans ce cas évidement.

Pour Binette228:
Pour l'instant j'essaie de programmer au plus simple et au fur et à mesure j'intègre des fonctions. Je suis débutant en Arduino mais apprendre ne me fait pas peur!

D'ailleurs est ce que mon implantation semble correcte?
« Last Edit: January 09, 2011, 02:12:03 am by voodou » Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu peux utiliser des lentilles pour que ton faisceau IR devienne rectiligne.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 34
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui c'est ce à quoi j'avais pensé, une lentille convergente mais quelle distance maximum pourrais-je atteindre (je sais me doute que ça sera la place de la lentille qui définit la distance finale). Et peut être une divergente pour agrandir la surface de réception.

Pour l'émetteur, je pensais à une ou 2 leds infra-rouge 950 NM:
http://www.robotshop.com/sfe-infrared-950nm-led-2.html

Pour le récepteur, un simple binaire qui sort du 0 ou +0,3v comme ici me suffirait.
http://www.robotshop.com/sfe-ir-receiver-breakout-for-vishay-tsop85.html

Qu'en pensez vous?

Merci d'avance en tout cas. J'espère ne pas dire trop de conneries.

Edit: petite mise à jour de la platine.
« Last Edit: January 09, 2011, 04:22:47 am by voodou » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 34
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai rajouté le code, est ce que quelqu'un pourrait me dire si il est bon? Ça serait bien sympa!

Sinon y a t'il une façon moins lourde que le IF pour allumer les leds en fonctions du compteur?

Merci d'avance pour les futures réponses.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 57
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Je ne suis pas très bon programmeur mais je peux voir quelques petites erreures dans ton code (à vérifier tout de même).

Code:
//Leds barre de vie
int ledvie1 = 4;
int ledvie2 = 5;
int ledvie3 = 6;
int ledvie4 = 7;

//Buzzer
int buzzer = 3;

// Emetteurs, récepteurs
const int IRE = 10;
int IRR = 2;

//Compteur, hit
int compteur = [glow]4; //Tu veux que le jeu commence avec 4 vies[/glow]
int hit = 0;



void setup(){
 
 pinMode(ledvie1, OUTPUT);
 pinMode(ledvie2, OUTPUT);
 pinMode(ledvie3, OUTPUT);
 pinMode(ledvie4, OUTPUT);
 pinMode(buzzer, OUTPUT);
 pinMode(IRE, OUTPUT);
 pinMode(IRR, INPUT);
 digitalWrite(IRE, HIGH); //
 
}

void loop(){
 
 delay(3000); [glow]//delay de 3 secondes?[/glow]
[glow] //enlève ceci et tu le remplacera plus tard par la fonction tone (analogWrite (buzzer, LOW);)
[/glow]
hit = [glow]digitalRead[/glow](IRR);
 if
   (compteur = 0){
   digitalWrite (ledvie1, LOW);
   digitalWrite (ledvie2, LOW);
   digitalWrite (ledvie3, LOW);
   digitalWrite (ledvie4, LOW);
   [glow]tone(buzzer, 200);
   digitalWrite(IRE, LOW);[/glow]
   delay(100000);
   }
  
 if
   (compteur [glow]==[/glow] 1){
   digitalWrite (ledvie1, HIGH);
   digitalWrite (ledvie2, LOW);
   digitalWrite (ledvie3, LOW);
   digitalWrite (ledvie4, LOW);
   }
  
 if
   (compteur [glow]== 2[/glow]){
   digitalWrite (ledvie1, HIGH);
   digitalWrite (ledvie2, HIGH);
   digitalWrite (ledvie3, LOW);
   digitalWrite (ledvie4, LOW);
   }
  
 if
   (compteur [glow]== 3[/glow]){
   digitalWrite (ledvie1, HIGH);
   digitalWrite (ledvie2, HIGH);
   digitalWrite (ledvie3, HIGH);
   digitalWrite (ledvie4, LOW);
   }
  
 if
   (compteur [glow]== 4[/glow]){
   digitalWrite (ledvie1, HIGH);
   digitalWrite (ledvie2, HIGH);
   digitalWrite (ledvie3, HIGH);
   digitalWrite (ledvie4, HIGH);
   }

[glow] if (hit == 1){
   tone(buzzer, 1000, 500);
   compteur--;
   delay(15000);
   }[/glow]
}

http://arduino.cc/en/Reference/Tone

Fait des test et reviens nous la dessus!
N'hésite pas si tu veux d'autre aide!
« Last Edit: January 09, 2011, 01:41:56 pm by Binette228 » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 57
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Et tu dois utiliser une résistance avec ton buzzer (tout dépendament de la résistance interne).

Donc à 5 volts, pour avoir 30 mA, il faut un résistance totale de 160 ohm environ.

Il te faut aussi une résistance pour tes IRE.
« Last Edit: January 09, 2011, 01:37:41 pm by Binette228 » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 34
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut Binette228 merci pour tes réponses. Je ne peux malheureusement pas tester vu que je n'ai pas encore reçu mon arduino.
Pour la programmation je vais jeter un œil sur tes modifications.
Que penses tu des composants que j'ai sélectionné? As tu meilleur à proposer?

Merci d'avance.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 57
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour les IR LEDs se que tu as choisi peut faire l'affaire, mais seulement pour faire un prototype. Tu n'as pas assez d'information comme l'angle et la puissance du faisceau.

Pour ce qui est du récepteur, je ne m'y connais pas vraiment mais ça devrait faire l'affaire pour le prototype aussi.

Je te conseille d'aller faire des recherches sur mouser.com et lire les datasheet pour en apprendre plus sur se qui est disponible.
Logged

France
Online Online
Faraday Member
**
Karma: 39
Posts: 3560
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Le récepteur IR que tu proposes détecte un signal modulé à 38KHz. Cela veux dire que la LED d'émission doit envoyer un signal modulé à cette même fréquence.
Concernant les LED d'émission. La puissance du signal s'atténue proportionnellement au carré de la distance. Si tu fais quelques calculs tu vas t'apercevoir qu'il faut pas mal de puissance à l'émission si tu veux que ton signal soit reçu à plusieurs mètres. Il ne faut pas se laisser abuser par les télécommandes des télévisions qui fonctionnent à quelques mètres avec une petite pile. Dans ton cas, tu es en extérieur et il peut y avoir du soleil qui va éblouir le récepteur ou masquer l'émetteur s'il n'est pas assez puissants.
En conséquence de ce que j'ai dit au-dessus il faudra que tu émettes avec pas mal de puissance. En plus, si tu places une lentille devant tes LED pour collimater le faisceau tu vas te retrouver avec une puissance élevée dans un faisceau étroit et donc POTENTIELLEMENT DANGEREUX. Il faut être très prudent avec les infrarouges car il n'y a pas de réflexe de protection oculaire puisqu'ils sont invisibles.
Logged

Pages: [1] 2   Go Up
Jump to: