Untitled

 avatar
unknown
c_cpp
2 years ago
3.0 kB
7
Indexable
// Motor A
int ENA = 10;
int IN1 = 9;
int IN2 = 8;
// Motor B
int ENB = 5;
int IN3 = 7;
int IN4 = 6;

#include <SoftwareSerial.h> //library for software serial
SoftwareSerial softSerial(3, 4); // RX on Pin 3, TX on Pin 4 (Change these as required!)

int update_interval=100; // time interval in ms for updating panel indicators 
unsigned long last_time=0; // time of last update
char data_in; // data received from serial link
int slider_value; // Received Slider Values
int salidaPWM;

void setup() {

  softSerial.begin(9600); //Change baud rate as required!

///////////// Build panel in app

  softSerial.println("*.kwl");
  softSerial.println("clear_panel()");
  softSerial.println("set_grid_size(16,8)");
  softSerial.println("add_button(10,4,4,L,l)");
  softSerial.println("add_button(12,4,5,R,r)");
  softSerial.println("add_slider(2,3,4,0,1024,0,A,A,0)");
  softSerial.println("set_panel_notes(,,,)");
  softSerial.println("run()");
  softSerial.println("*");
  pinMode (ENA, OUTPUT);
  pinMode (ENB, OUTPUT);
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);

}

void loop() {

  /////////////   Receive and Process Data

  if (softSerial.available()){
    data_in=softSerial.read();  //Get next character 

    if(data_in=='L'){ //Button Pressed
      Izquierda();
    }
    if(data_in=='l'){ // Button Released 
      PararGiro();
    }

    if(data_in=='R'){ //Button Pressed
      Derecha();
    }
    if(data_in=='r'){ // Button Released 
      PararGiro();
    }

    if(data_in=='A'){ //  Slider
      slider_value=softSerial.parseInt();
      if (slider_value<412){
        salidaPWM = map(slider_value,0,412,255,0);
        Atras();
      }
      else if (slider_value>612){
        salidaPWM = map(slider_value,612,1024,0,255);
        Adelante();
      }else{
        PararMarcha;
      }
    }
  }

  /////////////  Send Data to Android device
  unsigned long t=millis();
  if ((t-last_time)>update_interval){
    last_time=t;
  }
}

void Adelante(){
  //Direccion motor A
  digitalWrite (IN1, HIGH);
  digitalWrite (IN2, LOW);
  analogWrite (ENA, salidaPWM); //Velocidad motor A
}

void Atras(){
  //Direccion motor A
  digitalWrite (IN1, LOW);
  digitalWrite (IN2, HIGH);
  analogWrite (ENA, salidaPWM); //Velocidad motor A
}

void Derecha(){
  //Direccion motor B
  digitalWrite (IN3, LOW);
  digitalWrite (IN4, HIGH);
  analogWrite (ENB, 255); //Velocidad motor A
}

void Izquierda(){
  //Direccion motor B
  digitalWrite (IN3, HIGH);
  digitalWrite (IN4, LOW);
  analogWrite (ENB, 255); //Velocidad motor A
}

void PararMarcha(){
  //Direccion motor A
  digitalWrite (IN1, LOW);
  digitalWrite (IN2, LOW);
  analogWrite (ENA, 0); //Velocidad motor A
}

void PararGiro(){
  //Direccion motor B
  digitalWrite (IN3, LOW);
  digitalWrite (IN4, LOW);
  analogWrite (ENB, 0); //Velocidad motor A
}
Editor is loading...