Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Napriek tomu, že kúpa je trochu nepríjemná (pretože nie je dostupná v mnohých internetových obchodoch), považujem za potrebné prediskutovať STM32 L432KC. Tento čip si zaslúži osobitnú náklonnosť, pretože je to ULTRA NÍZKA VÝKON. Avšak pre tých, ktorí nevlastnia STM32, môže byť v tomto projekte nahradený Arduino Uno. Za týmto účelom jednoducho zmeňte kolík vstupu prerušenia.
Vytvorme potom merač otáčok pomocou STM32 L432KC a infračerveného senzora. Ten istý program je možné použiť aj na meranie rýchlosti vetra. Funkcia nízkeho výkonu tohto mikrokontroléra je ideálna pre IOT.
Krok 1: Moduly
Pre náš dnešný projekt používame 8-miestny MAX7219CWG, ako aj infračervený modul.
Krok 2: STM32 NUCLEO-L432KC
Krok 3: Ukážka
V našej zostave máme STM32, 8-miestny displej a impulzný vstup. Infračervená karta má fototranzistor a diódu LED, ktorá zachytáva svetlo odrazom od bielej stuhy. Táto páska je pripevnená k kolesu a pri každom otočení generuje impulz, ktorý bude zachytený prerušením STM32.
V zostave máme diódu a kondenzátor, ktoré boli použité na zabránenie tomu, aby hluk signálu z čítania pásky dosiahol STM32, čo by spôsobilo jeho interpretáciu zapnutia a vypnutia.
Ukážka ukazuje náš projekt, ako aj merač Minipa (oba v prevádzke).
Krok 4: Zostavenie
Krok 5: Program
Urobíme program, v ktorom infračervený modul spustí prerušenie v STM32 L432KC každé „otočenie“, a urobíme výpočty na zobrazenie otáčok na displeji.
Krok 6: Knižnice
Pridajte nasledujúcu knižnicu „DigitLedDisplay“.
Jednoducho vstúpte do „Náčrtu >> Zahrnúť knižnice >> Spravovať knižnice …"
Krok 7: Zdrojový kód
Knižnice a premenné
Začnime zdrojovým kódom vrátane knižnice DigitLedDisplay. Ukážeme si zobrazovací objekt. Nastavil som kolík prerušenia, ktorý bude 12. Tiež zadám prchavý operátor pre počítadlo otáčok a čas, aby sa predišlo akýmkoľvek problémom s kolíziou.
/ * Zahrnúť knižnicu DigitLedDisplay */#zahrnúť "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 (modul modulu IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; // tempo
Nastaviť
V programe Setup konfigurujeme operáciu zobrazenia a tiež konfigurujeme prerušenie ako Rising.
void setup () {Serial.begin (115200); / * Nastavte minimálny jas: 1, maximálny: 15 */ ld.setBright (10); / * Nastaviť počet číslic */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); otáčky za minútu = 0; timeold = millis (); }
Slučka
Nakoniec určíme interval 1 z 1 minúty na aktualizáciu displeja. Po vyčistení obrazovky vytlačíme otáčky. Vykonávame funkciu, ktorú prerušení vyvolá. Vypočítame otáčky a čas aktualizácie.
void loop () {oneskorenie (1000); ld.clear (); ld.printDigit (ot / min); } neplatné interruptPin () {rpm = 60*1000/(millis () - timeold); timeold = millis (); }
Krok 8: Súbory
Stiahnite si súbory:
INO