Hola, tengo un problema. Estoy comenzando con arduino y lo que busco con este proyecto es que el Motor Paso a Paso controlado por un a4988 "copie" el movimiento del potenciometro que esta en el emisor.
Con esta programación la idea toma forma pero el motor tiene mucho ruido.
En que le estaré errando?
Adjunto códigos.
Saludos, desde ya muchas gracias.
Este es el RECEPTOR
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//Declaremos los pines CE y el CSN
#define CE_PIN 9
#define CSN_PIN 10
int Z = 0;
//Variable con la dirección del canal que se va a leer
byte direccion[5] ={'c','a','n','a','l'};
//creamos el objeto radio (NRF24L01)
RF24 radio(CE_PIN, CSN_PIN);
//vector para los datos recibidos
float datos[3];
void setup()
{
//inicializamos el NRF24L01
radio.begin();
//inicializamos el puerto serie
Serial.begin(9600);
//Abrimos el canal de Lectura
radio.openReadingPipe(1, direccion);
//empezamos a escuchar por el canal
radio.startListening();
}
void loop() {
uint8_t numero_canal;
//if ( radio.available(&numero_canal) )
if ( radio.available() )
{
//Leemos los datos y los guardamos en la variable datos[]
radio.read(datos,sizeof(datos));
//reportamos por el puerto serial los datos recibidos
Serial.print("Dato0= " );
Serial.print(datos[0]);
Serial.print(" V, ");
Serial.print("Dato1= " );
Serial.print(datos[1]);
Serial.print(" ms, ");
Serial.print("Dato2= " );
Serial.println(datos[2]);
if (datos[0] > datos[1]) digitalWrite(5, HIGH);
else digitalWrite (5,LOW);
for(Z = 0; Z < ((datos[0] - datos[1])); Z++);
{
digitalWrite(8,HIGH);
delayMicroseconds(500);
digitalWrite(8,LOW);
delayMicroseconds(500);
}//comparacion para determinar la direccion
for(Z = 1; Z < ((datos[1] - datos[0])); Z++);
{
digitalWrite(8,HIGH);
delayMicroseconds(500);
digitalWrite(8,LOW);
delayMicroseconds(500);
}
}
else
{
Serial.println("No hay datos de radio disponibles");
}
}
Este es el TRANSMISOR
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//Declaremos los pines CE y el CSN
#define CE_PIN 9
#define CSN_PIN 10
//Variable con la dirección del canal por donde se va a transmitir
byte direccion[5] ={'c','a','n','a','l'};
//creamos el objeto radio (NRF24L01)
RF24 radio(CE_PIN, CSN_PIN);
//vector con los datos a enviar
float datos[3];
void setup()
{
//inicializamos el NRF24L01
radio.begin();
//inicializamos el puerto serie
Serial.begin(9600);
//Abrimos un canal de escritura
radio.openWritingPipe(direccion);
}
void loop()
{
//cargamos los datos en la variable datos[]
datos[0]=analogRead(A0);
delay (10);
datos[1]=analogRead (A0);
datos[2]= digitalRead (8);
//enviamos los datos
bool ok = radio.write(datos, sizeof(datos));
//reportamos por el puerto serial los datos enviados
if(ok)
{
Serial.print("Datos enviados: ");
Serial.print(datos[0]);
Serial.print(" , ");
Serial.print(datos[1]);
Serial.print(" , ");
Serial.println(datos[2]);
}
else
{
Serial.println("no se ha podido enviar");
}
}