Tafuta Msimbo

Somo la 14/31-4: Mfano wa coding ya Arduino map() 1

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

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()

Bilder

Sunfounder car assembled
Sunfounder car assembled
919-Lesson 14/31-4: Arduino coding map() example 1
Språk: C++
/*
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() {

 
 }
 

Resurser och referenser

Filer📁

Användarhandbok