Hola a todos! Un gusto!
Escribo porque ocupo su ayuda ya que lo he intentado de todos modos y no lo logro.
Tengo un arduino mega, con una motor drive modelo VNH2SP30, en cual quiero controlar con una pantalla Nextion 4.3", pero no lo logro, no se que esta mal en mi codigo.
#define BRAKE 0
#define CW 1
#define CCW 2
#define CS_THRESHOLD 15 // Definition of safety current (Check: "1.3 Monster Shield Example").
//MOTOR 1
#define MOTOR_A1_PIN 7
#define MOTOR_B1_PIN 8
#define PWM_MOTOR_1 5
#define CURRENT_SEN_1 A2
#define EN_PIN_1 A0
#define MOTOR_1 0
short usSpeed = 150; //default motor speed
unsigned short usMotor_Status = BRAKE;
// =====================================================================================================================================================================================================================
#include <NexButton.h>
#include <NexCheckbox.h>
#include <NexConfig.h>
#include <NexCrop.h>
#include <NexDualStateButton.h>
#include <NexGauge.h>
#include <NexGpio.h>
#include <NexHardware.h>
#include <NexHotspot.h>
#include <NexNumber.h>
#include <NexObject.h>
#include <NexPage.h>
#include <NexPicture.h>
#include <NexProgressBar.h>
#include <NexRadio.h>
#include <NexRtc.h>
#include <NexScrolltext.h>
#include <NexSlider.h>
#include <NexText.h>
#include <NexTimer.h>
#include <NexTouch.h>
#include <NexUpload.h>
#include <NexVariable.h>
#include <NexWaveform.h>
#include <Nextion.h>
#include <doxygen.h>
NexButton b1GO = NexButton (2, 2, "b1GO");
NexButton b2STOP = NexButton (2, 3, "b2STOP");
NexButton b3REVERSE = NexButton (2, 4, "b3REVERSE");
NexButton b4PLUS = NexButton (2, 5, "b4PLUS");
NexButton b5REST = NexButton (2, 6, "b5REST");
NexTouch *nex_listen_list[] =
{
& b1GO,
& b2STOP,
& b3REVERSE,
& b4PLUS,
& b5REST,
NULL
};
void b1GOPopCallBack(void *ptr)
{
}
void b2STOPPopCallBack(void *ptr)
{
}
void b3REVERSEPopCallBack(void *ptr)
{
}
void b4PLUSPopCallBack(void *ptr)
{
}
void b5RESTPopCallBack(void *ptr)
{
}
// =====================================================================================================================================================================================================================
void setup() {
// =====================================================================================================================================================================================================================
{
pinMode(MOTOR_A1_PIN, OUTPUT);
pinMode(MOTOR_B1_PIN, OUTPUT);
pinMode(PWM_MOTOR_1, OUTPUT);
pinMode(CURRENT_SEN_1, OUTPUT);
pinMode(EN_PIN_1, OUTPUT);
}
{
nexInit();
Serial.begin(9600); // Initiates the serial to do the monitoring
Serial.println("Begin motor control");
Serial.println(); //Print function list for user selection
Serial.println("Enter number for control option:");
Serial.println("1. STOP");
Serial.println("2. FORWARD");
Serial.println("3. REVERSE");
Serial.println("+. INCREASE SPEED");
Serial.println("-. DECREASE SPEED");
Serial.println();
}
// =====================================================================================================================================================================================================================
{
b1GO.attachPop(b1GOPopCallBack, &b1GO);
b2STOP.attachPop(b2STOPPopCallBack, &b2STOP);
b3REVERSE.attachPop(b3REVERSEPopCallBack, &b3REVERSE);
b4PLUS.attachPop(b4PLUSPopCallBack, &b4PLUS);
b5REST.attachPop(b5RESTPopCallBack, &b5REST);
}
}
// =====================================================================================================================================================================================================================
void loop()
{
char user_input;
// =====================================================================================================================================================================================================================
{
nexLoop(nex_listen_list);
}
// =====================================================================================================================================================================================================================
while(Serial.available())
{
user_input = Serial.read(); //Read user input and trigger appropriate function
digitalWrite(EN_PIN_1, HIGH);
if (user_input =='1')
{
Stop();
}
else if(user_input =='2')
{
Forward();
}
else if(user_input =='3')
{
Reverse();
}
else if(user_input =='+')
{
IncreaseSpeed();
}
else if(user_input =='-')
{
DecreaseSpeed();
}
else
{
Serial.println("Command Received.");
}
}
}
// =====================================================================================================================================================================================================================
void Stop()
{
Serial.println("Stop");
usMotor_Status = BRAKE;
motorGo(MOTOR_1, usMotor_Status, 0);
}
void Forward()
{
Serial.println("Forward");
usMotor_Status = CW;
motorGo(MOTOR_1, usMotor_Status, usSpeed);
}
void Reverse()
{
Serial.println("Reverse");
usMotor_Status = CCW;
motorGo(MOTOR_1, usMotor_Status, usSpeed);
}
void IncreaseSpeed()
{
usSpeed = usSpeed + 10;
if(usSpeed > 255)
{
usSpeed = 255;
}
Serial.print("Speed +: ");
Serial.println(usSpeed);
motorGo(MOTOR_1, usMotor_Status, usSpeed);
}
void DecreaseSpeed()
{
usSpeed = usSpeed - 10;
if(usSpeed < 0)
{
usSpeed = 0;
}
Serial.print("Speed -: ");
Serial.println(usSpeed);
motorGo(MOTOR_1, usMotor_Status, usSpeed);
}
// =====================================================================================================================================================================================================================
void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm) //Function that controls the variables: motor(0 ou 1), direction (cw ou ccw) e pwm (entra 0 e 255);
{
if(motor == MOTOR_1)
{
if(direct == CW)
{
digitalWrite(MOTOR_A1_PIN, LOW);
digitalWrite(MOTOR_B1_PIN, HIGH);
}
else if(direct == CCW)
{
digitalWrite(MOTOR_A1_PIN, HIGH);
digitalWrite(MOTOR_B1_PIN, LOW);
}
else
{
digitalWrite(MOTOR_A1_PIN, LOW);
digitalWrite(MOTOR_B1_PIN, LOW);
}
analogWrite(PWM_MOTOR_1, pwm);
}
}
// =====================================================================================================================================================================================================================
El codigo del motor funciona bien, pero como hago para que al estripar un boton de la pantalla me coloque los valores