Aller au contenu


* * * * * 1 note(s)

Borne/Drapeaux électroniques



11 réponses à ce sujet

#1 OFFLINE   Myra

    NooB

  • Membre
  • Pip
  • 46 messages

Posté 19 mars 2018 - 21:24

J'ai depuis un moment un projet de Drapeaux électronique en tête que je vais vous présenter ici. Cela pourra éventuellement aussi faire office de tuto si ça intéresse du monde et si je détaille suffisamment mon projet.
J'imagine que cela a déjà dû être fait mais je ne suis pas allé vérifier je dois dire^^

Le principe est simple, de manière générale, contrôler le drapeau en le basculant de sa couleur.
Avec des variantes possibles pour différents mode de jeux comme :
- L’équipe qui accumule le plus de points à la fin de la partie.
- La première équipe à atteindre le drapeau.
- Idem avec une limite de temps.
- La première équipe à atteindre le score.
- Idem avec une limite de temps.
- Une course d’orientation (style chasse au trésor ou il faut activer les drapeaux dans un ordre précis définit aléatoirement) avec plusieurs drapeaux.
- …

Mon idée est simple, une boite plantée sur un mât (style pied de parasol) ou fixer sur une palette d'un terrain (avec un serrage style étau), avec dessus :

Pour commencer, un 1er drapeau :
- un bouton bleu
- un gyrophare bleu
- un bouton rouge
- un gyrophare rouge
- une sirène
- un écran et un clavier (pour paramétrer les différents types de parties)
- une carte de programmation Arduino Uno

Dans un second temps pour faire d’autres drapeaux en relation (pour faire des multiflags ou des Dominations) :
- un module émetteur/récepteur radio
- d’autres drapeaux (sans l’écran et le clavier)

Mon schéma de branchement :
Image IPB

L’organigramme du programme :
Image IPB

J’ai déjà commencé à écrire mon programme et à le tester avec le matériel déjà reçu, en remplaçant les gyrophares et sirène par des DEL. Après plusieurs heures de surchauffe de méninges j’ai finalement réussi à résoudre tous les petits problèmes qui se présentais. Je suis plutôt débrouillard mais je ne suis pas un expert en programmation donc s’il y a des pros du Arduino soyez indulgeant Image IPB Je suis sûr que mon programme est loin d’être le plus optimisé^^
Image IPB

Voici mon programme :
Image IPB

Désolé le code est un peu long^^

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

//--- Constantes utilisées avec le clavier 4x3
const byte LIGNES = 4;
const byte COLONNES = 3;

// --- Déclaration Broches ---
int BPLB = 2;
int BPLR = 3;
int ERF = 4;
int RRF = 5;
int CLL1 = 6;
int CLL2 = 7;
int CLL3 = 8;
int CLL4 = 9;
int RGYB = 10;
int RGYR = 11;
int RSI = 12;
int CLC1 = A0;
int CLC2 = A1;
int CLC3 = A2;
int CLC4 = A3;

// --- Déclaration Variables ---
int MJ;
int ND;
int TV;
int NP;
int DernierChiffre;
int TVD;
unsigned int RSItemps;
unsigned int CAR;
unsigned int CARactuel;
unsigned int TJT;
unsigned int TJTactuel;
unsigned int TJTminute;
unsigned int TJTseconde;
int TVDactuel;
int TTPR;
int TA;
int TTPB;
int CV;
int Recommencer = 1;
byte Manche = 0;
byte MancheB = 0;
byte MancheR = 0;
long temps1 = 0;
long temps2 = 0;


// --- Déclaration Clavier ---

/*char touches[LIGNES][COLONNES] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};*/
char touches[LIGNES][COLONNES] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

byte BrochesLignes[LIGNES] = {CLL1, CLL2, CLL3, CLL4};
byte BrochesColonnes[COLONNES] = {CLC1, CLC2, CLC3};

char touche;
Keypad clavier = Keypad( makeKeymap(touches), BrochesLignes, BrochesColonnes, LIGNES, COLONNES );

// --- Déclaration Ecran ---
LiquidCrystal_I2C lcd(0x3F, 20, 4);


void setup() {
  Serial.begin(9600);
  Serial.print("Initialisation.....");
  lcd.init();
  lcd.backlight();
  lcd.noCursor();
  lcd.noBlink();
  lcd.setCursor(5,0);
  lcd.print("Team SAP");
  lcd.setCursor(0,1);
  lcd.print("Drapeau electronique");
  lcd.setCursor(6,3);
  lcd.print("V.1.0.1");
  delay(1000);

  pinMode(BPLB,INPUT_PULLUP);
  pinMode(BPLR,INPUT_PULLUP);
  pinMode(ERF,OUTPUT);
  pinMode(RRF,INPUT);
  pinMode(CLC1,OUTPUT);
  pinMode(CLC2,OUTPUT);
  pinMode(CLC3,OUTPUT);
  pinMode(CLC4,OUTPUT);
  pinMode(RGYB,OUTPUT);
  pinMode(RGYR,OUTPUT);
  pinMode(RSI,OUTPUT);
  pinMode(CLL1,INPUT_PULLUP);
  pinMode(CLL2,INPUT_PULLUP);
  pinMode(CLL3,INPUT_PULLUP);
  pinMode(CLL4,INPUT_PULLUP);

  lcd.clear();
  Serial.println("OK");
}

void loop() {
	lcd.setCursor(0,0);
	lcd.print("CHOIX DU MODE DE JEU");
	lcd.setCursor(0,1);
	lcd.print("1: Domination");
	lcd.setCursor(0,2);
	lcd.print("2: Roi de la colline");
	lcd.setCursor(0,3);
	lcd.print("3: Course d\'orientat");
	Serial.print("MJ = ");
	MJ = 0;
	while (MJ < 1 || MJ > 3) {
	  touche = clavier.getKey();
	  if (touche == '1') {
		MJ = 1;
	  }
	  if (touche == '2') {
		MJ = 2;
	  }
	  if (touche == '3') {
		MJ = 3;
	  }
	}
	lcd.clear();
	lcd.setCursor(0,0);
	lcd.print("CHOIX DU MODE DE JEU");
	if (MJ == 1) {
	  lcd.setCursor(5,2);
	  lcd.print("Domination");
	}
	if (MJ == 2) {
	  lcd.setCursor(1,2);
	  lcd.print("Roi de la colline");
	}
	if (MJ == 3) {
	  lcd.setCursor(0,2);
	  lcd.print("Course d'Orientation");
	}
	Serial.println(MJ);
	delay(3000);
	while (touche != NO_KEY) {touche = clavier.getKey();}
	lcd.clear();
	if (MJ == 1) {
	  Serial.print("TV = ");
	  lcd.setCursor(0,0);
	  lcd.print("CHOIX DU TYPE DE JEU");
	  lcd.setCursor(0,1);
	  lcd.print("1: Au temps");
	  lcd.setCursor(0,2);
	  lcd.print("2: Aux points");
	  TV = 0;
	  while (TV < 1) {
		touche = clavier.getKey();
		if (touche == '1') {
		  TV = 1;
		}
		if (touche == '2') {
		  TV = 2;
		}
	  }
	  Serial.println(TV);
	  lcd.clear();
	  lcd.setCursor(0,0);
	  lcd.print("CHOIX DU TYPE DE JEU");
	  if (TV == 1) {
		lcd.setCursor(1,1);
		lcd.print("Victoire au temps");
		lcd.setCursor(1,2);
		lcd.print("(Au plus de points");
		lcd.setCursor(1,3);
   	 lcd.print("a la fin du temps)");
	  }
	  if (TV == 2) {
		lcd.setCursor(1,1);
		lcd.print("Victoire au points");
		lcd.setCursor(2,2);
		lcd.print("(Les premiers a");
		lcd.setCursor(1,3);
		lcd.print("atteindre le score)");
	  }
	  delay(3000);
	  while (touche != NO_KEY) {touche = clavier.getKey();}
	  lcd.clear();
	  if (TV == 2) {
		Serial.print("NP = ");
		lcd.setCursor(2,0);
		lcd.print("NOMBRE DE POINTS");
		lcd.setCursor(1,1);
		lcd.print("(1 sec = 1 point)");
		NP = 0;
		lcd.setCursor(9,3);
		lcd.print(NP);
		NP = 0;
		while (touche != '#') {
		  touche = clavier.getKey();
		if (touche != NO_KEY && touche != '#' && touche != '*') {
			NP = NP * 10 + touche - 48;
			DernierChiffre = touche - 48;
			if(NP > 10080){
			  NP = 0;
			  DernierChiffre = 0;
			}
			lcd.clear();
			lcd.setCursor(2,0);
			lcd.print("NOMBRE DE POINTS");
			lcd.setCursor(1,1);
			lcd.print("(1 sec = 1 point)");
			lcd.setCursor(9,3);
			lcd.print(NP);
			while (touche != NO_KEY) {touche = clavier.getKey();}
		  }
		  if (touche == '*' && NP > 9) {
			NP = (NP - DernierChiffre) / 10;
			lcd.clear();
			lcd.setCursor(2,0);
			lcd.print("NOMBRE DE POINTS");
			lcd.setCursor(1,1);
			lcd.print("(1 sec = 1 point)");
			lcd.setCursor(9,3);
			lcd.print(NP);
			while (touche != NO_KEY) {touche = clavier.getKey();}
		  }
		  if (touche == '*' && NP < 10) {
			NP = 0;
			lcd.clear();
			lcd.setCursor(2,0);
			lcd.print("NOMBRE DE POINTS");
			lcd.setCursor(1,1);
			lcd.print("(1 sec = 1 point)");
			lcd.setCursor(9,3);
			lcd.print(NP);
			while (touche != NO_KEY) {touche = clavier.getKey();}
	 	 }
		}
		Serial.println(NP);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	}
	if (MJ == 1 || MJ == 2 || MJ == 3) {
	  Serial.print("ND = ");
	  lcd.clear();
	  lcd.setCursor(1,0);
	  lcd.print("NOMBRE DE DRAPEAUX");
	  ND = 0;
	  while (touche != '#') {
		touche = clavier.getKey();
		if (touche != NO_KEY && touche != '#' && touche != '*') {
		  ND = touche - 48;
		  Serial.println(ND);
		}
		if (ND == 1) {
		  lcd.setCursor(1,0);
		  lcd.print("NOMBRE DE DRAPEAUX");
		  lcd.setCursor(0,2);
		  lcd.print("	 Drapeau: 1	 ");
		}
		if (ND > 1 && ND < 5) {
		  lcd.setCursor(1,0);
		  lcd.print("NOMBRE DE DRAPEAUX");
		  lcd.setCursor(0,2);
		  lcd.print("	Drapeaux: ");
		  lcd.print(ND);
		  lcd.print("	 ");
		}
		if (ND > 4) {
		  lcd.setCursor(1,0);
		  lcd.print("NOMBRE DE DRAPEAUX");
		  lcd.setCursor(0,2);
		  lcd.print("  Maxi drapeaux: 4  ");
		}
		//while (touche == NO_KEY) {touche = clavier.getKey();}
	  }
	  Serial.println(ND);
	  while (touche != NO_KEY) {touche = clavier.getKey();}
	  lcd.clear();
	}
	Serial.print("TJT = ");
	lcd.clear();
	lcd.setCursor(3,0);
	lcd.print("TEMPS DE JEU");
	lcd.setCursor(3,1);
	lcd.print("( En Minute )");
	TJT = 0;
	while (touche != '#') {
	  touche = clavier.getKey();
	  if (touche != NO_KEY && touche != '*' && touche != '#') {
		TJT = TJT * 10 + touche - 48;
		DernierChiffre = touche - 48;
		if(TJT > 10080){
		  TJT = 0;
		  DernierChiffre = 0;
		}
		lcd.clear();
		lcd.setCursor(3,0);
		lcd.print("TEMPS DE JEU");
		lcd.setCursor(3,1);
		lcd.print("( En Minute )");
		lcd.setCursor(9,3);
		lcd.print(TJT);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	  if (touche == '*' && TJT > 9) {
		TJT = (TJT - DernierChiffre) / 10;
		lcd.clear();
		lcd.setCursor(3,0);
		lcd.print("TEMPS DE JEU");
		lcd.setCursor(3,1);
		lcd.print("( En Minute )");
		lcd.setCursor(9,3);
		lcd.print(TJT);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	  if (touche == '*' && TJT < 10) {
		TJT = 0;
		lcd.clear();
		lcd.setCursor(3,0);
		lcd.print("TEMPS DE JEU");
		lcd.setCursor(3,1);
		lcd.print("( En Minute )");
		lcd.setCursor(9,3);
		lcd.print(TJT);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	}
	Serial.println(TJT);
	if (TJT == 0){
	  TJT = 10080;
	}
	while (touche != NO_KEY) {touche = clavier.getKey();}
	Serial.print("TVD = ");
	lcd.clear();
	lcd.setCursor(0,0);
	lcd.print("TEMPS APPUI DRAPEAU");
	lcd.setCursor(3,1);
	lcd.print("( En Seconde )");
	TVD = 0;
	while (touche != '#') {
	  touche = clavier.getKey();
	  if (touche != NO_KEY && touche != '*' && touche != '#') {
		TVD = TVD * 10 + touche - 48;
		DernierChiffre = touche - 48;
		if(TVD > 10080){
		  TVD = 0;
		  DernierChiffre = 0;
		}
		lcd.clear();
		lcd.setCursor(0,0);
		lcd.print("TEMPS APPUI DRAPEAU");
		lcd.setCursor(3,1);
		lcd.print("( En Seconde )");
		lcd.setCursor(9,3);
		lcd.print(TVD);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	  if (touche == '*' && TVD > 9) {
		TVD = (TVD - DernierChiffre) / 10;
		lcd.clear();
		lcd.setCursor(0,0);
		lcd.print("TEMPS APPUI DRAPEAU");
		lcd.setCursor(3,1);
		lcd.print("( En Seconde )");
		lcd.setCursor(9,3);
		lcd.print(TVD);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	  if (touche == '*' && TVD < 10) {
		TVD = 0;
		lcd.clear();
		lcd.setCursor(0,0);
		lcd.print("TEMPS APPUI DRAPEAU");
		lcd.setCursor(3,1);
		lcd.print("( En Seconde )");
		lcd.setCursor(9,3);
		lcd.print(TVD);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	}
	Serial.println(TVD);
	while (touche != NO_KEY) {touche = clavier.getKey();}
	Serial.print("CAR = ");
	lcd.clear();
	lcd.setCursor(2,0);
	lcd.print("COMPTE A REBOURS");
	lcd.setCursor(3,1);
	lcd.print("( En Seconde )");
	CAR = 0;
	while (touche != '#') {
	  touche = clavier.getKey();
	  if (touche != NO_KEY && touche != '*' && touche != '#') {
		CAR = CAR * 10 + touche - 48;
		DernierChiffre = touche - 48;
		if(CAR > 10080){
		  CAR = 0;
		  DernierChiffre = 0;
		}
		lcd.clear();
		lcd.setCursor(2,0);
		lcd.print("COMPTE A REBOURS");
		lcd.setCursor(3,1);
		lcd.print("( En Seconde )");
		lcd.setCursor(9,3);
		lcd.print(CAR);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	  if (touche == '*' && CAR > 9) {
		CAR = (CAR - DernierChiffre) / 10;
		lcd.clear();
		lcd.setCursor(2,0);
		lcd.print("COMPTE A REBOURS");
		lcd.setCursor(3,1);
		lcd.print("( En Seconde )");
		lcd.setCursor(9,3);
		lcd.print(CAR);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	  if (touche == '*' && CAR < 10) {
		CAR = 0;
		lcd.clear();
		lcd.setCursor(2,0);
		lcd.print("COMPTE A REBOURS");
		lcd.setCursor(3,1);
		lcd.print("( En Seconde )");
		lcd.setCursor(9,3);
		lcd.print(CAR);
		while (touche != NO_KEY) {touche = clavier.getKey();}
	  }
	}
	Serial.println(CAR);
	while (touche != NO_KEY) {touche = clavier.getKey();}
	while (Recommencer == 1) {
	  lcd.clear();
	  lcd.setCursor(1,1);
	  lcd.print("JEU PRET A LANCER");
	  while (touche != '#') {touche = clavier.getKey();}
	  lcd.clear();
	  CARactuel = CAR + 1;
	  while (CARactuel != 1) {
		if ((millis()-temps1)>=1*1000) {
		  temps1=millis();
		  CARactuel = CARactuel - 1;
		  lcd.clear();
		  lcd.setCursor(2,1);
		  lcd.print("COMPTE A REBOURS");
		  lcd.setCursor(9,2);
		  lcd.print(CARactuel);
		  Serial.print("CAR Actuel = ");
		  Serial.println(CARactuel);
		}
		if (digitalRead(RSI) == LOW && (CARactuel < 6 || CARactuel == 10)) {
		  digitalWrite(RSI, HIGH);
		  delay(200);
		  digitalWrite(RSI, LOW);
		  delay(800);
		}
	  }
	  Serial.println("Jeu Lance");
	  lcd.clear();
	  lcd.setCursor(4,0);
	  lcd.print("JEU EN COURS");
	  digitalWrite(RSI, HIGH);
	  delay(1000);
	  digitalWrite(RSI, LOW);
	  TJTactuel = TJT * 60 + 1;
	  TTPB = 0;
	  TTPR = 0;
	  TA = 0;
	  if (MJ == 1 || MJ == 2) {
		while (TJTactuel != 0 ) {
		  if ((millis()-temps1)>=1*100) {
			temps1=millis();
			TJTactuel = TJTactuel - 1;
			TJTminute = TJTactuel/60;
			TJTseconde = TJTactuel - (TJTminute*60);
			Serial.print("TJT Actuel = ");
			Serial.println(TJTactuel);
			lcd.clear();
			lcd.setCursor(4,0);
			lcd.print("JEU EN COURS");
			Serial.print("BLEU : ");
			Serial.print(TTPB);
			Serial.print(" - ROUGE : ");
			Serial.println(TTPR);
			lcd.setCursor(7,1);
			if (TJTminute < 10){
			  lcd.print("0");
			  lcd.print(TJTminute);
			}
			else{
			  lcd.print(TJTminute);
			}
			lcd.print(":");
			if (TJTseconde < 10){
			  lcd.print("0");
			  lcd.print(TJTseconde);
			}
			else{
			  lcd.print(TJTseconde);
			}
			lcd.setCursor(3,2);
			lcd.print("BLEU");
			lcd.setCursor(12,2);
			lcd.print("ROUGE");
			lcd.setCursor(3,3);
			lcd.print(TTPB);
			lcd.setCursor(12,3);
			lcd.print(TTPR);
			if (TA == 1) {
				TTPB++;
			}
			if (TA == 2) {
				TTPR++;
			}
			RSItemps++;
		  }
		  TVDactuel = 0;
		  while (digitalRead(BPLB) == LOW) {
			Serial.print("TVD Actuel = ");
			Serial.println(TVDactuel);
			if ((millis()-temps1)>=1*1000) {
			  temps1=millis();
			  TVDactuel = TVDactuel + 1;
			}
			if (TVDactuel >= TVD) {
			  Serial.println("Bouton BLEU active");
			  digitalWrite(RGYB, HIGH);
			  digitalWrite(RGYR, LOW);
			  if (TA == 2) {
				digitalWrite(RSI, HIGH);
				RSItemps = 0;
			  }
			  TA = 1;
			}
		  }
		  TVDactuel = 0;
		  while (digitalRead(BPLR) == LOW) {
			if ((millis()-temps1)>=1*1000) {
			  temps1=millis();
			  TVDactuel = TVDactuel + 1;
			}
			if (TVDactuel >= TVD) {
			  Serial.println("Bouton ROUGE active");
			  digitalWrite(RGYB, LOW);
			  digitalWrite(RGYR, HIGH);
			  if (TA == 1) {
				digitalWrite(RSI, HIGH);
				RSItemps = 0;
			  }
			  TA = 2;
			}
		  }
		  if (digitalRead(RSI) == HIGH) {
			if (RSItemps == 1) {
			  digitalWrite(RSI, LOW);
			}
		  }
		  if ((TV == 2 && TTPB >= NP) || (TV == 2 && TTPR >= NP)){
			TJTactuel = 0;
		  }
		}
	  }
	  lcd.clear();
	  Manche++;
	  if (TTPB > TTPR) {
		CV = 1;
		digitalWrite(RGYB, HIGH);
		digitalWrite(RGYR, LOW);
		lcd.setCursor(13,1);
		lcd.print("BLEU");
		MancheB++;
	  }
	  if (TTPB < TTPR) {
		CV = 2;
		digitalWrite(RGYR, HIGH);
		digitalWrite(RGYB, LOW);
		lcd.setCursor(13,1);
		lcd.print("ROUGE");
		MancheR++;
	  }
	  if (TTPB == TTPR) {
		CV = 3;
		digitalWrite(RGYB, HIGH);
		digitalWrite(RGYR, HIGH);
		lcd.setCursor(13,1);
		lcd.print("EGALITE");
	  }
	  Serial.println("Jeu Termine");
	  Serial.print("CV = ");
	  Serial.println(CV);
	  lcd.setCursor(4,0);
	  lcd.print("JEU TERMINE");
	  lcd.setCursor(0,1);
	  lcd.print("VAINQUEUR: ");
	  lcd.setCursor(0,2);
	  lcd.print("Bleu:");
	  lcd.setCursor(5,2);
	  lcd.print(TTPB);
	  lcd.setCursor(9,2);
	  lcd.print("Rouge:");
	  lcd.setCursor(15,2);
	  lcd.print(TTPR);
	  lcd.setCursor(0,3);
	  lcd.print("Manche:");
	  lcd.setCursor(7,3);
	  lcd.print(Manche);
	  lcd.setCursor(9,3);
	  lcd.print("B:");
	  lcd.setCursor(11,3);
	  lcd.print(MancheB);
	  lcd.setCursor(13,3);
	  lcd.print("R:");
	  lcd.setCursor(15,3);
	  lcd.print(MancheR);
	  lcd.setCursor(17,3);
	  lcd.print("RE?");
	  digitalWrite(RSI, HIGH);
	  delay(5000);
	  digitalWrite(RSI, LOW);
	  Recommencer = 2;
	  while (Recommencer == 2) {
		touche = clavier.getKey();
		if (touche == '#') {
		  Recommencer = 1;
		}
		if (touche == '*') {
		  Recommencer = 0;
		}
	  }
	  digitalWrite(RGYB, LOW);
	  digitalWrite(RGYR, LOW);
	  lcd.clear();
	}
}

Voilà donc où j’en suis, bien sûr il reste plein de choses à peaufiner mais maintenant que mon programme à bien avancé, j’attends de recevoir le reste du matériel.

La suite du projet sera l’assemblage des éléments sur la boite et procéder à quelques tests en réel sur le terrain. Et si tout vas bien, à l’ajout de quelques petits frères.
Lenteur égal précision, précision égal vitesse !!
https://www.facebook.com/PaintballTeamSAP

#2 OFFLINE   willmann84

    Casse-Couille

  • Membre
  • PipPipPip
  • 192 messages

Posté 19 mars 2018 - 23:48

projet très intéressant bravo impatient de lire la suite

merci du partage

#3 OFFLINE   CYBER

    Mephisto

  • Administrateur
  • 13 556 messages

Posté 23 mars 2018 - 08:55

salut, c'est effectivement intéressant, ça fait trop longtemps qu'il n'y a pas eu de sujet du genre, continu comme ça ;-)

#4 OFFLINE   Myra

    NooB

  • Membre
  • Pip
  • 46 messages

Posté 23 mars 2018 - 21:29

Merci les gars, c’est toujours plaisant de voir que son travail est apprécié !

J'ai reçu de nouvelles pièces mais ce n'est pas encore complet, en plus j’ai reçu des relais HS Image IPB je reçois les nouveaux la semaine prochaine.
J'ai encore peaufiné le code de mon programme, je le publierais une fois qu'il sera vraiment terminé (il est un peu long), plus quelques photos dès que le projet ressemble à quelque chose !
Lenteur égal précision, précision égal vitesse !!
https://www.facebook.com/PaintballTeamSAP

#5 OFFLINE   edd52320

    Fantassin

  • Membre
  • PipPipPipPip
  • 319 messages

Posté 24 mars 2018 - 23:13

apres plusieur projet du meme type ( base sur de l arduino, bombe factice- double horloge- boitier de prise de position) je te donne qque conseil/idee
plutôt que d utilisé des gyrophare qui sont assez gourmand en conso pourquoi ne pas faire un drapeau, de la dimension que tu souhaite, en rigide soit avec du bois ( mais je ne te conseil pas plus que ca tu comprendra par la suite) soit avec du plexiglass ( pas forcement tranliucide) ou dans l ideal une plaque d alu 2ou3 mm d epaisseur devrai suffir. sur ces drapeau tu vient y coller de la bande led rgb etanche ( ou non si tu veut remettre une plaque de plexi par dessus histoire d eviter les billes perdu) la conso au niveau des led est tres faible meme si tu en colle sur deux face ( une alim de 9.6V de modelisme suffit pour tenir des heures) .
j ai cree il y a peu un " projecteur" sur ce principe avec de la bande led blanche j ai colle ca sur du contreplaqué de 3mm et j ai été oblige de coller un ventilateur de pc au dos car la plaque chauffai de trop d ou mon conseil de la plaque d alu pour une disipation de chaleur plus "efficace" .il suffit juste de relier ton drapeau par cable (3*0.75mm et encore je suis large) jusque qu a ton boitier ou se trouverai ton ou tes bouton et ta carte arduino et le tour est jouer
autre astuce plutot que d utiliser des relais tu utiliser des transitor mofset ( sorte de relais je te l avoue) qui suporte largement la conso des bande led en revenche pas sur qu il suporte la charge des gyrophares

pour ce qui est du code dsl mais ce n est pas mois qui pourrai t aider je ne suis pas tres douer la dedans je me contentai de reprendre des partie de code deja existant.

ps: je ne passe plus souvent sur le fofo si besoin pas par pm tu aura plus de chance d avoir une reponse

#6 OFFLINE   Myra

    NooB

  • Membre
  • Pip
  • 46 messages

Posté 26 mars 2018 - 08:14

Ah oui, un genre de panneau rétroéclairé, c’est une idée! Mais je vous ai dit "gyrophares" mais ce ne sont que des strobes qui utilisent une dizaines de led, donc je ne pense pas que cela demandera une grande puissance, quoi qu’il en soit je mesurerais l’autonomie de mon système quand il sera complet.
Image IPB

Sinon en effet j’avais aussi pensé à des transistors pour commander la puissance, mais ne connaissant pas bien ces petites bêtes je suis resté sur une solution simple (du moins que je maîtrise^^).

Mis à part les relais que j’aurais dans la semaine, j’ai tout pour attaquer l’assemblage.
Lenteur égal précision, précision égal vitesse !!
https://www.facebook.com/PaintballTeamSAP

#7 OFFLINE   Myra

    NooB

  • Membre
  • Pip
  • 46 messages

Posté 26 mars 2018 - 21:39

Quelques photos après une première mise en place:

Image IPBImage IPB
Image IPBImage IPB
Lenteur égal précision, précision égal vitesse !!
https://www.facebook.com/PaintballTeamSAP

#8 OFFLINE   edd52320

    Fantassin

  • Membre
  • PipPipPipPip
  • 319 messages

Posté 27 mars 2018 - 11:38

ah oui des strombo comme ca ca ne consomme rien j en avais sur des horloge de type "go scenario"( que j ai encore dans un deux mes caisse va falloir que je le remette en etat de marche et que je les revendent!!) et au final j ai remplace les led interne par du simple ruban blanc car ca n etait pas assez visible d origine enfin je trouvais apres ils ont peut etre changer le nombre de led et leur puissance depuis.
petit conseil tu devrai mettre une protection au tour de tes gyro sinon il ne vont pas faire long feu perso meme avec l horloge place a environ 2M de hauteur et les bouton a 1M c arrivai encore a prend des billes et pourtant on jouait tous en loader 50 ou magfeed
je vais essayer de te faire qque foto de mon montage dans la journee
en tous cas joli travail !!!

Modifié par edd52320, 27 mars 2018 - 11:39.


#9 OFFLINE   Keamaru

    NooB

  • Membre
  • Pip
  • 35 messages

Posté 28 mars 2018 - 14:02

Super intéressant comme projet. Je suis impatient de voir ce que ça donnera en vidéo, ou en partie !!
Image IPB

#10 OFFLINE   Myra

    NooB

  • Membre
  • Pip
  • 46 messages

Posté 02 avril 2018 - 20:43

Étape peinture:

Image IPBImage IPBImage IPB

Le caisson assemblé:

Image IPB

Le tableau de contrôle:

Image IPBImage IPB

Reste à faire tous les branchements et à tester la dernière version de mon programme, et pour finir le trépied!

Si tout ce passe bien, je devrais pouvoir le tester ce week-end avec ma team Image IPB
Lenteur égal précision, précision égal vitesse !!
https://www.facebook.com/PaintballTeamSAP

#11 OFFLINE   Myra

    NooB

  • Membre
  • Pip
  • 46 messages

Posté 16 avril 2018 - 11:03

Ça y est nous avons fait les premières parties avec, malgré une petite pluie par moments!
Premières impressions, déjà ça marche, ce qui est pas mal^^ Ensuite n’ayant pas été un grand nombre on a surtout joué en 2v2, ce qui a donné une cadence très rapide au jeu! On connaissait pourtant très bien le terrain mais cela lui a donné un tout nouveau visage! Au final juste quelques petits ajustements à faire et l‘ajout de quelques différents modes de jeux.
Le A c’est pour Borne Alpha, viendra ensuite les bornes Bravo, Charlie et Delta.

Quelques photos :
Image IPBImage IPBImage IPBImage IPB
Avec fixation sur trépied ou directement sur palissade avec fixation étau !

Une petite vidéo d’un des membres de l’équipe où on y aperçoit le drapeau :
https://www.youtube....h?v=2oKa9h5eU-s

Modifié par Myra, 16 avril 2018 - 11:03.

Lenteur égal précision, précision égal vitesse !!
https://www.facebook.com/PaintballTeamSAP

#12 OFFLINE   edd52320

    Fantassin

  • Membre
  • PipPipPipPip
  • 319 messages

Posté 17 avril 2018 - 11:11

sympas la video
bon travail !!





1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users