Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Čeprav je nakup nekoliko neprijeten (ker ni na voljo v številnih spletnih trgovinah), se mi zdi potrebno razpravljati o STM32 L432KC. Ta čip si zasluži posebno naklonjenost, saj je ULTRA NIZKA MOČ. Za tiste, ki nimajo STM32, pa ga lahko v tem projektu nadomesti Arduino Uno. Če želite to narediti, preprosto spremenite pin vhoda Interrupt.
Ustvarimo merilnik vrtljajev z uporabo STM32 L432KC in infrardečega senzorja. Ta isti program se lahko uporablja tudi za merjenje hitrosti vetra. Funkcija nizke porabe energije tega mikrokrmilnika je kot nalašč za IOT.
1. korak: moduli
Za današnji projekt uporabljamo 8-mestno MAX7219CWG in infrardeči modul.
2. korak: STM32 NUCLEO-L432KC
3. korak: demonstracija
V sestavi imamo STM32, 8-mestni zaslon in impulzni vhod. Infrardeča kartica ima fototranzistor in LED, ki ujame svetlobo tako, da se odbije od belega traku. Ta trak je pritrjen na kolo in bo ob vsakem zavoju ustvaril impulz, ki ga bo zajel prekinitev STM32.
V sklopu imamo diodo in kondenzator, ki sta bila uporabljena za preprečevanje, da bi šum signala za branje traku prišel do STM32, zaradi česar bi lahko interpretiral vklop in izklop.
Predstavitev prikazuje naš projekt in števec Minipa (oba v delovanju).
4. korak: Montaža
5. korak: Program
Izvedli bomo program, v katerem bo infrardeči modul sprožil prekinitev v STM32 L432KC pri vsakem "zavoju" in naredili bomo izračune za prikaz RPM na zaslonu.
6. korak: Knjižnice
Dodajte naslednjo knjižnico "DigitLedDisplay".
Preprosto odprite "Skica >> Vključi knjižnice >> Upravljanje knjižnic …"
7. korak: izvorna koda
Knjižnice in spremenljivke
Začnimo izvorno kodo, vključno s knjižnico DigitLedDisplay. Prikazali bomo prikazni objekt. Nastavil sem prekinitveni zatič, ki bo 12. Prav tako vnesem nestanovitni operater za števec vrtljajev in čas, da se izognem kakršnim koli težavam.
/ * Vključi knjižnico DigitLedDisplay */#vključuje "DigitLedDisplay.h"/ * Arduino Pin za prikaz pin 7 v DIN, 6 v CS, 5 v CLK */// DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // pino de interrupção (módulo IR) hlapni nepodpisani int rpm; // contador de rpm volatile unsigned longold; // tempo
Nastaviti
V nastavitvah konfiguriramo prikazno operacijo in prekinitev konfiguriramo kot naraščajočo.
void setup () {Serial.begin (115200); / * Nastavite svetlost min: 1, max: 15 */ ld.setBright (10); / * Nastavite število števk */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); vrtljajev = 0; časovno obdobje = milis (); }
Zanka
Nazadnje določimo interval 1 v 1 minuti za posodobitev zaslona. Po čiščenju zaslona natisnemo število vrtljajev. Izvajamo funkcijo, ki jo bo klic poklical. Izračunamo RPM in čas posodobitve.
void loop () {zakasnitev (1000); ld.clear (); ld.printDigit (vrt / min); } void interruptPin () {rpm = 60*1000/(millis () - časovno obdobje); časovno obdobje = milis (); }
8. korak: Datoteke
Prenesite datoteke:
JAZ NE