Explication détaillée du servo de contrôle Arduino (y compris le code)

Table des matières

 1. Introduction à l'appareil à gouverner

 2 Connexion du circuit matériel

3 éléments : L'appareil à gouverner tourne d'avant en arrière

3.1 Code de contrôle

3.2 Résultats des simulations

4 Projet 2 : Appareil à gouverner à commande lumineuse

4.1 Connexion du circuit matériel

4.2 Code de contrôle

4.3 Résultats des simulations

5 Projet 3 : servo de contrôle du port série et lumière LED intégrée

        5.1 Résultats des simulations

6 Explication des fonctions utilisées


 1. Introduction à l'appareil à gouverner

        Le servo est un servomoteur de position (angle). L'appareil à gouverner n'est qu'un nom populaire et son essence est un servomoteur. Il est largement utilisé dans les systèmes de contrôle où l'angle doit être constamment modifié et maintenu. Tels que les robots télécommandés, les modèles d'avions, etc.

        L'angle de rotation de l'appareil à gouverner est de 0 à 180° et sa structure interne comprend trois parties : moteur, circuit de commande et structure mécanique. Le moteur a trois fils de sortie, qui sont connectés respectivement aux fils VCC, GNG et de signal. Il existe deux principaux formats de brochage :

  1. Marron, rouge, orange (le marron se connecte à GND, le rouge se connecte à VCC et l'orange se connecte au signal) ;
  2. Rouge, noir, jaune (le rouge est connecté à VCC, le noir est connecté à GND et le jaune est connecté au signal).
Figure 1 Image réelle de l'appareil à gouverner

 2 Connexion du circuit matériel

Arduino

Fonction l'appareil à gouverner Fonction
VCC électrode positive rouge électrode positive
GND électrode négative brun électrode négative
D9 (MLI) Broche numérique (PWM) Orange (transmission du signal) entrée de signal

3 éléments : L'appareil à gouverner tourne d'avant en arrière

        Fonction de mise en œuvre : l'appareil à gouverner tourne d'avant en arrière de 0 à 180°.

3.1 Code de contrôle

#include <Servo.h>            //加载文件库
int pos = 0;
Servo myservo;

void setup()
{
  myservo.attach(9, 500, 2500);          //修正脉冲宽度
}

void loop()
{
  for (pos = 0; pos <= 180; pos += 1) {       //pos+=1等价于pos=pos+1
    myservo.write(pos);
    delay(15);					
  }
  for (pos = 180; pos >= 0; pos -= 1) {
    myservo.write(pos);
    delay(15); 					
  }
}

3.2 Résultats des simulations

Figure 2 Schéma de connexion et de simulation de l'appareil à gouverner

4 Projet 2 : Appareil à gouverner à commande lumineuse

        Fonction de mise en œuvre : à mesure que l'intensité lumineuse augmente, le servo tourne en conséquence. Lorsque la valeur analogique générée par A0 est supérieure à 500, la LED programmable intégrée à 13 broches émet de la lumière.

4.1 Connexion du circuit matériel

Arduino

Fonction l'appareil à gouverner Fonction
VCC électrode positive rouge électrode positive
GND électrode négative brun électrode négative
D9 (MLI) Broche numérique (PWM) Orange (transmission du signal) entrée de signal
A0 Interface analogique (photorésistance)

4.2 Code de contrôle

#include <Servo.h>
const int sensorPin = A0;       

int led=13;         
int pos = 0;
Servo myservo;//创建舵机对象

void setup(){
  myservo.attach(9, 500, 2500);
  pinMode(led,OUTPUT);
  Serial.begin(9600);
}

void loop(){
  int val=analogRead(sensorPin);
  if(val>500){
    digitalWrite(led,HIGH);
  }
  else{
    digitalWrite(led,LOW);
  }
  
  int yp=map(val,0,1023,0,180);
    //数值转换,将[0,1023]产生的模拟值转换成[0,180]中的值
  Serial.println(yp);
  myservo.write(yp);
  delay(10);
}

4.3 Résultats des simulations

Figure 4 Simulation d'un appareil à gouverner commandé par la lumière

5 Projet 3 : servo de contrôle du port série et lumière LED intégrée

    Les fonctions de mise en œuvre sont les suivantes :

        Lorsque le port série entre 2, la LED s'allume et le port série imprime « ON » en même temps, et le servo tourne à 90°.

        Lorsque le port série entre 4, la LED s'éteint, et le port série imprime « OFF » en même temps, et le servo tourne à 180°.


#include <Servo.h>
int led4=4;       
 
int led=13;         
Servo myservo;//创建舵机对象
 
void setup(){
  myservo.attach(9, 500, 2500);
  pinMode(led,OUTPUT);
  pinMode(led4,OUTPUT);
  Serial.begin(9600);
}
 
void loop(){
  if(Serial.available()>0){
    char c=Serial.read();
    if(c=='2'){
      digitalWrite(led,HIGH);
      digitalWrite(led4,HIGH);
      myservo.write(90);
      Serial.println("ON");
    }
   	else if(c=='4'){
      digitalWrite(led,LOW);
      digitalWrite(led4,LOW);
      myservo.write(180);
      Serial.println("OFF");
    }
  }
}

5.1 Résultats des simulations

Figure 4 Simulation du servo de contrôle du port série

6 Explication des fonctions utilisées

  1. Serial.begin() est la fonction d'initialisation du port série, qui définit le taux de transmission.
  2. La différence entre Serial.println() et Serial.print() est que le premier a une fonction de saut de ligne, alors que le second n'en a pas.
  3. Servo.h est le fichier de bibliothèque de servos, qui peut être chargé directement dans Aruidno IDE.
  4. Servo myservo est un objet créé, qui est essentiellement un nom. Myservo peut être nommé par lui-même.
  5. myservo.attach(9) représente la broche qui contrôle le servo.
  6. myservo.write(45) signifie que le servo tourne à une position de 45°, plutôt que de tourner à 45°.
  7. La fonction map() est très utilisée pour convertir des valeurs dans une certaine plage en valeurs dans une autre plage.

       Le format de syntaxe est le suivant : val =map(value, fromLow, fromHigh, toLow, toHigh);

        Val et value sont des variables du même type, fromHigh et fromLow sont les valeurs maximales et minimales de la variable a, toHigh et toLow sont les valeurs maximales et minimales de la variable val. La fonction map() peut mettre à l'échelle la valeur d'un certain intervalle avec la valeur d'un autre intervalle en fonction du rapport de plage et attribuer la valeur à val.

Je suppose que tu aimes

Origine blog.csdn.net/m0_58857684/article/details/125740665
conseillé
Classement