Programme (de base)

Programme servomoteur

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

int pos = 0;    // variable to store the servo position

void setup()
{
 
myservo.attach(9);  // attaches the servo on pin 9 to the servo object
myservo.attach(8);
}

void loop()
{
  for(pos = 0; pos < 150; pos += 1)  // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for(pos = 150; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees
  {                               
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}


Pour faire tourner le servo dans le sens inverse des aiguilles d'une montre, on utilise:servo.writeMicroseconds(1700);
delay(2000);

Dans le sens des aiguilles d'une montre, on utilisera :
servo.writeMicroseconds(1300);
delay(2000);

Pour arrêter le servo, la commande sera :
servo.writeMicroseconds(1500);
delay(2000);




 Deux servomoteurs à rotation continue sont connectés sur une broche E/S en sortie.
Les mouvements de base des servomoteurs sont testés
*/


// --- Fonctionnalités utilisées ---


// Utilise 2 servomoteurs à rotation continue

// -------- Circuit à réaliser ---------

// ******* ATTENTION : il est possible de connecter directement 3 ou 4 servomoteurs standards sur la carte Arduino
// Au-delà : utiliser une alimentation externe
// Connecter un servomoteur sur la broche 2
// Connecter un servomoteur sur la broche 3

// /////////////////////////////// 1. Entête déclarative ///////////////////////
// A ce niveau sont déclarées les librairies incluses, les constantes, les variables, les objets utiles...

// --- Déclaration des constantes ---

// --- Inclusion des librairies ---

#include <Servo.h> // librairie pour servomoteur

// --- Déclaration des constantes utiles ---

//--- Constantes utilisées avec le servomoteur
const int MAX_ARRIERE=1000; // largeur impulsion pour position ANGLE_MIN degrés du servomoteur
const int ARRET=1490; // largeur impulsion pour position ANGLE_MEDIANE degrés du servomoteur
const int MAX_AVANT=2000; // largeur impulsion pour position ANGLE_MAX degrés du servomoteur

// classiquement : centrage sur 1500 - maxi sens 1 = 1000 et maxi sens 2 = 2000

// --- Déclaration des constantes des broches E/S numériques ---

const int broche_servoG=2; // Constante pour la broche 2
const int broche_servoD=3; // Constante pour la broche 2

// --- Déclaration des constantes des broches analogiques ---


//const int Voie[6]={0,1,2,3,4,5}; //declaration constante de broche analogique


// --- Déclaration des variables globales ---

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---

//--- Création objet servomoteur
Servo servoD;  // crée un objet servo pour contrôler le servomoteur Droit
Servo servoG;  // crée un objet servo pour contrôler le servomoteur Gauche


// ////////////////////////// 2. FONCTION SETUP = Code d'initialisation //////////////////////////
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// --- ici instructions à exécuter 1 seule fois au démarrage du programme ---

// ------- Initialisation fonctionnalités utilisées -------  

Serial.begin(115200); // initialise connexion série matérielle à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission

//--- Initialisation Servomoteur
//servoG.attach(broche_servoG);  // attache l'objet servo à la broche de commande du servomoteur
//servoD.attach(broche_servoD);  // attache l'objet servo à la broche de commande du servomoteur


// ------- Broches en sorties numériques -------  
 pinMode (broche_servoD,OUTPUT); // Broche broche_servo configurée en sortie
 pinMode (broche_servoG,OUTPUT); // Broche broche_servo configurée en sortie

// ------- Broches en entrées numériques -------  

// ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques -------  

// ------- Initialisation des variables utilisées -------  

// ------- Codes d'initialisation utile -------  


} // fin de la fonction setup()
// ********************************************************************************

////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme //////////////////
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop(){ // debut de la fonction loop()


//--- Code d'exemple Servomoteur rotation continue

//--- servo G en avant
if (!servoG.attached()) servoG.attach(broche_servoG); // attache le servomoteur à la broche si pas attaché
servoG.writeMicroseconds(MAX_ARRIERE); // crée impulsion - NB inversé à gauche
delay(1000);
servoG.detach(); // détache le servomoteur de la broche  = arret propre servomoteur
delay(1000);

//--- servo D en avant
if (!servoD.attached()) servoD.attach(broche_servoD); // attache le servomoteur à la broche si pas attaché
servoD.writeMicroseconds(MAX_AVANT); // crée impulsion
delay(1000);
servoD.detach(); // détache le servomoteur de la broche  = arret propre servomoteur
delay(1000);

//--- servo G en arriere
if (!servoG.attached()) servoG.attach(broche_servoG); // attache le servomoteur à la broche si pas attaché
servoG.writeMicroseconds(MAX_AVANT); // crée impulsion - NB inversé à gauche
delay(1000);
servoG.detach(); // détache le servomoteur de la broche  = arret propre servomoteur
delay(1000);

//--- servo D en arriere
if (!servoD.attached()) servoD.attach(broche_servoD); // attache le servomoteur à la broche si pas attaché
servoD.writeMicroseconds(MAX_ARRIERE); // crée impulsion
delay(1000);
servoD.detach(); // détache le servomoteur de la broche  = arret propre servomoteur
delay(1000);

/* // arrete le moteur = instable...
mon_servo.writeMicroseconds(ARRET); // crée impulsion à partir valeur angle - plus précis que write()
delay(1000);
*/


delay(1000);


} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

 
___________________________________________________________________________________
==========================================================================
==========================================================================

Programme capteur ultrason HC-SR04

#define trigPin 10
#define echoPin 12

void setup() {

Serial.begin (9600);

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line

digitalWrite(trigPin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance >= 200 || distance <= 0){
Serial.println("Out of range");
}
else {
Serial.print(distance);

Serial.println(" cm");

}
delay(500);
}

=========================================================================
=========================================================================


programme télécommande IR

 #include "IRremote.h"
/*-----( Declare Constants )-----*/
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);           // create instance of 'irrecv'
decode_results results;            // create instance of 'decode_results'
/*-----( Declare Variables )-----*/

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);

  irrecv.enableIRIn(); // Start the receiver
}/*--(end setup )---*/

void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
//    Serial.println(results.value, HEX);  UN Comment to see raw values
    translateIR();
    irrecv.resume(); // receive the next value
  } 
}/* --(end main loop )-- */
/*-----( Declare User-written Functions )-----*/
void translateIR() // takes action based on IR code received
// describing KEYES Remote IR codes
{
  switch(results.value)
  {
  case 0xFF629D: Serial.println(" FORWARD"); break;
  case 0xFF22DD: Serial.println(" LEFT");    break;
  case 0xFF02FD: Serial.println(" -OK-");    break;
  case 0xFFC23D: Serial.println(" RIGHT");   break;
  case 0xFFA857: Serial.println(" REVERSE"); break;
  case 0xFF6897: Serial.println(" 1");    break;
  case 0xFF9867: Serial.println(" 2");    break;
  case 0xFFB04F: Serial.println(" 3");    break;
  case 0xFF30CF: Serial.println(" 4");    break;
  case 0xFF18E7: Serial.println(" 5");    break;
  case 0xFF7A85: Serial.println(" 6");    break;
  case 0xFF10EF: Serial.println(" 7");    break;
  case 0xFF38C7: Serial.println(" 8");    break;
  case 0xFF5AA5: Serial.println(" 9");    break;
  case 0xFF42BD: Serial.println(" *");    break;
  case 0xFF4AB5: Serial.println(" 0");    break;
  case 0xFF52AD: Serial.println(" #");    break;
  case 0xFFFFFFFF: Serial.println(" REPEAT");break; 
  default:
    Serial.println(" other button   ");
  }// End Case
  delay(500); // Do not get immediate repeat

} //END translateIR

/* ( THE END ) */
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_________________________________________________________________________________
Programme pour recevoir les codes sur l'ide arduino de n'importe quelle télécommande



Code: Tout sélectionner
#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Initialise le recepteur
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Recoit la valeur suivante
  }
}


Utilisation
Le serial monitor de l'IDE Arduino va directement afficher les codes reçus par la télécommande.
La petite led témoin sur la plaquette du récepteur s'allume lors d'une réception de signal de télécommande IR.

Aucun commentaire:

Enregistrer un commentaire