Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Edhe pse është disi një telash për të blerë (sepse nuk është i disponueshëm në shumë dyqane të internetit), e kam të nevojshme të diskutoj STM32 L432KC. Ky çip meriton dashuri të veçantë, pasi është POWER I ULTRA I ULT. Sidoqoftë, për ata që nuk zotërojnë STM32, ai mund të zëvendësohet në këtë projekt nga Arduino Uno. Për ta bërë këtë, thjesht ndryshoni pinin e hyrjes Interrupt.
Le të krijojmë pastaj një njehsor RPM duke përdorur STM32 L432KC dhe një sensor infra të kuqe. Ky program i njëjtë mund të përdoret gjithashtu për të matur shpejtësinë e erës. Karakteristika me fuqi të ulët të këtij mikrokontrolluesi është e përkryer për IOT.
Hapi 1: Modulet
Për projektin tonë sot, ne përdorim MAX7219CWG 8-shifror, si dhe Modulin Infrared.
Hapi 2: STM32 NUCLEO-L432KC
Hapi 3: Demonstrim
Në asamblenë tonë, ne kemi STM32, ekranin me 8 shifra dhe hyrjen e pulsit. Karta infra të kuqe ka një fototransistor dhe një LED që kap dritën duke kërcyer nga një fjongo e bardhë. Kjo kasetë është ngjitur në një rrotë dhe, në çdo kthesë, do të krijojë një puls, i cili do të kapet nga ndërprerja STM32.
Ne kemi një diodë dhe një kondensator në montim që janë përdorur për të parandaluar që zhurma e sinjalit të leximit të shiritit të arrijë në STM32, gjë që do ta bëjë atë të interpretojë ndezjen dhe fikjen.
Demonstrimi tregon projektin tonë, si dhe njehsorin Minipa (të dy në punë).
Hapi 4: Asambleja
Hapi 5: Programi
Ne do të bëjmë një program në të cilin moduli infra të kuqe do të shkaktojë një ndërprerje në STM32 L432KC çdo "kthesë", dhe ne do të bëjmë llogaritjet për të shfaqur RPM në ekran.
Hapi 6: Bibliotekat
Shtoni bibliotekën e mëposhtme "DigitLedDisplay".
Thjesht hyni në "Skiconi >> Përfshi Bibliotekat >> Menaxhoni Bibliotekat …"
Hapi 7: Kodi Burimor
Bibliotekat dhe Variablat
Le të fillojmë kodin burimor duke përfshirë bibliotekën DigitLedDisplay. Ne do të tregojmë objektin e shfaqjes. Vendosa kunjin e ndërprerjes, i cili do të jetë 12. Gjithashtu, fut një operator të paqëndrueshëm si për numëruesin RPM ashtu edhe për kohën në mënyrë që të shmang ndonjë problem përplasjeje.
/ * Përfshini Bibliotekën DigitLedDisplay */#përfshijnë "DigitLedDisplay.h"/ * Arduino Pin për të shfaqur Pin 7 në DIN, 6 në CS, 5 në 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) i paqëndrueshëm i panënshkruar në rpm; // contador de rpm të paqëndrueshme të panënshkruara për një kohë të gjatë; // temp
Konfigurimi
Në Setup, ne konfigurojmë funksionimin e ekranit, si dhe konfigurojmë ndërprerjen si Rising.
void setup () {Serial.begin (115200); / * Vendosni ndriçimin min: 1, max: 15 */ ld.setBright (10); / * Vendosni numrin e shifrave */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; koha = millis (); }
Lak
Së fundi, ne përcaktojmë intervalin 1 në 1 minutë për të azhurnuar ekranin. Pas pastrimit të ekranit, ne shtypim RPM. Ne kryejmë funksionin që ndërprerja do të thërrasë. Ne llogarisim RPM dhe kohën e përditësimit.
void loop () {vonesë (1000); ld. e qartë (); ld.printDigit (rpm); } void interruptPin () {rpm = 60*1000/(millis () - afati kohor); koha = millis (); }
Hapi 8: Skedarët
Shkarkoni skedarët:
INO