Untitled
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...