Ẹ̀kọ́ 14/31-5: Àpẹẹrẹ kóòdù Arduino map() 2
Ẹkọ yii ṣe afihan bi a ṣe le lo iṣẹ́ map() ti Arduino lati ṣakoso imọlẹ LED nipa lilo iye ogorun (0–100%) dipo iwọn 0–255 ti analogWrite() nilo. Eyi jẹ ilana ipilẹ ti o rọrun koodu rẹ ki o si jẹ ki o ni oye pupọ, nitori o le ronu ni awọn ogorun dipo awọn iye byte lainidii.
Ọgbọn yii ṣe pataki fun eyikeyi iṣẹ akanṣe nibiti o nilo lati ṣe iwọn awọn kika sensori tabi awọn ifihan agbara. Fun apẹẹrẹ, o le lo ọ lati:
- Ṣakoso imọlẹ LED tabi iyara motor da lori kika potentiometer.
- Yi abajade sensori iwọn otutu pada (fun apẹẹrẹ, 0–1023) si iwọn Celsius tabi Fahrenheit.
- Ya awọn ifihan analog joystick lati ṣakoso ipo servo motor.
- Ṣẹda wiwo olumulo ti o rọrun nibiti iye ogorun ti lo lati ṣeto ipele agbara ẹrọ kan.
Ni opin ẹkọ yii, iwọ yoo ni anfani lati kọ koodu ti o mọ, ti o rọrun lati ṣetọju ti o rọrun lati ka ati ṣatunṣe.
Ohun elo/Awọn ẹya
Iṣẹ akanṣe yii lo awọn ẹya ti o kere julọ, ti o jẹ ki o pe fun awọn olubere. Iwọ yoo nilo:
- Bọọdi Arduino kan (fun apẹẹrẹ, Uno).
- LED kan.
- Resistor 220-ohm kan.
- Awọn okun waya.
- Breadboard kan (aṣayan ṣugbọn a ṣeduro).
Itọsọna Asopọ
Asopọ fun iṣẹ akanṣe yii rọrun pupọ, gẹgẹ bi a ti ṣe afihan ninu fidio (ninu fidio ni 20:47). LED ti sopọ si pin 3 ti Arduino nipasẹ resistor 220-ohm ti o ni opin lọwọlọwọ.
So anode (ẹsẹ gigun) ti LED si pin 3 nipasẹ resistor. So cathode (ẹsẹ kukuru) ti LED si pin ilẹ (GND) lori Arduino.
Alaye Koodu
Apeere yii da lori iṣẹ́ ti olumulo ṣalaye ti o rọrun ṣiṣakoso imọlẹ LED. Koodu naa da lori iṣẹ́ aṣa ti a pe ni pwmValue(), eyiti o jẹ bọtini lati jẹ ki koodu naa ni oye.
Jẹ ki a ya awọn ẹya ti a le ṣatunṣe ti koodu naa:
int LEDpin = 3; // ṣalaye pin fun LED
Laini yii ṣalaye pin Arduino ti a ti so LED si. O le yi nọmba 3 pada si eyikeyi pin miiran ti o ni agbara PWM lori bọọdi Arduino rẹ.
Iṣupọ iṣẹ́ akanṣe yii ni iṣẹ́ aṣa pwmValue(). Iṣẹ́ yii gba iye ogorun kan gẹgẹbi titẹ sii rẹ ati yi i pada si iwọn 0–255 ti analogWrite() nlo. Eyi ni ibiti iṣẹ́ map() ti n ṣe iyanu rẹ.
int pwmValue(int percent)
{
if(percent >=0 && percent <=100)
{
return map(percent, 0,100, 0,255);
}else
{
return 0;
}
}
Lati lo iṣẹ́ yii, o kan pe o pẹlu iye ogorun imọlẹ ti o fẹ. Iṣẹ́ naa yoo da iye ti o tọ pada fun analogWrite(). Fun apẹẹrẹ, pwmValue(60) yoo da 153 pada, eyiti o baamu 60% ti 255. Iṣẹ́ naa tun pẹlu ayẹwo aabo lati rii daju pe iye ogorun titẹ sii wa laarin 0 ati 100, ti o da 0 pada ti o ba wa ni ita iwọn yii.
Ninu iṣẹ́ setup(), o le rii bi a ṣe nlo eyi:
int b=5;//60% imọlẹ
Serial.println( pwmValue(b) );//tẹ sita lori atẹle serial
analogWrite(LEDpin, pwmValue(b));// tan LED pẹlu imọlẹ 60%
Nibi, oniyipada b ti ṣeto si iye ogorun imọlẹ ti o fẹ. Iṣẹ́ pwmValue(b) ni a lo lati tẹ iye ti a ya sita si Atẹle Serial ati lati ṣeto imọlẹ LED. Lati yi imọlẹ LED pada, o kan nilo lati yi iye b pada. Iṣẹ́ map() n ṣe gbogbo awọn iṣiro pataki fun ọ.
Iṣẹ akanṣe Ifiwe/Afihan
Ninu fidio, olufihan ṣe afihan iṣẹ akanṣe naa nipa yiyipada iye oniyipada b ati gbigbe koodu si Arduino. Nigbati b ba ṣeto si 60, koodu naa ya a si 153 ati LED tan ni imọlẹ 60%. Yiyipada b si 90 ya a si 229, ti o jẹ ki LED han imọlẹ pupọ. Ṣeto si 100 ya a si 255, eyiti o jẹ imọlẹ ti o pọju. Afihan naa ṣe afihan kedere bi iṣẹ́ map() ṣe gba ọ laaye lati ṣakoso LED nipa lilo iye ogorun ti o ni oye, lakoko ti Atẹle Serial ṣe idaniloju iye 0–255 gangan ti a n fi ranṣẹ si pin (ninu fidio ni 21:29).
Awọn iṣẹ akanṣe ti o jọmọ lati fidio yii
- Ẹkọ 14/31-1: Arduino Millis (ko si idaduro) ati awọn iṣẹ́ map | SunFounder Robojax
- Ẹkọ 14/31-2: Arduino coding millis() apẹẹrẹ 2 pẹlu iṣẹlẹ
- Ẹkọ 14/31-3: Arduino coding millis() apẹẹrẹ 3 pẹlu bọtini titari
- Ẹkọ 14/31-4: Arduino coding map() apẹẹrẹ 1
Awọn ipin
- [00:00] Ifihan si awọn iṣẹ́ Millis ati map
- [01:19] Kini Millis ati idi ti o fi lo
- [05:46] Lilo Millis pẹlu iṣẹlẹ lati ṣe igbese
- [08:35] Millis apẹẹrẹ 2 pẹlu bọtini titari
- [12:14] Millis apẹẹrẹ 3 ṣiṣayẹwo fun awọn titari bọtini meji
- [17:20] Ifihan si iṣẹ́ map()
- [19:47] Apẹẹrẹ koodu fun yiya ogorun si imọlẹ LED
- [20:47] Afihan ifiwe ti iṣẹ́ map()
- [22:41] Ṣiṣẹda iṣẹ́ aṣa lati ṣakoso yiya
/*
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
Ohun ti o le nilo
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
Miiran
Orisun & itọkasi
-
Ita gbangbaPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Fáìlìs📁
Iwe Itọsọna Olumulo
-
SunFounder 3-in-1 Arduino Smart Car iwe afọwọkọIwe yii ṣe afihan igbese-igbese apejọ ti SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB