Un chronomètre est un instrument de mesure du temps utilisé pour mesurer des intervalles de temps précis. Contrairement à une montre qui indique l'heure, un chronomètre est conçu pour mesurer des durées spécifiques, comme les courses, les compétitions sportives ou d'autres événements nécessitant une précision temporelle. Les chronomètres peuvent être analogiques ou numériques et sont souvent équipés de fonctionnalités telles que des compteurs, des arrêts et des redémarrages rapides pour permettre une mesure précise du temps écoulé.
Un chronomètre contrôlé par un Arduino UNO peut être créé en utilisant l'Arduino pour mesurer le temps écoulé entre différents événements ou pour chronométrer des intervalles spécifiques. L'Arduino UNO peut utiliser sa fonctionnalité de temporisation (fonctions millis()
ou micros()
) pour mesurer avec précision les durées.
Le fonctionnement du chronomètre contrôlé par l'Arduino UNO avec un afficheur SSD1306 et des boutons-poussoirs peut être décrit comme suit :
Démarrage initial : Lorsque vous alimentez l'Arduino UNO, le chronomètre commence à afficher Press START sur l'afficheur SSD1306.
Bouton de démarrage (Start) : En appuyant sur le bouton de démarrage, le chronomètre démarre en commençant à mesurer le temps écoulé depuis 00:00 jusqu'à ce que vous appuyiez sur le bouton d'arrêt.
Lorsque le chronomètre est en marche, l'afficheur SSD1306 montre le temps qui s'écoule en minutes et secondes, par exemple, 00:15 (15 secondes écoulées), 01:30 (1 minute et 30 secondes), etc.
En appuyant à nouveau sur le bouton Start, le chronomètre se fige, enregistrant le temps écoulé jusqu'à ce moment-là, sans le mettre à zéro.
Bouton Reset : En appuyant sur le bouton de réinitialisation, le chronomètre revient à 00:00, remettant ainsi le temps écoulé à zéro, peu importe son état précédent (en cours ou arrêté).
Ce fonctionnement vous permet de contrôler le chronomètre à l'aide des boutons-poussoirs : démarrer pour lancer la mesure du temps, arrêter pour geler le temps actuel et réinitialiser pour remettre le chronomètre à zéro. L'afficheur SSD1306 affiche en temps réel le temps écoulé au format minutes:secondes pendant que le chronomètre est en marche.
Pour créer un chronomètre contrôlé par un Arduino UNO, utilisant des boutons-poussoirs pour démarrer, arrêter et réinitialiser le chronomètre, avec un afficheur SSD1306 utilisant le protocole I2C, on a besoin de ces composants :
Carte Arduino UNO :
La carte microcontrôleur qui exécutera le code du chronomètre.
Afficheur SSD1306 :
L'afficheur SSD1306 est un écran à cristaux liquides (LCD) de petite taille souvent utilisé dans les projets électroniques. Il utilise une technologie OLED (Organic Light Emitting Diode) pour produire des images en émettant leur propre lumière, ce qui lui permet d'être visible même dans des conditions de faible luminosité. Le SSD1306 est contrôlé par des microcontrôleurs ou des cartes de développement comme Arduino.
L'afficheur SSD1306 est utilisé pour afficher le temps écoulé.
Deux boutons-poussoirs :
Un bouton poussoir pour démarrer et arrêter
Un autre bouton pour réinitialiser le chronomètre.
Plaque d'essai (Breadboard) :
On utilise le plaque d'essai pour faciliter le câblage des différents composants.
Deux résistances :
On utilise deux résistances (10k ohms) pour les boutons-poussoirs .
Câbles de raccordement (jumpers) :
Pour connecter les différents composants entre eux.
Pour réaliser le câblage de l'Arduino UNO avec un afficheur SSD1306 et des boutons-poussoirs pour un chronomètre on va suivre ces étapes :
1- Pour l'afficheur SSD1306
- Connecter la broche GND de l'afficheur SSD1306 à la broche GND de la carte Arduino UNO
- Connecter la broche VCC de l'afficheur SSD1306 à la broche 5V de la carte Arduino UNO
- Connecter la broche SDA de l'afficheur SSD1306 à la broche A4 de la carte Arduino UNO
- Connecter la broche SCL de l'afficheur SSD1306 à la broche A5 de la carte Arduino UNO
2- Pour le bouton poussoir Start
- Mettre une résistance (10 kohm) entre l'une des pattes du bouton poussoir et la broche GND de l'Arduino UNO
- Connecter la même patte du bouton poussoir à la broche N°2 de la carte Arduino UNO
- Connecter une autre patte du bouton poussoir à la broche 5V de la carte Arduino UNO
3- Pour le bouton poussoir Reset
- Mettre une résistance (10 kohm) entre l'une des pattes du bouton poussoir et la broche GND de l'Arduino UNO
- Connecter la même patte du bouton poussoir à la broche N°3 de la carte Arduino UNO
- Connecter une autre patte du bouton poussoir à la broche 5V de la carte Arduino UNO
Ce programme utilise les interruptions pour détecter les pressions des boutons-poussoirs. Lorsque le bouton de démarrage est pressé, le chronomètre démarre à partir de zéro. Le bouton d'arrêt stoppe le chronomètre.
Il faut utiliser les deux bibliothèques Adafruit_SSD1306 .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
#include <Adafruit_SSD1306.h> //OLED define #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); const int start_pause_pin = 2, resetpin = 3; String stopwatch = "stop", start_pause = "low"; long start_time = 0, seconds = 0; void setup() { Serial.begin(9600); pinMode(start_pause_pin, INPUT); pinMode(resetpin, INPUT); Serial.begin(9600); //For OLED I2C if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 Serial.println(F("SSD1306 allocation failed")); for(;;); } display.display(); //Display logo delay(1000); display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0, 0); display.print("Hello!"); display.display(); delay(1000); display.setCursor(0, 20); display.print("Start"); display.setCursor(0, 40); display.print("chrono"); //display.print(""); display.display(); } void loop() { display.clearDisplay(); if (stopwatch == "run") { display.print(""); display.setCursor(0, 0); display.print("Chrono"); display.setCursor(0, 20); seconds = (millis() - start_time) / 1000; long centisecond = ((millis() - start_time) % 1000) % 100; // afficher le chrono sur l'afficheur SSD1603 display.setCursor(0, 20); display.print(seconds); display.setCursor(20, 20); display.print(":"); display.setCursor(30, 20); display.print(centisecond); display.display(); Serial.println(start_time); Serial.println(millis()); } if (digitalRead(resetpin) == HIGH) { //Reset stopwatch stopwatch = "stop"; start_time = 0; display.setCursor(0, 0); display.print("Press"); display.setCursor(0, 20); display.print("Start"); display.display(); } if (digitalRead(start_pause_pin) == HIGH && stopwatch == "stop") { //Start stopwatch start_time = millis(); display.print(""); stopwatch = "run"; start_pause = "high"; } else if (digitalRead(start_pause_pin) == HIGH && stopwatch == "run" && start_pause == "low") { //Pause stopwatch stopwatch = "pause"; start_pause = "high"; } else if (digitalRead(start_pause_pin) == HIGH && stopwatch == "pause" && start_pause == "low") { //Resume stopwatch start_time = millis() - (seconds * 1000); stopwatch = "run"; start_pause = "high"; display.print(""); } else if (digitalRead(start_pause_pin) == LOW) { start_pause = "low"; } delay(10); } |
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info