Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Affichage GLCD du temps au tour déclenché par laser pour les voitures à sous

Composants et fournitures

Arduino Mega 2560
× 1
KY 008 Laser
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

Présentation

J'ai acheté une paire de modules laser KY008 et un capteur correspondant, et je savais que je devais faire un projet sympa avec. J'ai donc pris la paire et créé une porte de chronométrage électrique pour la piste de voiture à sous qui était déjà sur la table pour mon projet de voiture à sous autonome.

Le matériel

Les 3 composants principaux sont le module laser, le capteur récepteur laser et l'écran GLCD.

J'aime vraiment utiliser GLCD, vous pouvez trouver des informations sur le brochage ici :https://playground.arduino.cc/Code/GLCDks0108/

Et vous pouvez télécharger la bibliothèque à partir d'ici :

https://bitbucket.org/bperrybap/openglcd

J'ai créé un connecteur agréable et facile pour cela, comme le montre l'image ci-dessous.

Le module laser KY008 a 3 broches, -, + et S, je viens de raccourcir à la fois le S et le + au 5V. Si vous ne voulez pas que le laser soit allumé tout le temps, connectez la broche S à une broche numérique sur l'Arduino. chaque fois que vous le réglez haut, le laser s'allumera.

Le capteur a également 3 broches, GND, VCC et SIGNALE. connectez-vous à l'alimentation et à la broche d'entrée de l'Arduino.

Le défi le plus difficile dans cette version était de tout aligner.

Vous pouvez voir le résultat final dans ce clip.


Code

  • Fichier sans titre
Fichier sans titreArduino
/** Chronométrer la porte numérique* Code par :Tal Ofer* [email protected]*/#include "openGLCD.h"// tours infounsigned long currentRunStartMillis;unsigned long lastRunInMillis;unsigned long bestRunInMillis;int currentLap;unsigned longtemps enregistréMillis;gText t1; // définira le runtime latergText t2; // définira le runtime latergText t3; // définira le runtime plus tard // global pour displayint sec_val, milli_val; // laser gate const int gateSensorPin =2; // le numéro du pinint du capteur de porte gateSensorState; // la lecture actuelle du sensorint lastgateSensorState =LOW; // la lecture précédente de sensorunsigned long lastDebounceTime =0; // la dernière fois que la broche du capteur a été basculéeint debounceDelay =50; // le temps de rebond ; augmenter si la sortie flickersvoid setup() { // mode pin pinMode(gateSensorPin, INPUT); retard (50); // pour retarder le fonctionnement du capteur et du laser, afin que le tour ne soit pas déclenché. // démarre GLCD GLCD.Init(NON_INVERTED); // définit les zones t1.DefineArea(textAreaTOP, lcdnums14x24); t2.DefineArea(0, GLCD.CenterY, 8, 2, fixednums7x15); t3.DefineArea(GLCD.CenterX, GLCD.CenterY, 8, 2, fixednums7x15); t3.SetFontColor(BLANC); // définit la couleur de la police t3.ClearArea(); // imprime le texte GLCD.SelectFont(System5x7) ; GLCD.CurseurVers(1, 4); GLCD.print("DERNIER"); GLCD.CurseurVers(11, 4); GLCD.print("MEILLEUR"); // réinitialiser les paramètres currentRunStartMillis =0; lastRunInMillis =0; meilleurRunInMillis =0 ; currentLap =0;}void loop(){ // lit l'état du capteur laser :int reading =digitalRead(gateSensorPin); // Si le commutateur a changé, en raison d'un bruit ou d'une pression :if (reading !=lastgateSensorState) { // réinitialiser la minuterie anti-rebond lastDebounceTime =millis(); } //end if // if passe le temps anti-rebond if ((millis() - lastDebounceTime)> debounceDelay) { if (lecture !=gateSensorState) { gateSensorState =lecture; // Si nous sommes allés bas, cela signifie que le faisceau était cassé if (gateSensorState ==LOW) { // enregistre les millis pour que tous les calculs soient effectués avec la même valeur. enregistréMillis =millis(); // si ce n'est pas le premier tour if (currentLap>
 0) { // enregistre le dernier run lastRunInMillis =saveMillis - currentRunStartMillis; // si la dernière exécution est plus rapide alors la meilleure exécution if (lastRunInMillis 
 0) { calcResultFromMillis(savedMillis - currentRunStartMillis, &sec_val, &milli_val); } else { calcResultFromMillis(0, &sec_val, &milli_val); } //fin if // CURRENT RUN t1.CursorTo(3, 0); // la colonne et la ligne sont relatives à la zone de texte t1.Printf(F("%02d.%03d"), sec_val, milli_val); // LAST RUN calcResultFromMillis(lastRunInMillis, &sec_val, &milli_val); t2.CurseurVers(1, 1); // la colonne et la ligne sont relatives à la zone de texte t2.Printf(F("%02d.%03d"), sec_val, milli_val); // MEILLEURE RUN calcResultFromMillis(bestRunInMillis, &sec_val, &milli_val); t3.CurseurVers(1, 1); t3.Printf(F("%02d.%03d"), sec_val, milli_val);} //wnd loop// calcule les millis en 2 valeurs, secondes et millis pour displayvoid calcResultFromMillis(valeur longue non signée, int *sec_val, int * milli_val) { *sec_val =int(valeur / 1000); *milli_val =valeur - *sec_val * 1000;}

Processus de fabrication

  1. Guide du marquage laser sur aluminium
  2. Guide du marquage laser
  3. Qu'est-ce que le marquage laser à fibre ?
  4. Pointeur laser
  5. montagnes russes
  6. Laser à semi-conducteur
  7. Sablier
  8. Kuman TFT 3.5 RetroPie 2018
  9. Rpibot – À propos de l'apprentissage de la robotique