Pub

mardi 9 mars 2021

myTinyPLC : feu tricolore simple

 Maintenant que les temporisations fonctionnent bien depuis la nouvelle version 1.2.1, voici le petit exercice classique de programmation d'un feu tricolore.

On veut que la LED rouge s'allume pendant 4 secondes, ensuite la LED verte pendant 3 secondes, puis la LED jaune pendant une seconde et rebouclage du cycle rouge, vert, jaune, etc...

Il y a bien sûr différentes solutions au problème, je vous en propose une.

On va utiliser trois temporisations qui seront enclenchées au départ en même temps, mais qui se déclencheront ensuite selon des durées différentes. Au déclenchement de la dernière temporisation, on retrouvera les conditions initiales et le cycle recommencera.

On va utiliser les trois mémoires m6, m7 et m8 et leurs temporisations associées tm6, tm7 et tm8.
Les durées des temporisations sera :
 - pour tm6, une durée de 4 secondes.
 - pour tm7, 
une durée de 7 secondes.
 - pour tm8, une duére de 8 secondes.


Schéma électrique :


|    ___        ___        ___  
|    tm6        tm7        tm8          m6    | timer 4 s
+----]/[--------]/[--------]/[----+----( )----+
|                                 |           |
|                                 |     m7    | timer 7 s
|                                 +----( )----+
|                                 |           |
|                                 |     m8    | timer 8 s
|                                 +----( )----+
|                                             |
|                                             |
|    tm6                                o1    | red LED
+----] [-------------------------------( )----+   4 s
|    ___                                      |
|    tm6        tm7                     o3    | green LED
+----]/[--------] [--------------------( )----+   3 s
|    ___        ___                           |
|    tm6        tm7        tm8          o2    | yellow LED
+----]/[--------]/[--------] [---------( )----+   1 s
|                                             |


Le programme IL pour myTinyPLC :

  //
  // Simple traffic light
  // IL program for myTinyPLC v.1.2
  //
  // Set timer 6 delay at 4 seconds
  //
  stp[1] = 4; // number 4
  stp[2] = 66; // Set timer 6 delay
  //
  // Set timer 7 delay at 5 seconds
  //
  stp[3] = 7; // number 7
  stp[4] = 67; // Set timer 7 delay
  //
  // Set timer 8 delay at 8 seconds
  //
  stp[5] = 8; // number 8
  stp[6] = 68; // Set timer 8 delay
  //
  stp[7] = 26; // Read timer 6
  stp[8] = 83; // NOT
  stp[9] = 27; // Read timer 7
  stp[10] = 83; // NOT
  stp[11] = 28; // Read timer 8
  stp[12] = 83; // NOT
  stp[13] = 81; // AND
  stp[14] = 81; // AND
  stp[15] = 56; // Write memory 6
  stp[16] = 57; // Write memory 7
  stp[17] = 58; // Write memory 8
  //
  stp[18] = 26; // Read timer 6
  stp[19] = 41; // Write output 1 (red LED)
  //
  stp[20] = 83; // NOT
  stp[21] = 27; // Read timer 7
  stp[22] = 81; // AND
  stp[23] = 43; // Write output 3 (green LED)
  //
  stp[24] = 26; // Read timer 6
  stp[25] = 83; // NOT
  stp[26] = 27; // Read timer 7
  stp[27] = 83; // NOT
  stp[28] = 28; // Read timer 8
  stp[29] = 81; // AND
  stp[30] = 81; // AND
  stp[31] = 42; // Write output 2 (yellow LED)
  //
  stp[32] = 99; // END


**** Guy F8ABX - 09/03/2021 ****

Aucun commentaire:

Enregistrer un commentaire