nrf24l01 ile l298n motor sürücü
uzaktan kumandalı gemi yapıyorum iletişimde bir sorun gözükmüyor. kumandadan aldığım degerleri alıcımda seri ekranda okuyorum. fakat motor sürücümün enable pinlerine bu degerleri yazdıramıyorum. analogwrite komutuyla yazdırmam gerekiyor fakat yazdıramıyorum. digital write yazdığımda ise motorlar son gaz ileri yada son gaz geri dönüyor. hız kotrollü olarak programlamak istiyorum lütfen yardımcı olun. şimdiden teşekkür ederim.
///// kumandanın potansiyometrelerinden 0 ile 3550 arasında degerler alıyorum ona göre yazdım soly ve sagx yazdığım şeyler soldaki potansiyometrenin y ekseni (soly) sagx de aynı şekilde sağdaki pot x ekseni degeri
#include<nRF24L01.h>
#include<RF24.h>
# include<SPI.h>
# include<Servo.h>
// ALICI KODLARI ( GEMİ)
#define CE_PIN 7
#define CSN_PIN 8
const int enA= 9;
const int enB= 10;
const int in1= 4;
const int in2= 5;
const int in3= 6;
const int in4= 2;
int motorspeedA;
int motorspeedB;
int servodeger;
Servo servo;
const uint64_t pipe = 0xE8E8F0F0E1LL ;
RF24 radio (7, 8);
int data[ 5 ]; // gelen veriler
void setup() {//////////////////////////////////////////////////////////////////////////
Serial.begin(9600);
radio.begin ();
radio.openReadingPipe ( 1 , pipe );
radio.startListening () ;;
servo.attach(3);
pinMode ( enA , OUTPUT);
pinMode ( enB , OUTPUT);
pinMode (in1, OUTPUT);
pinMode (in2, OUTPUT);
pinMode (in3, OUTPUT);
pinMode (in4, OUTPUT);
}
//////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
if (radio.available()){
radio.read( data, sizeof(data) );
hareket(data[0],data[1],data[2],data[3]);
}
}
void hareket(int soly, int solx, int sagy, int sagx ) {
///////////////////////////////////////////////////////////////////////////////////////
if( soly > 2100){
motorspeedA = map(soly, 2100, 3550, 0, 255); // pot degeri arttıkça hızlanacak
motorspeedB = map(soly, 2100, 3550, 0, 255);
servodeger = map(sagx, 0 ,3650 ,0 ,180);
servo.write(servodeger);
void speed(cost int enA, cost int enB, soly) {
for(int i=0; i< soly; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
}
}
digitalWrite(in1, LOW); /// İLERİ YÖN
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
////////////////////////////////////////////////////////////////////////////////////////
else if( soly < 1950){
motorspeedA= map(soly ,1950, 0, 0, 100); // pot 0'a gittikçe geri yönde hızlanacak
motorspeedB= map(soly ,1950, 0, 0, 100);
servodeger = map(sagx, 0 ,3650 ,0 ,180);
servo.write(servodeger);
//// GERİ YÖN
void speed(cost int enA, cost int enB, soly) {
for(int i=0; i< soly; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(10);
}
}
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
/////////////////////////////////////////////////////////////////////////////////////
Serial.print(soly); ///pot degerleri seri ekran
Serial.print(" ");
Serial.print(solx);
Serial.print(" ");
Serial.print(sagy);
Serial.print(" ");
Serial.print(sagx);
Serial.print(" ");
Serial.print("Servo:");
Serial.print(servodeger);
Serial.print(" Motorlar: ");
Serial.print(motorspeedA);
Serial.print(" - ");
Serial.print(motorspeedB);
Serial.println(" ");
}