Luka Code

Lis ya 14/31-3: Kode Arduino millis() ndakisa 3 na push button

Lis ya 14/31-3: Kode Arduino millis() ndakisa 3 na push button

Osili osili yo wuaki yo lingi na yo esengeli ete Arduino na yo ekanisa tango likambo moko esalemaki—lokola kobeta bouton—mpe na sima asala likambo moko na tango ya sikisiki, wana nyonso mosala mosusu ya programme na yo ezali kokoba kotambola malamu? Oyo ezali motambo ya kala na programme ya Arduino, mpe ndenge ya kosalela yango ezali fonction millis(). Mateya oyo, oyo ezali eteni ya cours ya Robojax ya Arduino, ezali kolakisa ndakisa ya mosala: koyeba soki bouton ya push epresaki mbala ya mibale sima na tango ya secondes 5 esili koleka banda mbala ya liboso. Technika oyo ezali ya ntina mingi mpo na kosala ba projets oyo ezali koyanola malamu, oyo ezali kopekisa programme ete ezala bloqué tango timing ezali na ntina.

Moto ya Sunfounder esangisami

Mokemoke ya kosalela millis() mpo na kolandela tango na kokanga programme te ezali ya ntina mingi mpo na ba applications mingi ya bomoi ya mokolo na mokolo. Tala makanisi mwa moke mpo na kopesa yo inspiration na ba projets na yo moko:

  • Ba interfaces ya bouton oyo ezali na debounce: Sala système moko oyo esengeli ete bouton ekangama na tango moko ya sikisiki (ndakisa, secondes 3) mpo na kofungola appareil moko, mpo na kopekisa ba press ya libaku.
  • Ba actions oyo elandani: Sala système moko oyo likambo moko, lokola déclenchement ya capteur ya mouvement, ezali kobongisa action ya mibale oyo esalemaka kaka soki likambo mosusu esalemaki na kati ya fenêtre ya tango moko.
  • Ba timers ya interaction ya utilisateur: Sala projet moko oyo esengeli "confirmation" (lokola kobeta bouton mbala ya mibale) na kati ya tango moko mpo na kosala fonction ya ntina, lokola kotinda commande to kobanda moteur.
  • Gating ya capteur: Sala ete signal ya liboso ya capteur moko ebandisa fenêtre ya tango, na kati na yango, lecture ya capteur ya mibale oyo ekeseni ekoki kozala ya solo to ekoki kozanga.

Matériel oyo esengeli

Projet oyo ezali kosalela ba composants ya kit ya SunFounder 3-in-1 ya Arduino, oyo ezali ressource ya malamu mpo na koyekola. Okosengela:

  • Bouton ya Arduino (Uno, Nano, etc.)
  • Bouton ya push ya mwa tango
  • Ba fils ya jumper

Guide ya câblage

Câblage mpo na ndakisa oyo ezali pete mingi, merci na ba résistances internes ya pull-up ya Arduino, oyo elimisi posa ya résistance externe. (Na vidéo na 08:29)

  • Kangisa lokolo moko ya bouton ya push na pin ya GND ya Arduino.
  • Kangisa lokolo mosusu ya bouton ya push na pin digitale 2 ya Arduino.

Na kosalela INPUT_PULLUP, pin yango ezali kati na 5V, yango wana ezali kotanga HIGH na tango ya kokamwa. Tango bouton epresami, ezali kokangisa pin na GND, mpe yango ekosala ete etanga LOW. Oyo nde logique oyo tokosalela na code.

Explication ya code

Motema ya projet oyo ezali logique oyo elandaka mbala ya liboso ya kobeta bouton mpe na sima etyolaka soki mbala ya mibale epresami sima na intervalle ya tango moko. Code yango esalemi mpo na kozala non-blocking, elingi koloba ete ekopekisa te exécution ya misala misusu na kati ya loop() na yo.

Na likolo ya sketch, okomona ba variables ya ntina oyo utilisateur akoki kobongola mpo na koyangela comportement ya timing:

unsigned long event = 5000;// secondes 5
unsigned long buttonPushed =0;
  • event: Oyo ezali variable ya ntina mingi ya timing. Ezali kotia durée ya délai na millisecondes. Na ndakisa oyo, ezali na 5000, oyo ekokani na secondes 5. Okoki kobongola valeur oyo na durée mosusu mpo na kokokisa posa ya projet na yo.
  • buttonPushed: Variable oyo esalelamaki lokola drapeau mpe timbre ya tango. Ebandi na 0 mpe ebongolami na valeur ya millis() mbala ya liboso oyo bouton epresami. Tango oyo ebombamaki esalelamaki na sima mpo na koyeba différence mpo na kotala mbala ya mibale.

Logique na fonction loop() ezali kosala na ba étapes mibale. Ya liboso, ezali kotanga état ya bouton mpe, soki epresami mbala ya liboso (pb == LOW && buttonPushed == 0), ezali kokoma tango ya sik’oyo na millis() na variable buttonPushed. Étape ya mibale ezali kotala soki bouton ezali kaka epresami mpe soki mbala ya liboso ekomamaki. Soki ezali bongo, ezali koyeba différence ya tango kati na tango ya sik’oyo mpe tango ya mbala ya liboso. Soki différence yango ezali mingi to ekokani na tango ya event na yo, ezali kosala action—na ndakisa oyo, ezali na konyata message na Serial Monitor.

Démonstration ya projet na bomoi

Na vidéo, code yango ekomami na Arduino, mpe Serial Monitor efungwami mpo na kotala ndenge ezali kosala. (Na vidéo na 16:03) Okomona valeur ya millis() ezali konyata na tango nyonso, kolakisa tango oyo eleki banda programme ebandaki. Tango obeti bouton mbala ya liboso, message lokola First push at:5019 ekomami. Soki obeti bouton lisusu mpe okangi yango na tango koleka secondes 5 banda mbala ya liboso, message Action after 5 seconds of first push ekomami. Oyo ezali kolakisa ete action yango etriggeramaka kaka soki mbala ya mibale epresami sima na délai oyo etiamaki esili koleka.

Pouvoir ya méthode oyo ezali ete ligne Serial.println(millis()) na likolo ya loop ezali kokoba kotambola na kozanga interruption, kolakisa ete logique ya timing ezali kopekisa code mosusu te. Oyo nde avantage ya ntina mingi ya kosalela millis() na esika ya fonction delay().

Ba projets oyo elandani na vidéo oyo

Bikabu

  • [00:00] Bokotisi na millis() mpe na cours oyo
  • [01:19] Nini millis() mpe mpo na nini kosalela yango?
  • [03:06] Ndakisa ya liboso ya misala: kobimisa millis()
  • [05:46] Kosalela millis() mpo na kobimisa evenema nsima ya second 5
  • [08:29] Ndakisa 2: Bokangeli ya bouton na delay ya second 5
  • [12:14] Ndakisa 3: Komona bokangeli ya mibale ya bouton nsima ya delay
  • [17:20] Bokotisi na fonction map()
  • [19:47] Ndakisa ya misala ya kobongola pourcentages ya bongengi ya LED

Images

Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
Sunfounder car assembled
918-Lesson 14/31-3: Arduino coding millis() example 3 with push button
Langue: C++
/*
Lesson 14/31: Arduino coding millis() example 3 with push button
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/>.
 */


unsigned long event = 5000;// 5 seconds
unsigned long buttonPushed =0;

void setup() {
  Serial.begin(9600);//initialize serial monitor
  Serial.println("Introduction to millis");
  pinMode(2,INPUT_PULLUP);
  


}

void loop() {
  // ilmoFan.com example-2 millis()
  Serial.println(millis());
  int pb = digitalRead(2);// read pin 2
  if(pb ==LOW && buttonPushed ==0)
  {
    buttonPushed =millis();
    Serial.print("First push at:");
    Serial.println(buttonPushed);
  }
  if( pb ==LOW &&  buttonPushed >0 )
  {
   unsigned long difference = millis()- buttonPushed;
      if( difference >= event)
      {
        Serial.println("Action after 5 seconds of first push");
      }
  }
  
}

Mokili na bisika

Fichiers📁

Manuel de l'utilisateur