Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Éviter le retard

Composants et fournitures

Arduino UNO
× 1
LED 5 mm :Rouge
× 2

À propos de ce projet

Cette vidéo a été inspirée de questions que je sème en ligne. sur la façon de faire clignoter 2 LED à des taux différents.

Si nous voulions faire clignoter une led toutes les 1000 millis et la seconde toutes les 500 millis, nous pourrions toujours utiliser un délai, comme celui-ci, comme vous pouvez le voir, j'ai divisé le délai de 1000 millis de la première LED en 500 millis de clignotement du deuxième délai.

octet LED2 =12 ; void setup() { pinMode(LED_BUILTIN, OUTPUT); pinMode(LED2, OUTPUT);}void loop() { digitalWrite(LED_BUILTIN, HIGH); digitalWrite (LED2, HAUT); retard (500); digitalWrite (LED2, BAS); retard (500); digitalWrite(LED_BUILTIN, BAS); digitalWrite (LED2, HAUT); retard (500); digitalWrite (LED2, BAS); retard (500); } 

Mais que se passera-t-il si nous voulions faire clignoter le plus rapide en 300 millis au lieu des 500 millis. C'est ici que l'utilisation du délai rend les choses très compliquées voire impossibles.

Alors que faire? Arrêtez d'utiliser le délai !

Nous en avons même un exemple dans l'IDE Arduino et il s'appelle blinkwithoutdelay.

Je duplique la logique de la première LED sur une seconde et règle le délai souhaité.

Alors essayez-le aussi, et éloignez-vous du retard. Je dirai une dernière chose, le code que j'ai partagé est loin d'être parfait, et j'ai pensé à le changer mais, comme cette vidéo s'adresse aux personnes qui découvrent arduino, J'ai voté contre.

Code

  • Exemple de code
Exemple de code Arduino
const int ledPin =LED_BUILTIN;int ledState =LOW; non signé long précédentMillis =0 ; const intervalle long =1000 ; const int ledPin2 =12;int ledState2 =LOW; non signé long précédentMillis2 =0 ; const long intervalle2 =300 ; void setup() { pinMode(ledPin, OUTPUT); pinMode(ledPin2, OUTPUT);}void loop() { long currentMillis non signé =millis(); if (currentMillis - previousMillis>=intervalle) { previousMillis =currentMillis; if (ledState ==LOW) { ledState =HIGH; } else { ledState =LOW; } digitalWrite(ledPin, ledState); } //fin if if (currentMillis - previousMillis2>=interval2) { previousMillis2 =actuelMillis; if (ledState2 ==LOW) { ledState2 =HIGH; } else { ledState2 =FAIBLE; } digitalWrite(ledPin2, ledState2) ; } //fin si }

Schémas


Processus de fabrication

  1. Comment protéger l'aluminium de la corrosion
  2. Apprendre le cloud computing à partir de zéro
  3. 3 raisons de passer du C au C++
  4. Obtenir l'humidité/la température à partir du Web
  5. Projet IoT 101 :Diffuser la température de votre Raspberry Pi
  6. Transfert de données de capteur à partir d'une plaque Pi ppDAQC à l'aide de InitialState
  7. ROBOT WIFI RASPBERRY PI CONTRLÉ À PARTIR D'UN SMARTPHONE ANDROID
  8. Contrôle des délais Verilog
  9. D'où vient Sawing Concept ?