1.11.9

News

Page  1 sur 3  > >>

2019-01-16
Catégorie : Arduino
Posté par : xavier
Un Circuit imprimé pour plusieurs sketches
2018-06-07
Catégorie : Arduino
Posté par : xavier
Des pistes pour developper un projet a base d'Arduino
2017-09-23
Catégorie : Expositions
Posté par : xavier

Les 4/5 Novembre 2017, au parc Savoie Expo de Chambéry (Savoie), se tiendra l'exposition Savoie Modelisme.

CMS - 1.11.9 - Bartolome
 

Un petit pas en avant

 

Un petit pas en avant

Prenons une décision...

Quelques commandes pour continuer:

if

Permet de tester une variable, et de poursuivre si la condition est satisfaite.

if(test) {};

if...else

Permet de traiter le cas ou la condition n'est pas satisfaite.

if(test) {} else {};

 

Programme N°3:

#define led 13

int cpt; // Compteur

void setup()

{
  
pinMode(led,OUTPUT);
}

void loop() {
    cpt +=1;
   if (cpt%2==0) {
      digitalWrite(led,HIGH);
   } else {
      digitalWrite(led,LOW);
   }
   delay(500);
}

Commentaires

Le programme est encore simple... Il permet de faire clignoter la led de votre Arduino comme le premier programme.

A remarquer:

- Cette fois la variable cpt est définie en dehors se loop. Sa portée n'est pas limitée au sous programme, même si cela n'a aucun intérêt: ça ne gène pas.

- L'indentation se poursuit, mettant en évidence les niveaux d'imbrications.

- On utilise le % (modulo) , c'est à dire le reste de la division par …

13 % 3 vaut 1, en effet 13=3*4+1

- Pour modifier le rapport cyclique, on peux maintenant modifier la ligne if (cpt%2==0)

en if (cpt%3==0)  pour obtenir un rapport cyclique de 1/3

On passe en Analogique?

En fait, c'est pas vraiment de l'analogique, sauf si on fait une moyenne ...

Quelques commandes pour continuer:

analogWrite() - PWM

C'est l’équivalent de digitalWrite() en analogique

analogWrite(Pin, Valeur);

analogRead()

C'est l’équivalent de digitalRead() en analogique

variable=analogRead(potmeter);

il faut que variable soit préalablement défini:

int variable;

for()

Permet de faire une suite d'opérations un certain nombre de fois

for(int i = min ; i <= max; i +=pas)

 

 

Programme N°4:

#define led 9

void setup() {
   pinMode(led,OUTPUT);
}

void loop() {
   // Fait croître de min à max par pas de 5 points:
   for(int Valeur = 0 ; Valeur <= 255; Valeur +=5) {
      // Affecte la valeur a la led (de 0 à 255):
      analogWrite(led, Valeur);
      // attente 30 millisecondes pour voir l'intensité croître
      delay(30);
   }

   // Fait décroître de max à min par pas de 5 points:
   for(int Valeur = 255 ; Valeur >= 0; Valeur -=5) {
      // Affecte la valeur a la led (de 0 à 255):
      analogWrite(led, Valeur);
      // attente 30 millisecondes pour voir l'intensité décroître
      delay(30);
   }
}

Commentaires

Le programme n'est pas très compliqué... Il permet de faire croître puis décroître l'intensité d'une led de votre Arduino.

 

A remarquer:

- Nous avons utilisé la boucle for pour faire évoluer la variable entière Valeur depuis 0 à 255 par pas de 5: 0,10,15,20,25,30 … 250,255.

- La valeur 255 est bien atteinte puisque le test est >=. Si le = avait été oublié, on se serait arrêté à 250!

- Pour aller dans l'autre sens, tout a été inversé, le pas est négatif.

- On n'utilise plus la led 13, qui est remplacée par la sortie 9. C'est une sortie PWM, seule capable de fournir un signal pseudo analogique. Les sortie compatibles sont clairement identifiées sur votre Arduino.

- Il faut câbler la led comme suit, avec une résistance de 220 ohms, en faisant attention au sens de la led:

 

Pour aller plus loin:

Le montage utilisé est celui avec la led a la masse, en bas a gauche. Essayez donc les 2 autre!

En remplaçant la led par un servomoteur, on pilotera la position de servomoteur. (voir montage au programme 10!)

Previous page: Premiers pas  Page suivante : Et si on dialoguais avec le PC …