Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Kuigi ostmine on mõnevõrra ebameeldiv (kuna seda pole paljudes internetipoodides saadaval), pean vajalikuks arutleda STM32 L432KC üle. See kiip väärib erilist kiindumust, kuna see on ULTRA LOW POWER. Kuid neile, kes ei oma STM32, saab selle projektiga asendada Arduino Uno. Selleks muutke lihtsalt sisendi Katkestus tihvti.
Loome siis pöördemõõturi, kasutades STM32 L432KC ja infrapunaandurit. Sama programmi saab kasutada ka tuule kiiruse mõõtmiseks. Selle mikrokontrolleri väikese võimsusega funktsioon sobib ideaalselt IOT-i jaoks.
Samm: moodulid
Tänase projekti jaoks kasutame 8-kohalist MAX7219CWG ja infrapunamoodulit.
2. samm: STM32 NUCLEO-L432KC
3. samm: tutvustamine
Meie koostes on STM32, 8-kohaline ekraan ja impulsssisend. Infrapunakaardil on fototransistor ja valgusdiood, mis püüavad valgust valge lindi eest põrgatades. See lint on kinnitatud ratta külge ja genereerib igal pöördel impulsi, mille STM32 katkestus tabab.
Meil on komplektis diood ja kondensaator, mida kasutati selleks, et vältida lindi lugemissignaali müra jõudmist STM32 -ni, mis paneks selle sisse ja välja lülitama.
Demonstratsioon näitab meie projekti ja ka Minipa mõõturit (mõlemad töötavad).
4. samm: kokkupanek
Samm: programm
Teeme programmi, milles infrapunamoodul käivitab katkestuse STM32 L432KC -s igal "pöördel" ja teeme arvutused RPM kuvamiseks ekraanil.
6. samm: raamatukogud
Lisage järgmine kogu "DigitLedDisplay".
Avage lihtsalt jaotis "Visand >> Kaasa raamatukogud >> Raamatukogude haldamine …"
Samm 7: lähtekood
Raamatukogud ja muutujad
Alustame lähtekoodi, sealhulgas DigitLedDisplay kogu. Näitame kuvatavat objekti. Seadsin katkestustihvti, milleks on 12. Samuti sisestan kokkupõrkeprobleemide vältimiseks lenduva operaatori nii RPM -i loenduri kui ka aja jaoks.
/ * Kaasa DigitLedDisplay raamatukogu */#include "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 (meetodulo IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; // tempo
Seadistamine
Seadistuses konfigureerime kuvamistoimingu ja katkestuse Rising.
void setup () {Serial.begin (115200); / * Määra heledus min: 1, max: 15 */ ld.setBright (10); / * Määra numbrite arv */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); p / min = 0; timeold = millis (); }
Loop
Lõpuks määrame ekraani värskendamiseks intervalli 1 minut. Pärast ekraani puhastamist prindime RPM. Me täidame funktsiooni, mida katkestus kutsub. Arvutame RPM -i ja värskendusaega.
void loop () {delay (1000); ld.clear (); ld.printDigit (p / min); } void interruptPin () {p/min = 60*1000/(millis () - aeg); timeold = millis (); }
8. samm: failid
Laadige failid alla:
INO