Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Nors pirkti yra šiek tiek nemalonu (nes jo nėra daugelyje internetinių parduotuvių), manau, kad būtina aptarti STM32 L432KC. Šis lustas nusipelno ypatingos meilės, nes jis yra ULTRA LOW POWER. Tačiau tiems, kurie neturi STM32, jį šiame projekte gali pakeisti „Arduino Uno“. Norėdami tai padaryti, tiesiog pakeiskite „Interrupt“įvesties kaištį.
Tada sukurkime apsisukimų dažnio matuoklį naudodami STM32 L432KC ir infraraudonųjų spindulių jutiklį. Ta pati programa taip pat gali būti naudojama vėjo greičiui matuoti. Šio mikrovaldiklio mažos galios funkcija puikiai tinka IOT.
1 žingsnis: moduliai
Šiandien savo projektui naudojame 8 skaitmenų MAX7219CWG, taip pat infraraudonųjų spindulių modulį.
2 žingsnis: STM32 NUCLEO-L432KC
3 žingsnis: demonstravimas
Mūsų surinkime turime STM32, 8 skaitmenų ekraną ir impulsų įvestį. Infraraudonųjų spindulių kortelėje yra fototransistorius ir šviesos diodas, kuris užfiksuoja šviesą atšokdamas nuo baltos juostelės. Ši juosta pritvirtinta prie rato ir kiekviename posūkyje sukels impulsą, kurį užfiksuos STM32 pertrauka.
Mes turime diodą ir kondensatorių, kurie buvo naudojami tam, kad juostos skaitymo signalo triukšmas nepasiektų STM32, o tai leistų interpretuoti įjungimą ir išjungimą.
Demonstracija rodo mūsų projektą, taip pat „Minipa“skaitiklį (abu veikia).
4 žingsnis: Surinkimas
5 žingsnis: programa
Mes atliksime programą, kurioje infraraudonųjų spindulių modulis suaktyvins STM32 L432KC pertraukimą kiekvieną „posūkį“, ir atliksime skaičiavimus, kad ekrane būtų rodomas RPM.
6 žingsnis: bibliotekos
Pridėkite šią „DigitLedDisplay“biblioteką.
Tiesiog eikite į „Eskizas >> Įtraukti bibliotekas >> Tvarkyti bibliotekas …“
7 žingsnis: šaltinio kodas
Bibliotekos ir kintamieji
Pradėkime šaltinio kodą, įskaitant „DigitLedDisplay“biblioteką. Parodysime rodomą objektą. Nustatiau pertraukimo kaištį, kuris bus 12. Be to, įvedu nepastovų operatorių tiek RPM skaitikliui, tiek laikui, kad išvengčiau susidūrimo problemų.
/ * Įtraukti „DigitLedDisplay“biblioteką */#include "DigitLedDisplay.h"/ * „Arduino“kaištis, kad būtų rodomas kaištis nuo 7 iki DIN, nuo 6 iki CS, nuo 5 iki CLK */// „DigitLedDisplay“ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // pino de interrupção (metodulo IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; // tempas
Sąranka
Sąrankoje mes sukonfigūruojame ekrano veikimą, taip pat pertrauką kaip kylančią.
void setup () {Serial.begin (115200); / * Nustatykite ryškumą min: 1, maks: 15 */ ld.setBright (10); / * Nustatykite skaičių skaičių */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); aps / min = 0; timeold = milis (); }
Kilpa
Galiausiai nustatome intervalą 1 per 1 minutę, kad atnaujintume ekraną. Išvalę ekraną, spausdiname RPM. Mes atliekame funkciją, kurią iškvies pertraukėjas. Mes apskaičiuojame RPM ir atnaujinimo laiką.
tuštumos kilpa () {uždelsimas (1000); ld.clear (); ld.printDigit (aps./min.); } void interruptPin () {aps/min = 60*1000/(milis () - laikas); timeold = milis (); }
8 žingsnis: failai
Atsisiųskite failus:
AŠ NE