Bukisoh

UART esc reading

May 28th, 2019
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include <Servo.h>
  2. #include <Wire.h>
  3. #include <LiquidCrystal_I2C.h>
  4. #include <config.h>
  5. #include <datatypes.h>
  6. #include <vesc_uart.h>
  7. #include <SPI.h>
  8.  
  9. mc_values VescMeasuredValues;
  10.  
  11. float current = 0.0;           //measured battery current
  12. float motor_current = 0.0;     //measured motor current
  13. float voltage = 0.0;           //measured battery voltage
  14. float c_speed = 0.0;           //measured rpm * Pi * wheel diameter [km] * 60 [minutes]
  15. float c_dist = 0.00;           //measured odometry tachometer [turns] * Pi * wheel diameter [km]
  16. double power = 0.0;              //calculated power
  17.  
  18.  LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  19.  
  20.  
  21. void setup() {
  22.  
  23.  SERIALIO.begin(115200);
  24.   lcd.begin(20,4);
  25. }
  26.  
  27. void loop() {
  28.   if (vesc_get_values(VescMeasuredValues)) {
  29.      
  30.         // calculation of several values to be displayed later on
  31.         voltage = VescMeasuredValues.v_in;
  32.         current = VescMeasuredValues.current_in;
  33.         motor_current = VescMeasuredValues.current_motor;
  34.         power = current*voltage;
  35.         c_speed = (VescMeasuredValues.rpm/38)*3.14159265359*0.000083*60;
  36.         c_dist = (VescMeasuredValues.tachometer/38)*3.14159265359*0.000083;
  37.        
  38.  
  39.     }
  40.     lcd.setCursor(0,0);
  41.     lcd.print(voltage);
  42.     lcd.setCursor(0,1);
  43.     lcd.print(current);
  44.     lcd.setCursor(0,2);
  45.     lcd.print(power);
  46. }
Advertisement
Add Comment
Please, Sign In to add comment