Arduino + nrf24l01 + mosfet

Olá, sou meio leigo com arduino ainda, então estou com um pequeno problema…
Estava usando uma ponte h com 8 entradas(controle de 4 motores), porém vi a possibilidade de reduzir as mesmas para 2 entradas com o uso de um mosfet (irf3205). E chegamos no problema ele controla por meio do pwm, e não estou conseguindo mudar o codigo, poderiam ajudar?

//trans
//======================= Incluindo bilbiotecas ==============================//
#include <SPI.h>
#include <RF24.h>

//========================= Criando objetos =================================//
RF24 Radio(48, 49); // CE, CSN // Instancia/cria o objeto Radio para que possamos trabalhar com ele. Também temos que informar os pinos do Arduino conectados ao CE e ao CSN do NRF24L01.

//==================== Nomeando as constantes ==============================//
#define LEDIndicadorRadicaoGama 22
#define AnalogicoEsquerdoY A0// 0 à 950
#define AnalogicoDireitoX A1
#define BotaoL1 A2 // 0 ou 1023
#define AnalogicoL2 A3// 0 à 1023
#define AnalogicoEsquerdoX A4// 80 à 1023 Meio 511
#define AnalogicoR2 A5 // 13 à 1023

//=================== Criando uma estrutura/pacote de dados para a transmissão e recepção de informação através de dois Pipes =======================//
struct EstruturaDadosTXRX
{

boolean SensorRadiacaoGama = false;
int ValorConvertidoAnalogicoR2 = 0;
int DirecaoRobo = 0;
};

typedef struct EstruturaDadosTXRX TipoDosDadosTXRX;
TipoDosDadosTXRX DadosTransmitidos;
TipoDosDadosTXRX DadosRecebidos;

//=================== Declaração de variáveis globáis =======================//
int ValorAnalogicoR2;
int ValorAnalogicoEsquerdoY;
int ValorAnalogicoEsquerdoX;
boolean EstadoBotao = 0;

//=================== Declaração da variável global somente de leitura para armazenas os endereço de leitura e escrita =======================//
//Endereço: 0 1
const byte Enderecos[6] = {“00001”, “00002”}; //Criamos um vetor constante do tipo Byte que terá duas posições, pois precisamos de um endereço para escrever e outro para ler. Apesar do
//endereço ter somete 5 números, declaramos 6 para que o comppilador adicione o caracter null \0 automaticamente.

void setup() {
//==================== Declaração de entradas e saídas ========================//
pinMode(LEDIndicadorRadicaoGama, OUTPUT);// Declara o pino do LEDIndicadorRadicaoGama como saída.

//================== Configurações iniciais do NRF24L01 ======================//
Radio.begin();// Inicia o transceptor NRF24L01
Radio.openWritingPipe(Enderecos[1]); // Informamos para o transceptor qual é o endereço de escrita Enderecos[1] ou 00002 e abrimos o Pipe/Tubo.
Radio.openReadingPipe(1, Enderecos[0]); // Informamos para o transceptor qual é o endereço de leitura Enderecos[0] ou 00001 e abrimos o Pipe/Tubo. Esse primeiro parâmentro, o número 1,
//define o número do Pipe. Podemos utilizar 6 Pipes, de 0 à 5.
Radio.setPALevel(RF24_PA_MAX);// Muda o PA para potência máxima de transmissão. Para potência minima: RF24_PA_MIN Para potência média: RF24_PA_HIGH Para potência máxima (recomendado para o módulo com etapa amplificadora e antena): RF24_PA_MAX
Radio.setDataRate(RF24_250KBPS); // Mudamos a taxa de trasnferência de dados para 250 Kbps, isso melhora a distância na transmissão.
}

void loop() {
delay(5);// Tempo para não haver perca de dados
//========================= Trasmitindo os dados ===========================//

ValorAnalogicoEsquerdoX = analogRead(AnalogicoEsquerdoX);// Lê o valor analógico do AnalogicoEsquerdoX e manda para a variável ValorAnalogicoEsquerdoX.
ValorAnalogicoEsquerdoY = analogRead(AnalogicoEsquerdoY);// Lê o valor analógico do AnalogicoEsquerdoY e manda para a variável ValorAnalogicoEsquerdoY.

//Robô para Trás
if (ValorAnalogicoEsquerdoX < 471) {
DadosTransmitidos.DirecaoRobo = 2;
}
//Robô para Frente
if (ValorAnalogicoEsquerdoX >= 490) {
DadosTransmitidos.DirecaoRobo = 3;
}

//Vira o robô para a direita
if (ValorAnalogicoEsquerdoY <= 482) {
DadosTransmitidos.DirecaoRobo = 0;
}
//Vira o robô para a esquerda
if (ValorAnalogicoEsquerdoY >= 562) {
DadosTransmitidos.DirecaoRobo = 1;
}

ValorAnalogicoR2 = analogRead(AnalogicoR2);
DadosTransmitidos.ValorConvertidoAnalogicoR2 = map(ValorAnalogicoR2, 13, 1023, 0, 255);

Radio.stopListening(); // Comando para o rádio parar de ouvir, dessa forma ele fala ou transmite.
Radio.write(&DadosTransmitidos, sizeof(TipoDosDadosTXRX));// Transmite/escreve os dados para o outro rádio. DadosTransmitidos = Informação que queremos enviar. TipoDosDadosTXRX: Tamanho dessa variável.

//========================= Recebendo os dados ===========================//
delay(5);// Tempo para não haver perca de dados.

Radio.startListening(); // Comando para o rádio começar ouvir, dessa forma ele escuta ou recebe.

while (!Radio.available()); //Fica em looping até receber a informação.
Radio.read(&DadosRecebidos, sizeof(TipoDosDadosTXRX)); // Lê a informação transmitida pelo Robô.

if (DadosRecebidos.SensorRadiacaoGama == HIGH) {// Se DadosRecebidos.SensorRadiacaoGama que foi transmitido pelo robô for igual a HIGH.
digitalWrite(LEDIndicadorRadicaoGama, HIGH);// Liga o LEDIndicadorRadicaoGama
}
else {// Se não
digitalWrite(LEDIndicadorRadicaoGama, LOW);// Desliga o LEDIndicadorRadicaoGama
}
}


//======================= Incluindo bilbiotecas ==============================//
#include <SPI.h>
#include <RF24.h>

//========================= Criando objetos =================================//
RF24 radio(48, 49); // CE, CSN // Instancia/cria o objeto Radio para que possamos trabalhar com ele. Também temos que informar os pinos do Arduino conectados ao CE e ao CSN do NRF24L01.

//==================== Nomeando as constantes ==============================//
#define PinoSensorRadiacaoGama 22

//=================== Criando uma estrutura/pacote de dados para a transmissão e recepção de informação através de dois Pipes =======================//
struct EstruturaDadosTXRX
{
boolean SensorRadiacaoGama = false;
int ValorConvertidoAnalogicoR2 = 0;
int DirecaoRobo = 0;
};
typedef struct EstruturaDadosTXRX TipoDosDadosTXRX;
TipoDosDadosTXRX DadosTransmitidos;
TipoDosDadosTXRX DadosRecebidos;

//=================== Declaração de variáveis globáis =======================//
boolean buttonState = 0;

//=================== Declaração da variável global somente de leitura para armazenas os endereço de leitura e escrita =======================//
//Endereço: 0 1
const byte Enderecos[6] = {“00001”, “00002”};//Criamos um vetor constante do tipo Byte que terá duas posições, pois precisamos de um endereço para escrever e outro para ler. Apesar do
//endereço ter somete 5 números, declaramos 6 para que o comppilador adicione o caracter null \0 automaticamente.

void setup() {
//==================== Declaração de entradas e saídas ========================//
pinMode(PinoSensorRadiacaoGama, INPUT_PULLUP);// Declara o pino do PinoSensorRadiacaoGama como entrada PULLUP.

// Pinos para o controle dos motores através da Monster Shield
pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

//================== Configurações iniciais do NRF24L01 ======================//
radio.begin();// Inicia o transceptor NRF24L01
radio.openWritingPipe(Enderecos[0]); // Informamos para o transceptor qual é o endereço de escrita Enderecos[0] ou 00001 e abrimos o Pipe/Tubo.
radio.openReadingPipe(1, Enderecos[1]); // Informamos para o transceptor qual é o endereço de leitura Enderecos[1] ou 00002 e abrimos o Pipe/Tubo. Esse primeiro parâmentro, o número 1,
//define o número do Pipe. Podemos utilizar 6 Pipes, de 0 à 5.
radio.setPALevel(RF24_PA_MAX); // Muda o PA para potência máxima de transmissão. Para potência minima: RF24_PA_MIN Para potência média: RF24_PA_HIGH Para potência máxima (recomendado para o módulo com etapa amplificadora e antena): RF24_PA_MAX
radio.setDataRate(RF24_250KBPS); // Mudamos a taxa de trasnferência de dados para 250 Kbps, isso melhora a distância na transmissão.

}

void loop() {
//========================= Recebendo os dados ===========================//
delay(5); // Tempo para não haver perca de dados.

radio.startListening(); // Comando para o rádio começar ouvir, dessa forma ele escuta ou recebe.

if ( radio.available()) {// Se o NRF24L01 receber dados.
while (radio.available()) {// Enquanto o NRF24L01 receber dados.
radio.read(&DadosTransmitidos, sizeof(TipoDosDadosTXRX)); // Lê a informação transmitida pelo Robô.
}

//========================= Controle dos Motores ===========================//
//Controle da velocidade dos motores
analogWrite(5, DadosTransmitidos.ValorConvertidoAnalogicoR2); // Escreve o valor PMW de 0 à 255 responsável pela velocidade do robô no pino 5.
analogWrite(6, DadosTransmitidos.ValorConvertidoAnalogicoR2);// Escreve o valor PMW de 0 à 255 responsável pela velocidade do robô no pino 6.

  //Controle da direção do robô
if (DadosTransmitidos.ValorConvertidoAnalogicoR2 < 50) {
  //---------------- Robô Desligar Motores -----------//
  //Motor lado esquerdo olhando de trás do robô
  digitalWrite(4, LOW);
  digitalWrite(9, LOW);
  //Motor lado direito olhando de trás do robô
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
}

if (DadosTransmitidos.DirecaoRobo == 3) {
  //---------------- Robô para frente -----------//
  //Motor lado esquerdo olhando de trás do robô
  digitalWrite(4, LOW);
  digitalWrite(9, HIGH);
  //Motor lado direito olhando de trás do robô
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
}

if (DadosTransmitidos.DirecaoRobo == 2) {
  //---------------- Robô para trás -----------//
  //Motor lado esquerdo olhando de trás do robô
  digitalWrite(4, HIGH);
  digitalWrite(9, LOW);
  //Motor lado direito olhando de trás do robô
  digitalWrite(7, HIGH);
  digitalWrite(8, LOW);
}

if (DadosTransmitidos.DirecaoRobo == 0) {
  //---------------- Robô para o lado esquerdo -----------//
  //Motor lado esquerdo olhando de trás do robô
  digitalWrite(4, HIGH);
  digitalWrite(9, LOW);
  //Motor lado direito olhando de trás do robô
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
}

if (DadosTransmitidos.DirecaoRobo == 1) {
  //---------------- Robô para o lado direito -----------//
  //Motor lado esquerdo olhando de trás do robô
  digitalWrite(4, LOW);
  digitalWrite(9, HIGH);
  //Motor lado direito olhando de trás do robô
  digitalWrite(7, HIGH);
  digitalWrite(8, LOW);
}

}

//========================= Trasmitindo os dados ===========================//
delay(5); // Tempo para não haver perca de dados.

radio.stopListening(); // Comando para o rádio parar de ouvir, dessa forma ele fala ou transmite.

DadosRecebidos.SensorRadiacaoGama = digitalRead(PinoSensorRadiacaoGama);// Faz a leitura digital do PinoSensorRadiacaoGama e armazena na variável DadosRecebidos.SensorRadiacaoGama.

radio.write(&DadosRecebidos, sizeof(TipoDosDadosTXRX));// Transmite/escreve os dados para o outro rádio. DadosTransmitidos = Informação que queremos enviar. TipoDosDadosTXRX: Tamanho dessa variável.
}