- De P10 LED-displaymatrix
- Componenten die nodig zijn voor het Arduino-scorebord
- Schakelschema voor Arduino-scorebord
- Arduino Scorebord Code Uitleg
Een elektronisch scorebord is een van de belangrijkste gadgets die iemand tijdens een sporttoernooi kan hebben. Een oud handmatig scorebord met conventionele methoden is erg tijdrovend en foutgevoelig, daarom is een geautomatiseerd scorebord nodig waar de weergave-eenheid in realtime moet worden gewijzigd. Dit is de reden waarom we in dit project een Bluetooth-gestuurd draadloos scorebord zullen bouwen waarin we de score op het bord kunnen wijzigen door gewoon een Android-applicatie te gebruiken. Het brein van dit project is een Arduino Nano, en voor het weergavegedeelte zullen we een P10 LED-matrix gebruiken om de score op afstand in realtime weer te geven.
De P10 LED-displaymatrix
Een P10 LED Matrix Display is de beste manier om een LED-bord te maken voor gebruik binnen of buiten. Dit paneel heeft in totaal 512 zeer heldere LED's gemonteerd op een plastic behuizing die is ontworpen voor de beste weergaveresultaten. Het wordt ook geleverd met een IP65-classificatie voor waterdichtheid, waardoor het perfect is voor gebruik buitenshuis. Hiermee kunt u een groot LED-uithangbord maken door een willekeurig aantal van dergelijke panelen in elke rij- en kolomstructuur te combineren.
Onze module heeft een afmeting van 32 * 16, wat betekent dat er 32 leds in elke rij en 16 leds in elke kolom zitten. Er zijn dus in totaal 512 LED's aanwezig in elk led-bord. Verder heeft het een IP65-classificatie voor waterdichtheid, kan het worden gevoed door een enkele 5V-stroombron, heeft het een zeer brede kijkhoek en kan de helderheid oplopen tot 4500 nits. U zult het dus duidelijk kunnen zien in gebracht daglicht. Eerder hebben we dit P10 Display ook met Arduino gebruikt om een simpel LED Board te bouwen.
Pin Beschrijving van P10 LED Matrix:
Dit LED-displaybord gebruikt een 10-pins mailheader voor invoer- en uitvoerverbindingen, in deze sectie hebben we alle benodigde pinnen van deze module beschreven. Je kunt ook zien dat er een externe 5V-connector in het midden van de module zit die wordt gebruikt om de externe voeding op het bord aan te sluiten.
- Enable: Deze pin wordt gebruikt om de helderheid van het LED-paneel te regelen door er een PWM-puls aan te geven.
- A, B: dit worden multiplex-selectiepennen genoemd. Ze hebben digitale invoer nodig om multiplexrijen te selecteren.
- Shift Clock (CLK), Store Clock (SCLK) en Data: dit zijn de normale besturingspennen voor het schuifregister. Hier wordt een schuifregister 74HC595 gebruikt.
Koppeling van P10 LED-displaymodule naar Arduino:
Het verbinden van de P10 matrix display module met Arduino is een heel eenvoudig proces, in ons circuit hebben we pin 9 van de Arduino geconfigureerd als Enable pin, Pin 6 als Pin A, Pin 7 als pin B, Pin 13 is de CLK, Pin 8 is de SCLK, Pin 11 is de DATA, en ten slotte is Pin GND de GND-pin voor de module en Arduino, een volledige tabel hieronder legt de pinconfiguratie duidelijk uit.
P10 LED-module |
Arduino UNO |
INSCHAKELEN |
9 |
EEN |
6 |
B. |
7 |
CLK |
13 |
SCLK |
8 |
GEGEVENS |
11 |
GND |
GND |
Let op: Sluit de power terminal van de P10 module aan op een externe 5V stroombron, want 512 leds zullen veel stroom verbruiken. Het wordt aanbevolen om een 5V, 3 Amp DC-voeding aan te sluiten op een enkele P10 LED-module. Als u van plan bent om meer nummermodule aan te sluiten, vergroot dan uw SMPS-capaciteit dienovereenkomstig.
Componenten die nodig zijn voor het Arduino-scorebord
Omdat dit een heel eenvoudig project is, zijn de componentenvereisten erg algemeen, een lijst met vereiste componenten wordt hieronder weergegeven, je zou al het vermelde materiaal in je plaatselijke hobbywinkel moeten kunnen vinden.
- Arduino Nano
- P10 LED-matrixdisplay
- Breadboard
- 5V, 3 AMP SMPS
- HC-05 Bluetooth-module
- Verbindingsdraden
Schakelschema voor Arduino-scorebord
Het schema voor het Arduino LED-scorebord wordt hieronder weergegeven, omdat dit project heel eenvoudig is, ik heb de populaire software fritzing gebruikt om het schema te ontwikkelen.
De werking van het circuit is heel eenvoudig, we hebben een Android-applicatie en een Bluetooth-module, om succesvol te kunnen communiceren met de Bluetooth-module, moet je de HC-05-module koppelen met de Android-applicatie. Zodra we zijn verbonden, kunnen we de string verzenden die we willen weergeven, zodra de string is verzonden, zal Arduino de string verwerken en omzetten in een signaal dat de interne 74HC595-schakelweerstand kan begrijpen, nadat de gegevens naar de ploeg zijn verzonden weerstand, het is klaar om weer te geven.
Arduino Scorebord Code Uitleg
Na het succesvol afronden van de hardware setup is het nu tijd voor het programmeren van Arduino Nano. De stapsgewijze beschrijving van de code wordt hieronder gegeven. Je kunt ook de volledige Arduino-scorebordcode onderaan deze zelfstudie krijgen.
Allereerst moeten we alle bibliotheken opnemen. We hebben de DMD.h- bibliotheek gebruikt om het P10 led-display te bedienen. U kunt het downloaden en opnemen via de gegeven GitHub-link. Daarna moet u de TimerOne.h- bibliotheek opnemen, die zal worden gebruikt voor interruptprogrammering in onze code.
Er zijn veel fronten beschikbaar in deze bibliotheek, we hebben " Arial_black_16 " gebruikt voor dit project.
# omvatten
In de volgende stap wordt het aantal rijen en kolommen bepaald voor ons LED-matrixbord. We hebben in dit project slechts één module gebruikt, dus zowel de RIJ-waarde als de KOLOM-waarde kunnen worden gedefinieerd als 1.
#define ROW 1 #define COLUMN 1 #define FONT Arial_Black_16 DMD led_module (ROW, COLUMN);
Daarna worden alle variabelen die in de code worden gebruikt, gedefinieerd. Een tekenvariabele wordt gebruikt om seriële gegevens van de Android-app te ontvangen, twee gehele getallen worden gebruikt om scores op te slaan, en er wordt een array gedefinieerd waarin de uiteindelijke gegevens worden opgeslagen die op de matrix moeten worden weergegeven.
char input; int a = 0, b = 0; int vlag = 0; char cstr1;
Er is een functie scan_module () gedefinieerd, die continu controleert op inkomende gegevens van Arduino Nano via de SPI. Zo ja, dan zal het een interrupt activeren voor het uitvoeren van bepaalde gebeurtenissen zoals gedefinieerd door de gebruiker in het programma.
leegte scan_module () { led_module.scanDisplayBySPI (); }
Binnen setup () wordt de timer geïnitialiseerd en wordt de interrupt gekoppeld aan de functie scan_module, die eerder werd besproken. Aanvankelijk werd het scherm gewist met de functie clear screen (true), wat betekent dat alle pixels zijn gedefinieerd als UIT.
In de setup was seriële communicatie ook mogelijk met de functie Serial.begin (9600), waarbij 9600 de baudrate is voor Bluetooth-communicatie.
ongeldige setup () { Serial.begin (9600); Timer1. Initialiseren (2000); Timer1.attachInterrupt (scan_module); led_module.clearScreen (true); }
Hier wordt de beschikbaarheid van seriële gegevens gecontroleerd, of er geldige gegevens uit Arduino komen of niet. De ontvangen gegevens van de App worden opgeslagen in een variabele.
if (Serial.available ()> 0) { vlag = 0; input = Serial.read ();
Vervolgens werd de ontvangen waarde vergeleken met de vooraf gedefinieerde variabele. Hier, in de Android-applicatie, worden twee knoppen gebruikt om de scores voor beide teams te selecteren. Wanneer knop 1 wordt ingedrukt, wordt teken 'a' naar Arduino verzonden en wanneer knop2 wordt ingedrukt, wordt teken 'b' naar Arduino verzonden. Daarom worden in deze sectie deze gegevens vergeleken, en indien ze overeenkomen, worden de respectieve scorewaarden opgehoogd zoals getoond in de code.
if (input == 'a' && flag == 0) { flag = 1; a ++; } else if (input == 'b' && flag == 0) { flag = 1; b ++; } anders;
Vervolgens worden de ontvangen gegevens omgezet in een tekenreeks, aangezien de P10-matrixfunctie alleen het tekengegevenstype kan weergeven. Dit is de reden waarom alle variabelen worden geconverteerd en samengevoegd tot een tekenreeks.
(String ("HOME:") + String (a) + String ("-") + String ("AWAY:") + String (b)). ToCharArray (cstr1, 50);
Om vervolgens informatie in de module weer te geven, wordt het lettertype geselecteerd met de functie selection (). Vervolgens wordt de functie drawMarquee () gebruikt om de gewenste informatie op het P10-bord weer te geven.
led_module.selectFont (FONT); led_module.drawMarquee (cstr1,50, (32 * ROW), 0);
Ten slotte, omdat we een scrollende berichtweergave nodig hebben, heb ik een code geschreven om ons hele bericht van rechts naar links te verschuiven met een bepaalde punt.
lange start = millis (); lange timming = start; booleaanse vlag = false; while (! flag) { if ((timming + 30) <millis ()) { flag = led_module.stepMarquee (-1, 0); timming = millis (); } }
Dit markeert het einde van ons coderingsproces. En nu is het klaar om te uploaden.
Smartphone-gestuurd scorebord - testen
Na het uploaden van code naar Arduino, is het tijd om het project te testen. Daarvoor moet de Android-applicatie op onze smartphone zijn geïnstalleerd. U kunt de P10 Scorebord-applicatie downloaden via de gegeven link. Eenmaal geïnstalleerd, open je de app en het startscherm zou eruit moeten zien als de onderstaande afbeelding.
Klik op de SCAN- knop om de Bluetooth-module met app toe te voegen. Dit toont de lijst met gekoppelde Bluetooth-apparaten van de telefoon. Als je de HC-05 Bluetooth-module nog niet eerder hebt gekoppeld, koppel je de module met de Bluetooth-instelling van je telefoon en voer je deze stap uit. Het scherm ziet eruit zoals getoond:
Klik vervolgens in de lijst op "HC-05", aangezien dit de naam is van onze Bluetooth-module die hier wordt gebruikt. Nadat u erop hebt geklikt, wordt verbonden op het scherm weergegeven. Dan kunnen we doorgaan met het scorebord.
Klik op een willekeurige knop tussen "Thuis" en "Afwezig", zoals weergegeven in de app. Als de Home-knop is geselecteerd, wordt de score van Home verhoogd in het P10-display. Evenzo, als de knop Afwezig is geselecteerd, wordt de score Afwezig verhoogd. De onderstaande afbeelding laat zien hoe het laatste scherm eruitziet.
Ik hoop dat je het project leuk vond en iets nieuws hebt geleerd. Als je nog andere vragen hebt over het project, reageer dan hieronder of stel je vraag op ons forum.