Advertisement
Bukisoh

V3

Mar 11th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <Servo.h>
  4.  
  5.  
  6. LiquidCrystal_I2C lcd(0x27,20,4);
  7. Servo esc;   // Création de l'objet permettant le contrôle de l'ESC
  8.  
  9.  
  10.  
  11. int n = 0;
  12.  
  13.  
  14. void setup() {
  15.   lcd.setCursor(0,0);
  16.   lcd.print("Ubat ");
  17.  
  18.   lcd.setCursor(1,0);
  19.   lcd.print("VMot ");
  20.  
  21.   esc.attach(9);
  22. }
  23.  
  24.  
  25.  
  26. void loop() {
  27.  
  28.  PWM();  
  29.  n++;
  30.  
  31.     if (n = 10 ){   //vitesse  de rafraichissement +grand -> - vite
  32.         amp();     //affichage
  33.         volt();
  34.         vit();
  35.         PWMA();
  36.        
  37.         n = 0;
  38.  }
  39.  
  40. }
  41. float PWM()
  42. {
  43.   float PWM = analogRead(A1);
  44.    
  45.     PWM = map(PWM, 0, 1024, 0, 179);
  46.     esc.write(PWM);
  47.  
  48.  
  49.   }
  50.  
  51. float PWMA()
  52. {
  53.   float PWMA = 0.0;
  54.       PWMA = map(PWM, 0, 178, 0,100);
  55.          lcd.setCursor(1,5);
  56.          lcd.print(PWMA);
  57.  
  58.   }
  59. float amp()
  60. {
  61.   float amp = analogRead(A3);
  62.     map(amp,0,1024,0,100);
  63.    
  64.     return amp;
  65.   }
  66.  
  67. float volt()
  68. {
  69.   float R1 = 997000.0;                                       // valeur resistance
  70.   float R2 = 98500.0;
  71.   float vout = 0.0;
  72.   float vin = 0.0;
  73.  
  74.      float value = analogRead(A0);
  75.  
  76.      vout = (value * 5.0) / 1024.0;  
  77.      vin = vout / (R2/(R1+R2));
  78.      vin = vin * 10;
  79.      vin = map(vin, 210, 294 , 0, 100);
  80.      vin = constrain(vin,0,100);
  81.         lcd.setCursor(0,5);
  82.         lcd.print(vin);
  83.  
  84.         return vin;
  85.   }
  86. float vit()
  87. {
  88.     float perimetre = 1.25;                         // perimetre position aimant
  89.       int PIN_SIGNAL = 2;                           //pin inchangeable
  90.          int periode = pulseIn(PIN_SIGNAL, HIGH, 10000000);
  91.          periode = perimetre / periode ;
  92.        
  93.             return periode;
  94.  
  95.   }
  96.  
  97.  
  98.   // https://hobbyking.com/fr_fr/turnigy-dlux-60a-mk2-brushless-speed-controller-w-8a-s-bec-and-data-logging-2s-8s.html
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement