Untitled
unknown
c_cpp
3 years ago
3.0 kB
10
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...