INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Alhoewel dit 'n oorlas is om te koop (omdat dit nie in baie internetwinkels beskikbaar is nie), vind ek dit nodig om STM32 L432KC te bespreek. Hierdie chip verdien spesiale liefde, want dit is ULTRA LOW POWER. Vir diegene wat nie die STM32 besit nie, kan dit in hierdie projek vervang word deur die Arduino Uno. Om dit te doen, verander eenvoudig die pen van die Interrupt -invoer.
Kom ons maak dan 'n RPM -meter met behulp van die STM32 L432KC en 'n infrarooi sensor. Dieselfde program kan ook gebruik word om windspoed te meet. Die lae-krag funksie van hierdie mikrobeheerder is perfek vir IOT.
Stap 1: Modules
Vir ons projek vandag gebruik ons die 8-syfer MAX7219CWG, sowel as die infrarooi module.
Stap 2: STM32 NUCLEO-L432KC
Stap 3: Demonstrasie
In ons vergadering het ons die STM32, die 8-syfer-skerm en die polsinvoer. Die infrarooi kaart het 'n fototransistor en 'n LED wat die lig vang deur 'n wit lint af te weerkaats. Hierdie band word aan 'n wiel vasgemaak en sal by elke draai 'n pols genereer wat deur die STM32 -onderbreking vasgelê word.
Ons het 'n diode en 'n kapasitor in die samestelling wat gebruik is om te verhoed dat die geraas van die bandleessignaal die STM32 bereik, wat dit die aan- en afskakeling kan laat interpreteer.
Die demonstrasie toon ons projek, sowel as die Minipa -meter (albei in werking).
Stap 4: Montering
Stap 5: Programmeer
Ons sal 'n program doen waarin die infrarooi module elke "draai" 'n onderbreking in die STM32 L432KC sal veroorsaak, en ons sal die berekeninge doen om die RPM op die skerm te vertoon.
Stap 6: Biblioteke
Voeg die volgende "DigitLedDisplay" -biblioteek by.
Gaan eenvoudig na "Skets >> Sluit biblioteke in >> Beheer biblioteke …"
Stap 7: Bronkode
Biblioteke en veranderlikes
Kom ons begin die bronkode, insluitend die DigitLedDisplay -biblioteek. Ons sal die vertoonvoorwerp wys. Ek stel die onderbrekingspen in, wat 12 sal wees. Ek betree 'n onbestendige operateur vir beide die toerusting en die tyd om botsings te voorkom.
/ * Sluit DigitLedDisplay -biblioteek in */#sluit in "DigitLedDisplay.h"/ * Arduino Pin to Display Pin 7 to DIN, 6 to CS, 5 to CLK */// DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // pino de interrupção (IR IR) vlugtige ongetekende int rpm; // contador de rpm vlugtige ongetekende lang tyd; // tempo
Stel op
In die opstelling stel ons die skermbewerking op, sowel as die onderbreking as stygend.
ongeldige opstelling () {Serial.begin (115200); / * Stel die helderheid min: 1, maks: 15 */ ld.setBright (10); / * Stel die syfergetal in */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; tydsaam = millis (); }
Lus
Uiteindelik bepaal ons die interval van 1 in 1 minuut om die skerm op te dateer. Nadat ons die skerm skoongemaak het, druk ons die RPM af. Ons voer die funksie uit wat die onderbreking sal noem. Ons bereken RPM en opdateringstyd.
leemte lus () {vertraging (1000); ld.clear (); ld.printDigit (rpm); } leegte interruptPin () {rpm = 60*1000/(millis () - tydoud); tydsaam = millis (); }
Stap 8: lêers
Laai die lêers af:
EK NEE