Advertisement
NicoVape

Untitled

Dec 24th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.61 KB | None | 0 0
  1. /**
  2.  * Coded by PtitJean
  3.  * Version : 1
  4.  * YouTube "Petit Jean s'éVape" : https://www.youtube.com/channel/UC9zN-UWnURGglR0BpOrwDVw
  5.  * Facebook : https://www.facebook.com/PetitJeanCVape/
  6.  *
  7.  * Firmware de démonstration pour la gestion d'une cigarette electronique avec un arduino Nano/Pro mini.
  8.  */
  9.  
  10. /**
  11.  * Arduino PIN
  12.  */
  13. const byte inputPotentiometer = 1;
  14. const byte inputSwitch = 8;
  15. const byte outputPWM = 5;
  16. const byte outputLed = 9;
  17.  
  18. /**
  19.  * Variables
  20.  */
  21.  int fire;
  22.  int previous;
  23.  int clicks;
  24.  int pwm;
  25.  int lock;
  26.  unsigned long int time;
  27.  const int pause = 100;
  28.  
  29.  /**
  30.  * Lit la valeur envoyée par le potard et converti le résultat en un nombre utilisable
  31.  * par le PWM interne du CPU
  32.  */
  33. int getPWMValue() {
  34.   return map( analogRead( inputPotentiometer ), 0, 1023, 0, 255 );
  35. }
  36.  
  37. /**
  38.  * Coupe le PWM et eteint la led
  39.  */
  40. void cutOff() {
  41.   digitalWrite( outputLed, LOW );
  42.   analogWrite( outputPWM, 0 );  
  43. }
  44.  
  45. /**
  46.  * Fait clignoter la led 3 fois pour indiquer qu'on est rentré dans le menu de verrouillage.
  47.  * Suivant l'état du chipset, verrouille ou deverrouille le switch
  48.  */
  49. void enterMenu() {
  50.   digitalWrite( outputLed, LOW );
  51.   delay( pause );
  52.   digitalWrite( outputLed, HIGH );
  53.   delay( pause );
  54.   digitalWrite( outputLed, LOW );
  55.   delay( pause );
  56.   digitalWrite( outputLed, HIGH );
  57.   delay( pause );
  58.   digitalWrite( outputLed, LOW );
  59.   delay( pause );
  60.   digitalWrite( outputLed, HIGH );
  61.   delay( pause );
  62.   digitalWrite( outputLed, LOW );
  63.   delay( pause );  
  64.  
  65.   lock = !lock;
  66.   clicks = 0;
  67.   time = millis();
  68. }
  69.  
  70. /**
  71.  *  Setup execution
  72.  */
  73. void setup() {
  74.   // Declaration des pin utilisée par la board
  75.   pinMode( inputPotentiometer, INPUT );
  76.   pinMode( inputSwitch, INPUT_PULLUP );
  77.   pinMode( outputPWM, OUTPUT );
  78.   pinMode( outputLed, OUTPUT );
  79.  
  80.   // Initialisation
  81.   fire = 1;
  82.   previous = 0;
  83.   clicks = 0;
  84.   pwm = 0;
  85.   lock = 1;
  86.   time = millis();
  87. }
  88.  
  89. /**
  90.  * Main
  91.  */
  92. void loop() {
  93.   // Lecture input
  94.   pwm = getPWMValue();
  95.   fire = digitalRead( inputSwitch );
  96.  
  97.   // Par mesure de précaution
  98.   if ( fire == 0 )
  99.     cutOff();
  100.    
  101.   /*
  102.    * Gestion switchs
  103.    */
  104.   if ( (fire == 0) && (previous == 1) )
  105.     { clicks++; }
  106.   else if ( fire == 1 ) {
  107.     if ( (millis() - time) > 1500 ) {
  108.       clicks = 0;
  109.       time = millis();
  110.     }
  111.   }
  112.  
  113.   /*
  114.    * Gestion Vape
  115.    */
  116.   if ( (clicks == 1) && (lock == 0) ) {
  117.     digitalWrite( outputLed, HIGH );
  118.     analogWrite( outputPWM, pwm );
  119.   } else if ( clicks == 3 )
  120.     { enterMenu(); }
  121.   else
  122.     { cutOff(); }
  123.  
  124.   // Sauvegarde derniere action switch
  125.   previous = fire;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement