Cod Arduino și video pentru modulul de distanță Sharp IR cu afișaj TM1637
În acest tutorial, vom explora cum să folosim modulul Sharp de distanță cu infraroșu împreună cu afișajul TM1637 pentru a măsura și reprezenta vizual distanțele. Configurația vă permite să măsurați distanțe cu precizie și să le afișați în timp real pe modulul TM1637. Până la sfârșitul acestui ghid, veți avea un proiect funcțional care poate măsura distanțe și le poate afișa pe ecran.

Pentru acest proiect, va trebui să înțelegeți cablarea și codul care conduce interacțiunea dintre componente. Senzorul Sharp de distanță cu infraroșu comunică distanța măsurată către Arduino, care la rândul său actualizează afișajul TM1637. Acest tutorial va detalia instrucțiunile de cablare și va oferi informații despre codul care face ca totul să funcționeze fără probleme (în video la 00:00).
Hardware Explicat
Componentele principale ale acestui proiect sunt modulul Sharp de distanță cu infraroșu și afișajul TM1637. Modulul Sharp folosește lumină infraroșie pentru a măsura distanța până la un obiect, calculând timpul necesar luminii emise să se reflecte înapoi. Acesta oferă o ieșire analogică care variază în funcție de distanța măsurată.
Afișajul TM1637 este un afișaj cu patru cifre și 7 segmente, controlat prin doi pini: un pin de ceas și un pin de intrare/ieșire date. Acest afișaj permite vizualizarea ușoară a citirilor de distanță de la modulul Sharp, fiind ușor de utilizat și practic pentru diverse aplicații.
Detalii din Fișa Tehnică
| Producător | Sharp |
|---|---|
| Număr de piesă | GP2Y0A41SK0F |
| Tensiune logică/IO | 5 V |
| Tensiune de alimentare | 4,5–15 V |
| Curent de ieșire (pe canal) | 10 mA |
| Curent de vârf (pe canal) | 60 mA |
| Ghid frecvență PWM | N/A |
| Praguri logice de intrare | 0,8 V (jos), 2,0 V (sus) |
| Cădere de tensiune / RDS(on) / saturație | N/A |
| Limite termice | –10 până la 60 °C |
| Pachet | Carcasă din plastic |
| Note / variante | Interval de măsurare a distanței: 10–80 cm |
- Asigurați o sursă de alimentare adecvată (4,5–15 V) pentru a evita deteriorarea senzorului.
- Folosiți condensatoare de decuplare lângă pinii de alimentare pentru stabilitate.
- Păstrați senzorul departe de lumina directă a soarelui pentru a preveni interferențele.
- Calibrați senzorul pentru citiri precise ale distanței.
- Cablarea corectă a afișajului TM1637 pentru a evita problemele de comunicare.
- Luați în considerare disiparea căldurii dacă lucrați la curenți mai mari.
Instrucțiuni de Cablare
Pentru a cabla modulul Sharp de distanță cu infraroșu și afișajul TM1637 la Arduino, urmați acești pași:
Conectați firul roșu al modulului Sharp la pinul de 5V de pe Arduino. Apoi, conectați firul negru la pinul de masă (GND) de pe Arduino. Firul galben, care este ieșirea, trebuie conectat la pinul analogic A0 de pe Arduino. Pentru afișajul TM1637, conectați pinul CLK la pinul digital 2 și pinul DIO la pinul digital 3 al Arduino. Această configurație permite Arduino să citească distanța de la modulul Sharp și să trimită datele către afișajul TM1637.
Asigurați-vă că toate conexiunile sunt sigure pentru a evita probleme intermitente. Dacă folosiți fire de legătură, asigurați-vă că sunt conectate corespunzător pentru a evita conexiunile slabe.
Exemple de Cod și Explicații
Următorul fragment arată cum sunt configurate afișajul și senzorul:
#define CLK 2 // conectați CLK la pinul 2
#define DIO 3 // conectați DIO la pinul 3
SharpIR SharpIR(A0, model); // Inițializați senzorul Sharp IR
În acest segment, definim pinii pentru afișajul TM1637 și inițializăm senzorul Sharp IR specificând pinul analogic A0. Acest lucru este crucial pentru ca Arduino să știe de unde să citească datele de la senzorul IR.
Funcția loop preia măsurarea distanței și o afișează:
int dis = SharpIR.distance(); // obțineți distanța
display.showNumberDec(dis, false, 3, 1); // afișați distanța
Aici, distanța este stocată în variabila dis, iar afișajul TM1637 se actualizează pentru a arăta această valoare. Parametrii din showNumberDec controlează modul în care este afișat numărul, asigurând formatarea corectă.
Demonstrație / Ce să Vă Așteptați
Odată ce totul este cablat și codul este încărcat, ar trebui să vedeți distanța afișată pe TM1637. Pe măsură ce mutați un obiect mai aproape sau mai departe de senzor, afișajul se va actualiza în timp real. Cu toate acestea, fiți conștienți de posibilele inexactități la distanțe mai mari, așa cum se menționează în video (în video la 12:00).
Capcanele comune includ polaritatea inversată la conexiunile de alimentare și intrările flotante pe senzor, care pot duce la citiri neregulate. Asigurați-vă că testați configurația temeinic înainte de a vă baza pe ea pentru măsurători critice.
Marcaje Temporale Video
- 00:00 - Introducere în proiect
- 01:30 - Instrucțiuni de cablare
- 03:00 - Explicația codului
- 05:30 - Demonstrația măsurării distanței
- 08:00 - Capcane comune și depanare
/*
* Sharp IR (infrared) distance measurement module with TM1637 Display for Arduino
* Measures the distance in cm.
* Original library: https://github.com/guillaume-rico/SharpIR
* Original code for TM1637 from https://github.com/avishorp/TM1637
* Watch video instructions for this code: https://youtu.be/dnjY9n927HI
* Written by Ahmad Shamshiri on Feb 03, 2018 at 12:32
* in Ajax, Ontario, Canada. www.robojax.com
*
* Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place.
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Arduino.h>
#include <TM1637Display.h>
// Display Module connection pins (Digital Pins)
#define CLK 2 // connect CLK to pin 2
#define DIO 3 // connect DIO to pin 3
// The amount of time (in milliseconds) between display
#define TEST_DELAY 100
uint8_t blank[] = { 0x0, 0x0, 0x0, 0x0 };// blank screen
TM1637Display display(CLK, DIO);
///////////////////***** start of Sharp IR
#include <SharpIR.h>
#define IR A0 // define Sharp IR signal pin
#define model 430 // the model of the IR module
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:
/*
* GP2Y0A02YK0F --> "20150"
GP2Y0A21YK --> "1080"
GP2Y0A710K0F --> "100500"
GP2YA41SK0F --> "430"
*/
SharpIR SharpIR(IR, model);
/////////////////////**** end of Sharp IR
void setup()
{
// Sharp IR with TM1637 Display code for Robojax.com
display.setBrightness(0x0f);// set the brightness at max
}
void loop()
{
// Sharp IR with TM1637 Display code for Robojax.com
display.setSegments(blank);// clear the screen
int dis=SharpIR.distance(); // this returns the distance to the object you're measuring
display.showNumberDec(dis, false, 3, 1);// display the distance
delay(TEST_DELAY);//delay between display
// Sharp IR with TM1637 Display code for Robojax.com
}
Lucruri de care ai putea avea nevoie
-
Amazon
Resurse și referințe
-
ExternSharp IR GP2Y0A51SK0F datasheet (PDF)global.sharp
Fișiere📁
Biblioteci Arduino (zip)
-
TM1637 Arduino Library
TM1637_library.zip1.36 MB -
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
Fișă tehnică (pdf)
-
Sharp IR GP2Y0A21YK Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A21YK_datasheet.pdf0.36 MB
Fișier Fritzing
-
TM1637 Seven Segment module
TM1637.fzpz0.01 MB -
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
Manualul utilizatorului
-
Manual de utilizare TM1637
robojax-TM1637_display_manual.pdf0.31 MB
Alte fișiere
-
Sharp GP2Y0A41SK0F Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A41SK0F_datasheet.pdf0.84 MB -
Sharp GP2Y0A710K0F Infrared distance sensor datashee
robojax_sharp_IR_GP2Y0A710K0F_datasheet.pdf0.33 MB