Somo la 14/31-4: Mfano wa coding ya Arduino map() 1
Mafunzo haya ni sehemu ya mfululizo wa programu za Arduino na yanalenga matumizi ya vitendo ya kazi ya map(). Katika somo hili, utajifunza jinsi ya kubadilisha thamani ya asilimia (0–100) kuwa thamani ya PWM (Pulse Width Modulation) (0–255) ili kudhibiti mwangaza wa LED. Badala ya kuhesabu kwa mkono kwamba 60% ni sawa na 153, kazi ya map() inashughulikia ubadilishaji wa mstari kwako, na kufanya msimbo wako kuwa safi na rahisi kueleweka.
Mbinu hii ni muhimu kwa matumizi mengi ya ulimwengu halisi ambapo unahitaji kutafsiri usomaji wa sensorer au pembejeo za mtumiaji katika safu tofauti. Kwa mfano, unaweza kuitumia kwa:
- Kudhibiti kasi ya motor ya DC kulingana na usomaji wa potentiometer.
- Kuonyesha thamani ghafi ya sensor ya joto kwa kipimo cha 0-100%.
- Kubadilisha viwianishi vya joystick kuwa pembe za motor ya servo.
- Kurekebisha mwangaza wa LED kulingana na sensor ya mwanga wa mazingira.
- Kubadilisha usomaji wa analogi wa 0-5V kuwa thamani ya dijiti ya 0-1023 au kinyume chake.
Vifaa/Vipengele
Ili kufuata mradi huu, utahitaji vipengele vifuatavyo:
- Bodi ya Arduino (Uno, Nano, n.k.)
- LED
- Kipinga cha ohm 220
- Waya za kurukia
- Breadboard (hiari, lakini inapendekezwa)
Mwongozo wa Uunganishaji
Katika video, mwalimu anaonyesha mradi kwa kutumia mpangilio wa wiring kutoka somo la awali kuhusu kufifisha LED. Mzunguko ni rahisi: unganisha anode (mguu mrefu) wa LED kwa kipinga cha ohm 220, na unganisha mwisho mwingine wa kipinga hicho kwa pini ya dijiti 3 kwenye Arduino. Unganisha cathode (mguu mfupi) wa LED moja kwa moja kwenye pini ya ground (GND) kwenye Arduino.
Maelezo ya Msimbo
Msimbo wa mfano huu ni mfupi sana, na mantiki kuu iko katika kazi ya setup(). Hebu tuchambue sehemu zinazoweza kubadilishwa na mtumiaji.
int LEDpin = 3; //pini iliyofafanuliwa kwa LED
Mstari huu unafafanua pini ya Arduino ambayo LED yako imeunganishwa. Katika mfano huu, imewekwa kwenye pini 3, ambayo ni pini inayoweza kutumia PWM, muhimu kwa pato la analogi. Unaweza kubadilisha nambari hii ikiwa utaunganisha LED yako kwenye pini nyingine ya PWM.
int b=8;//60% mwangaza
Hii ni kigezo muhimu utakachobadilisha ili kujaribu viwango tofauti vya mwangaza. Inawakilisha mwangaza unaotakiwa kama asilimia. Maoni katika msimbo yanasema "60%", lakini thamani imewekwa kuwa 8 kwa madhumuni ya maonyesho katika video. Unaweza kubadilisha hii kuwa nambari yoyote kati ya 0 na 100. Kwa mfano, kuweka b = 60 kungewakilisha kiwango cha mwangaza cha 60%.
int brightness = map(b, 0, 100, 0,255);
Hii ni kiini cha somo. Kazi ya map() inachukua thamani yako ya asilimia (b) na kuibadilisha kutoka safu yake ya awali (0 hadi 100) hadi safu mpya inayolengwa (0 hadi 255). Matokeo yanahifadhiwa katika kigezo cha brightness, ambacho kinatumika kuandika thamani ya analogi kwenye pini ya LED.
analogWrite(LEDpin, brightness);// washa LED kwa mwangaza wa 60%
Hatimaye, mstari huu unatuma thamani iliyobadilishwa kwenye pini ya LED kwa kutumia analogWrite(). Hii inaweka mzunguko wa kazi wa LED, na kudhibiti mwangaza wake kwa ufanisi. Uzuri wa mbinu hii ni kwamba unahitaji tu kubadilisha kigezo cha b ili kudhibiti LED, na kazi ya map() inashughulikia mahesabu yote muhimu.
Mradi wa Moja kwa Moja/Maonyesho
Katika video, mwalimu anapakia msimbo na kuonyesha athari ya kubadilisha kigezo cha b. Wakati b imewekwa kuwa 8, mfuatiliaji wa serial unachapisha thamani iliyobadilishwa ya 20, na LED inaonekana kuwa hafifu. Kubadilisha b kuwa 90 kunatoa thamani iliyobadilishwa ya 229, na kufanya LED iwe angavu zaidi. Kuweka b kuwa 100 kunabadilisha hadi 255, ambayo ni mwangaza kamili. Maonyesho haya ya vitendo yanaonyesha wazi jinsi kazi ya map() inavyorahisisha mchakato wa kudhibiti matokeo ya analogi kwa thamani za asilimia zinazoeleweka kwa mtumiaji.
Miradi inayohusiana na video hii
- Somo la 14/31-1: Arduino Millis (bila kuchelewa) na kazi za map | SunFounder Robojax
- Somo la 14/31-2: Msimbo wa Arduino millis() mfano 2 na tukio
- Somo la 14/31-3: Msimbo wa Arduino millis() mfano 3 na kitufe cha kushinikiza
- Somo la 14/31-5: Msimbo wa Arduino map() mfano 2
Sura
- [00:00] Utangulizi wa Kozi ya Arduino na Robojax
- [01:19] Ni nini millis() na kwa nini uitumie
- [05:46] Mfano 1: Kutumia millis() kwa tukio la muda
- [08:29] Mfano 2: Kutumia millis() na kitufe cha kushinikiza
- [12:14] Mfano 3: Kugundua kubonyeza kitufe cha pili baada ya kuchelewa
- [17:20] Utangulizi wa kazi ya map()
- [19:47] Uchambuzi wa msimbo wa mfano wa map()
- [20:41] Maonyesho ya moja kwa moja ya kazi ya map()
/*
Lesson 14/31: Arduino coding map( ) example-1
Get this code and watch video Download and resource page https://robojax.com/RJT597
YouTube video https://www.youtube.com/watch?v=lqgzQohNiIM
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int LEDpin = 3; //defind pin for LED
void setup() {
Serial.begin(9600);//initialize serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=8;//60% brightness
int brightness = map(b, 0, 100, 0,255);
Serial.println(brightness);//print it on serial monitor
analogWrite(LEDpin, brightness);// turn the LED on with 60% brightness
}
void loop() {
}
Tänker att du kanske behöver
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Resurser och referenser
-
DokumentationDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Extern.Purchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Filer📁
Användarhandbok
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB