Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Garchi sotib olish biroz noqulaylik tug'dirsa -da (chunki u ko'plab internet -do'konlarda mavjud emas), men STM32 L432KC ni muhokama qilishni lozim topdim. Bu chip ULTRA LOW POWER bo'lgani uchun alohida mehrga loyiqdir. Biroq, STM32 -ga ega bo'lmaganlar uchun uni ushbu loyihada Arduino Uno bilan almashtirish mumkin. Buni amalga oshirish uchun, faqat uzilish kiritish pinini o'zgartiring.
Keling, STM32 L432KC va infraqizil sensor yordamida RPM o'lchagichni yarataylik. Xuddi shu dastur shamol tezligini o'lchash uchun ham ishlatilishi mumkin. Ushbu mikrokontrollerning kam quvvatli xususiyati IOT uchun juda mos keladi.
1 -qadam: Modullar
Bugungi loyihamiz uchun biz 8 xonali MAX7219CWG va infraqizil moduldan foydalanamiz.
2-qadam: STM32 NUCLEO-L432KC
3 -qadam: Namoyish
Bizning yig'ilishimizda bizda STM32, 8-raqamli displey va pulsli kirish mavjud. Infraqizil kartochkada fototransistor va oq lentadan sakrash orqali nurni ushlab turuvchi LED mavjud. Bu tasma g'ildirakka mahkamlanadi va har burilishda puls hosil qiladi, uni STM32 uzilishi ushlab oladi.
Bizda lenta o'qish signalining shovqini STM32 ga etib bormasligi uchun ishlatilgan diod va kondansatör mavjud, bu uni yoqish va o'chirishni tushuntiradi.
Namoyish bizning loyihamizni, shuningdek Minipa hisoblagichini ko'rsatadi (ikkalasi ham ishlaydi).
4 -qadam: yig'ish
5 -qadam: Dastur
Biz infraqizil modul STM32 L432KC -ning har bir "burilishida" uzilishni keltirib chiqaradigan dasturni bajaramiz va RPMni displeyda ko'rsatish uchun hisob -kitoblarni qilamiz.
6 -qadam: kutubxonalar
Quyidagi "DigitLedDisplay" kutubxonasini qo'shing.
"Sketch >> kutubxonalarni qo'shish >> kutubxonalarni boshqarish …" ga kiring.
7 -qadam: Manba kodi
Kutubxonalar va o'zgaruvchilar
Keling, DigitLedDisplay kutubxonasini o'z ichiga olgan manba kodini boshlaylik. Biz ko'rsatiladigan ob'ektni ko'rsatamiz. Men uzilish pinini o'rnatdim, u 12 bo'ladi. Bundan tashqari, to'qnashuv muammosini oldini olish uchun, RPM hisoblagichi uchun ham, vaqt uchun ham o'zgaruvchan operatorni kiritaman.
/ * DigitLedDisplay kutubxonasini qo'shing */#"DigitLedDisplay.h" ni o'z ichiga oladi/ * 7 -pinni DINga, 6 -ni CS -ga, 5 -ni CLK -ga ko'rsatish uchun Arduino -pin */// 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) uchuvchi belgisiz int rpm; // contador de rpm uchuvchan, uzoq vaqt imzolanmagan; // temp
Sozlash
O'rnatishda biz ekranning ishlashini sozlaymiz, shuningdek uzilishni Rising sifatida sozlaymiz.
void setup () {Serial.begin (115200); / * Yorqinlikni min: 1, maksimal: 15 */ ld.setBright (10); / * Raqamlar sonini o'rnating */ ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; vaqt tugashi = millis (); }
Loop
Nihoyat, displeyni yangilash uchun 1 daqiqada 1 oralig'ini aniqlaymiz. Ekranni tozalashdan so'ng biz RPM -ni chop etamiz. Biz uzilish chaqiradigan funktsiyani bajaramiz. Biz RPM va yangilanish vaqtini hisoblaymiz.
void loop () {kechiktirish (1000); ld.clear (); ld.printDigit (rpm); } void interruptPin () {rpm = 60*1000/(millis () - vaqt); vaqt tugashi = millis (); }
8 -qadam: fayllar
Fayllarni yuklab oling:
INO