Luka Code

Lis 14/31-5: Ndakisa ya Arduino map() ndakisa 2

Lis 14/31-5: Ndakisa ya Arduino map() ndakisa 2

Lithu eye ya koloba ndenge ya kosalela map() ya Arduino mpo na kokamba bongengi ya LED na kati ya mokapo ya % (0–100%) na esika ya 0–255 oyo analogWrite()() esengaka. Yango ezali tekiniki ya libula oyo ekokitisa kosala code na yo mpe ekosalisa yo kososola yango malamu, mpo okoki kokanisa na mokapo ya % na esika ya ba valeurs ya byte.

Sunfounder car esangisami

Likoki oyo ezali na tina mpo na projet nyonso oyo esengaka yo kobongola ba lectures ya senseur to ba signaux ya contrôle. Na ndakisa, okoki kosalela yango mpo na:

  • Kokamba bongengi ya LED to vitesse ya moteur na ndenge ya lecture ya potentiomètre.
  • Kobongola résultat ya senseur ya température (ndakisa, 0–1023) na degré Celsius to Fahrenheit.
  • Kobongola entrée analogique ya joystick mpo na kokamba position ya servo moteur.
  • Kosala interface ya utilisateur oyo mokapo ya % esalelami mpo na kokitisa niveau ya puissance ya appareil.

Na suka ya lesson oyo, okokoka kokoma code ya peto, oyo ekoki kobongisama malamu mpe oyo ezali pete mpo na kotanga mpe kobongola.

Matériel/Composants

Projet oyo esalelaka ba composants mingi te, yango wana ezali malamu mpo na ba débutants. Okosengela:

  • Arduino board (ndakisa, Uno).
  • LED moko.
  • Résistance ya 220 ohms.
  • Ba fils ya jumper.
  • Breadboard (oyo ezali na tina te kasi ezali malamu).

Guide ya câblage

Câblage ya projet oyo ezali pete mingi, ndenge emonisami na vidéo (na vidéo na 20:47). LED esangisami na pin 3 ya Arduino na nzela ya résistance ya 220 ohms oyo ekokitisa courant.

Kokangisa anode (longue jambe) ya LED na pin 3 na nzela ya résistance. Kokangisa cathode (court jambe) ya LED na pin ya terre (GND) na Arduino.

Explication ya Code

Ndakisa oyo elobelaka fonction oyo utilisateur akoma moko oyo ekokitisa kokamba bongengi ya LED. Code esalemi na fonction personnalisée oyo babengi pwmValue(), oyo ezali ntina ya kosala code ezala compréhensible.

Tókabola ba parties ya code oyo ekoki kobongisama:

int LEDpin = 3; //defini pin mpo na LED

Ligne oyo efinir pin ya Arduino oyo LED esangisami na yango. Okoki kobongola numéro 3 na pin mosusu oyo ekoki na PWM na Arduino board na yo.

Ntina ya projet ezali fonction personnalisée pwmValue(). Fonction oyo endimaka mokapo ya % lokola entrée na yango mpe ekobongola yango na intervalle 0–255 oyo analogWrite() esalelaka. Ezali awa oyo fonction map() esalaka magie na yango.

int pwmValue(int percent)
{
  if(percent >=0 && percent <=100)
  {
    return map(percent, 0,100,  0,255);
  }else
  {
    return 0;
  }
}

Mpo na kosalela fonction oyo, osengeli kaka kobenga yango na mokapo ya bongengi oyo olingi. Fonction ekopesa valeur ya malamu mpo na analogWrite(). Na ndakisa, pwmValue(60) ekopesa 153, oyo ekokani na 60% ya 255. Fonction ezali mpe na contrôle ya sécurité mpo na komeka soki mokapo ya entrée ezali entre 0 na 100, mpe ekopesa 0 soki ezali na libanda ya intervalle oyo.

Na fonction setup(), okoki komona ndenge oyo esalelami:

int b=5;//60% bongengi
Serial.println( pwmValue(b)   );//komisa yango na moniteur série
analogWrite(LEDpin, pwmValue(b));// pelisa LED na bongengi ya 60%

Awa, variable b esili kokitisama na mokapo ya bongengi oyo olingi. Fonction pwmValue(b) esalelami mpo na komisa valeur oyo ebongolami na moniteur série mpe mpo na kokitisa bongengi ya LED. Mpo na kobongola bongengi ya LED, osengeli kaka kobongola valeur ya b. Fonction map() esalaka ba calcul nyonso oyo esengeli mpo na yo.

Projet/Démonstration ya bomoi

Na vidéo, présentateur amonisaka projet na kobongola valeur ya variable b mpe na kotombola code na Arduino. Tango b esili kokitisama na 60, code ekobongola yango na 153 mpe LED ekopelaka na bongengi ya 60%. Kobongola b na 90 ekobongola na 229, mpe yango ekosalaka LED ezala kongenga mingi. Kokitisa yango na 100 ekobongola na 255, oyo ezali bongengi ya maximum. Démonstration emonisaka polele ndenge fonction map() esalelaka yo mpo na kokamba LED na mokapo ya % oyo ezali compréhensible, ntango moniteur série endimaka valeur ya 0–255 oyo etindami na pin (na vidéo na 21:29).

Ba projets oyo ekokani na vidéo oyo

Ba chapitres

  • [00:00] Introduction na ba fonctions Millis mpe map
  • [01:19] Nini Millis mpe mpo na nini kosalela yango
  • [05:46] Kosalela Millis na événement mpo na kosala action
  • [08:35] Millis ndakisa 2 na bouton poussoir
  • [12:14] Millis ndakisa 3 mpo na kotala soki bouton epesami mbala mibale
  • [17:20] Introduction na fonction map()
  • [19:47] Ndakisa ya code mpo na kobongola mokapo na bongengi ya LED
  • [20:47] Démonstration ya bomoi ya fonction map()
  • [22:41] Kosala fonction personnalisée mpo na kokamba mapping

Images

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

Mokili na bisika

Fichiers📁

Manuel de l'utilisateur