De nombreux outils sont utilisés pour mesurer la longueur. L’un des premiers qui nous vient à l’esprit est celui des règles. Notre instrument de mesure diffère selon l’endroit et la taille à mesurer. Les rubans à mesurer sont utilisés dans la construction et l'architecture, et les pieds à coulisse sont utilisés pour les petits objets nécessitant une précision millimétrique. De plus, si l'on souhaite mesurer une zone nécessitant une mesure à la fois vaste et précise, des télémètres fonctionnant avec des systèmes laser et infrarouges sont utilisés. Les appareils d'échographie utilisés dans le secteur de la santé fonctionnent également avec la même logique, mais convertissent leurs mesures en visuels.
Dans notre projet, nous utiliserons des PicoBricks et un capteur à ultrasons pour préparer une règle numérique qui affichera la valeur de la distance sur le Écran OLED lorsque le bouton est enfoncé. Les capteurs à ultrasons détectent la distance en fonction des temps de retour des ondes sonores qu'ils émettent.
Détails et algorithme
Lorsque le programme démarre, les instructions s'affichent sur l'écran OLED. Après que l'utilisateur appuie sur le bouton, une mesure est prise. La LED rouge reste allumée pendant la mesure, puis s'éteint. La valeur mesurée est ajoutée à la distance entre la pointe du capteur et l'arrière du boîtier. La valeur finale calculée est affichée sur l'écran OLED.
Composants
1X PicoBricks
1X capteur à ultrasons HC-SR04
Câbles de démarrage
Câbles de connexion faciles
Schéma de câblage

Vous pouvez coder et exécuter les modules Picobricks sans câblage. Si vous comptez utiliser les modules en les séparant de la carte, vous devez effectuer les connexions des modules avec des câbles Grove.
Étapes de construction du projet
Pour préparer le projet, vous avez besoin de ruban mousse double face, d'un couteau tout usage, d'une poubelle en carton d'environ 15x10x5 cm.
1) Découpez les trous pour le capteur à ultrasons, l'écran OLED, le module bouton LED, avertisseur sonore, boîtier de batterie pour passer les câbles avec un couteau tout usage.

2) Accrochez tous les câbles à l'intérieur du boîtier et fixez l'arrière des modules au boîtier avec du ruban mousse double face. Connectez le trigonométrie broche du capteur à ultrasons sur le GPIO14 la broche et le écho épingler au GPIO15 épingle. Vous devez connecter la broche VCC au VBUS épinglez sur le Picoboard.

3) Après avoir terminé les connexions des câbles de tous les modules, vous pouvez insérer le boîtier à 2 piles dans la prise d'alimentation du Picoboard et allumer l'interrupteur. Voilà pour le projet de règle numérique !

Codes MicroBlocks des PicoBricks

Vous pouvez accéder aux codes Microblocks du projet en faisant glisser l'image vers l'onglet Microblocks Run ou en cliquant sur le bouton.
Onglet Exécution des microblocs
Codes MicroPython des PicoBricks
à partir de l'importation de la machine Pin, PWM, I2C
depuis utime importer le sommeil
à partir de picobricks importer SSD1306_I2C
importer du temps
# Définir les bibliothèques
LED rouge = broche (7, broche.OUT)
bouton = Pin(10, Pin.IN, Pin.PULL_DOWN)
buzzer = PWM (Pin (20, Pin.OUT))
buzzer.freq(392)
déclencheur = broche (15, broche.OUT)
écho = Pin(14, Pin.IN)
# Définir les broches d'entrée et de sortie
LARGEUR = 128
HAUTEUR = 64
# Paramètres de l'écran OLED
sda = machine.Pin(4)
scl = machine.Pin(5)
i2c = machine.I2C(0, sda=sda, scl=scl, fréquence=1000000)
# Initialisez les broches numériques 4 et 5 comme SORTIE pour la communication OLED
oled = SSD1306_I2C (128, 64, i2c)
mesure = 0
Distance finale = 0
def getDistance() :
déclencheur.low()
utime.sleep_us(2)
déclencheur.high()
utime.sleep_us(5)
déclencheur.low()
tandis que echo.value() == 0 :
signaloff = utime.ticks_us()
tandis que echo.value() == 1 :
signalon = utime.ticks_us()
temps écoulé = signal activé - signal désactivé
distance = (temps écoulé * 0,0343) / 2
distance de retour
# Calculer la distance
def getMeasure (broche) :
mesure globale
Distance finale globale
rougeLed.value(1)
pour moi dans la plage (20):
mesurer += getDistance()
dormir(0.05)
rougeLed.value(0)
finalDistance = (mesure/20) + 1
oled.fill(0)
oled.show()
oled.text(">Règle numérique<", 2, 5)
oled.text("Distance " + str(round(finalDistance)) + " cm", 0, 32)
oled.show()
# Imprime la distance spécifiée aux coordonnées x et y spécifiées sur l'écran OLED
imprimer (distance finale)
buzzer.duty_u16(4000)
dormir(0.05)
buzzer.duty_u16(0)
mesure = 0
Distance finale = 0
# Faites retentir le buzzer
bouton.irq(trigger=machine.Pin.IRQ_RISING, handler=getMeasure)
Codes Arduino C des PicoBricks
#include
#include "ACROBOTIC_SSD1306.h"
#include
// Définir les bibliothèques
#définir TRIGGER_PIN 15
#définir ECHO_PIN 14
#définir MAX_DISTANCE 400
Sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
#définir T_B 493
distance entière = 0 ;
entier total = 0 ;
void setup() {
pinMode(7, SORTIE);
pinMode(20, SORTIE);
pinMode(10, ENTRÉE);
// Définir les broches d'entrée et de sortie
Wire.begin();
oled.init();
oled.clearDisplay();
}
boucle vide() {
retard (50);
si (digitalRead (10) == 1) {
mesure int = 0 ;
digitalWrite(7, ÉLEVÉ);
ton(20, T_B);
retard (500);
pas de tonalité (20);
pour (int je = 0; je < 20; i++) {
mesure = sonar.ping_cm();
total = total + mesure ;
retard (50);
}
distance = total / 20 + 6 ; // Calculer la distance
digitalWrite(7, FAIBLE);
retard (1000);
oled.clearDisplay();
oled.setTextXY(2, 1);
oled.putString(">Règle numérique<");
oled.setTextXY(5, 1);
oled.putString("Distance : ");
oled.setTextXY(5, 10);
Chaîne string_distance = Chaîne (distance);
oled.putString(string_distance);
oled.setTextXY(5, 12);
oled.putString("cm"); // Imprimer la distance calculée sur l'écran OLED
mesure = 0 ;
distance = 0 ;
total = 0 ;
}
}
Page du projet GitHub


