Somo la 14/31-5: Mfano wa coding wa Arduino map() 2
Mafunzo haya yanaonyesha jinsi ya kutumia kazi ya Arduino map() kudhibiti mwangaza wa LED kwa kutumia thamani ya asilimia (0–100%) badala ya safu ghafi ya 0–255 inayohitajika na analogWrite(). Hii ni mbinu ya msingi ambayo hurahisisha msimbo wako na kuifanya iwe angavu zaidi, kwani unaweza kufikiria kwa asilimia badala ya thamani za byte za kiholela.
Ustadi huu ni muhimu kwa mradi wowote ambapo unahitaji kupima usomaji wa sensor au kudhibiti ishara. Kwa mfano, unaweza kuitumia kwa:
- Kudhibiti mwangaza wa LED au kasi ya motor kulingana na usomaji wa potentiometer.
- Kubadilisha pato la sensor ya joto (kwa mfano, 0–1023) hadi safu ya Celsius au Fahrenheit.
- Kuramisha pembejeo ya analog ya joystick ili kudhibiti nafasi ya motor ya servo.
- Kuunda kiolesura rahisi cha mtumiaji ambapo thamani ya asilimia inatumiwa kuweka kiwango cha nguvu cha kifaa.
Mwishoni mwa somo hili, utaweza kuandika msimbo safi zaidi, unaoweza kudumishwa kwa urahisi na rahisi kusoma na kurekebisha.
Vifaa/Vipengele
Mradi huu unatumia seti ndogo ya vipengele, na kuifanya kuwa bora kwa wanaoanza. Utahitaji:
- Bodi ya Arduino (kwa mfano, Uno).
- LED.
- Kipinga cha ohm 220.
- Waya za kurukia.
- Breadboard (hiari lakini inapendekezwa).
Mwongozo wa Uunganishaji
Uunganishaji wa mradi huu ni rahisi sana, kama inavyoonyeshwa kwenye video (katika video saa 20:47). LED imeunganishwa kwenye pini ya 3 ya Arduino kupitia kipinga cha kikomo cha sasa cha ohm 220.
Unganisha anode (mguu mrefu) wa LED kwenye pini ya 3 kupitia kipinga. Unganisha cathode (mguu mfupi) wa LED kwenye pini ya ardhi (GND) kwenye Arduino.
Maelezo ya Msimbo
Mfano huu unazingatia kazi iliyofafanuliwa na mtumiaji ambayo hurahisisha kudhibiti mwangaza wa LED. Msimbo umejengwa kuzunguka kazi maalum inayoitwa pwmValue(), ambayo ni ufunguo wa kufanya msimbo kuwa angavu.
Hebu tuchambue sehemu zinazoweza kusanidiwa za msimbo:
int LEDpin = 3; //defind pin for LED
Mstari huu unafafanua pini ya Arduino ambayo LED imeunganishwa. Unaweza kubadilisha nambari 3 hadi pini nyingine yoyote inayoweza kutumia PWM kwenye bodi yako ya Arduino.
Kiini cha mradi huu ni kazi maalum pwmValue(). Kazi hii inachukua thamani ya asilimia kama pembejeo yake na kuibadilisha hadi safu ya 0–255 inayotumiwa na analogWrite(). Hapa ndipo kazi ya map() inafanya uchawi wake.
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
}
Ili kutumia kazi hii, unaiita tu na asilimia yako ya mwangaza unayotaka. Kazi itarudisha thamani sahihi kwa analogWrite(). Kwa mfano, pwmValue(60) itarudisha 153, ambayo inalingana na 60% ya 255. Kazi pia inajumuisha ukaguzi wa usalama ili kuhakikisha asilimia ya pembejeo iko kati ya 0 na 100, ikirudisha 0 ikiwa iko nje ya safu hii.
Katika kazi ya setup(), unaweza kuona jinsi hii inavyotumiwa:
int b=5;//60% brightness
Serial.println( pwmValue(b) );//print it on serial monitor
analogWrite(LEDpin, pwmValue(b));// turn the LED on with 60% brightness
Hapa, kigezo b kimewekwa kwa asilimia yako ya mwangaza unayotaka. Kazi pwmValue(b) kisha inatumiwa kuchapisha thamani iliyopangwa kwenye Serial Monitor na kuweka mwangaza wa LED. Ili kubadilisha mwangaza wa LED, unahitaji tu kurekebisha thamani ya b. Kazi ya map() inashughulikia hesabu zote muhimu kwa ajili yako.
Mradi wa Moja kwa Moja/Maonyesho
Katika video, mtangazaji anaonyesha mradi kwa kubadilisha thamani ya kigezo b na kupakia msimbo kwenye Arduino. Wakati b imewekwa kwa 60, msimbo unaiweka kwenye 153 na LED inawaka kwa mwangaza wa 60%. Kubadilisha b hadi 90 kunaiweka kwenye 229, na kufanya LED iwe angavu zaidi. Kuiweka kwa 100 kunaiweka kwenye 255, ambayo ni mwangaza wa juu zaidi. Maonyesho yanaonyesha wazi jinsi kazi ya map() inavyokuruhusu kudhibiti LED kwa kutumia thamani ya asilimia angavu, wakati Serial Monitor inathibitisha thamani halisi ya 0–255 inayotumwa kwenye pini (katika video saa 21:29).
Miradi inayohusiana kutoka video hii
- Somo la 14/31-1: Arduino Millis (bila kuchelewa) na kazi za map | SunFounder Robojax
- Somo la 14/31-2: Mfano wa 2 wa usimbaji wa Arduino millis() na tukio
- Somo la 14/31-3: Mfano wa 3 wa usimbaji wa Arduino millis() na kitufe cha kushinikiza
- Somo la 14/31-4: Mfano wa 1 wa usimbaji wa Arduino map()
Sura
- [00:00] Utangulizi wa kazi za Millis na map
- [01:19] Millis ni nini na kwa nini uitumie
- [05:46] Kutumia Millis na tukio kuchukua hatua
- [08:35] Mfano wa 2 wa Millis na kitufe cha kushinikiza
- [12:14] Mfano wa 3 wa Millis kuangalia kwa kushinikiza kitufe mara mbili
- [17:20] Utangulizi wa kazi ya map()
- [19:47] Mfano wa msimbo wa kuweka asilimia kwa mwangaza wa LED
- [20:47] Maonyesho ya moja kwa moja ya kazi ya map()
- [22:41] Kuunda kazi maalum kushughulikia upangaji
/*
Lesson 14/31-5: Arduino coding map( ) example-2
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);//initialzie serial monitor with 9600 baud
pinMode(LEDpin, OUTPUT);//set pin as output
int b=5;//60% brightness
Serial.println( pwmValue(b) );//print it on serial monitor
analogWrite(LEDpin, pwmValue(b));// turn the LED on with 60% brightness
}
void loop() {
}
/*
* pwmValue(int percent)
* @param precent is value between 0 to 100
* @return it returns the mapped value from 0 to 255
* written by Ahmad Shamshiri on Dec 9, 2022
*
*/
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
} //pwmValue end
Tänker att du kanske behöver
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
Annat
Resurser och referenser
-
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