Wa Koodu

Ẹ̀kọ́ 14/31-5: Àpẹẹrẹ kóòdù Arduino map() 2

Ẹ̀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.

Ọkọ Sunfounder ti a kojọ

Ọ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

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

Aworan

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
920-Lesson 14/31-5: Arduino coding map() example 2
Ede: C++
/*
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
 

Orisun & itọkasi

Fáìlìs📁

Iwe Itọsọna Olumulo