Slot-car homemade

avrei bisogno di un cosiglio per migliorare il progetto
di digitalizzazione con arduino di una pista Slotcars artigianale

Sto usando dei moduli rf24 e 2 arduino ,attualmente uno e nano,
un modulo mosfet e un pulsante a resistenze, commerciale slotcars della ninco .

Attualmente il progetto funziona ma vorrei migliorarlo
sia nella parte degli sketch e se fosse possibile nella parte della componentistica.

Qui lo sketch di trasmissione

#include <SPI.h>  
#include "RF24.h"
#define BUTTON 4
#define vibrazione 5


RF24 myRadio (7, 8);
byte addresses[][6] = {"0"};
int stato_pulsante = 0;

char b_com[20]="ciao";

struct package
{
  int id=1;
  };


void setup()
{
  pinMode(BUTTON,INPUT);
  pinMode(vibrazione,OUTPUT);
 
  Serial.begin(115200);
 
 
  myRadio.begin();  
  myRadio.setChannel(115); 
  myRadio.setPALevel(RF24_PA_MAX);
  myRadio.setDataRate( RF24_250KBPS ) ; 
  myRadio.openWritingPipe(addresses[0]);
  delay(100); 

}

typedef struct package Package;
Package Speed;

void loop()
{
  int unsigned Speed=0;
    Speed = analogRead(A0);
   
    Speed = map(Speed, 0, 580, 0, 500);
     Speed = abs(Speed/2);
     myRadio.write(&Speed,sizeof(Speed));

            Serial.println(Speed);

        int stato_pulsante = digitalRead(BUTTON); 
        if (stato_pulsante == LOW){ Serial.println(b_com);
      
        
        myRadio.write( &b_com,sizeof(b_com) );
  }
        if (stato_pulsante == LOW){ digitalWrite(vibrazione,HIGH);}
        else digitalWrite(vibrazione,LOW);
 



 
  delay(100);
  

  }

Qui lo sketch di ricezione

#include <SPI.h>  
#include "RF24.h" 
#include "HCMotor.h"


#define POT_FWD_MIN (512 + DEADZONE)
#define POT_FWD_MAX 1204
#define MOTOR_PIN 9



HCMotor HCMotor;

RF24 myRadio (7, 8); 
byte addresses[][6] = {"0"};
char b_com[20]="";

struct package 
{
  int id=1;
};



void setup() 
{
  HCMotor.Init();
//  HCMotor.attach(0, DCMOTOR, MOTOR_PIN);
  HCMotor.DutyCycle(0, 100);

  //myRadio.setAutoAck(1);
  //myRadio.setRetries(2,15);
  myRadio.begin(); 
  myRadio.setChannel(115); 
  myRadio.setPALevel(RF24_PA_MAX);
  myRadio.setDataRate( RF24_250KBPS ) ; 
  myRadio.openReadingPipe(0, addresses[0]);
  myRadio.startListening();
  delay(100);
  
  Serial.begin(115200);
  pinMode(9,OUTPUT);
  
}

typedef struct package Package;

Package Speed;

void loop()  
{
  long Speed=0;
  int Step=0;
  long  Value=0;
  int bottone=0;
  
  if (myRadio.available())
  {
 myRadio.read( &Speed, sizeof(Speed) );
  
 if(Speed>=65) Value=10;
if(Speed>=80) Value=20;
if(Speed>=95) Value=30;
if(Speed>=110) Value=50;
if(Speed>=120) Value=70;
if(Speed>=145) Value=90;
if(Speed>=160) Value=120;
if(Speed>=185) Value=170;
if(Speed>=210) Value=200;
if(Speed>=245) Value=255;
if(Speed==0) Value=0;


    analogWrite(9,Value);
    Serial.println(Speed);
    Serial.println(Value);

   
  myRadio.read( &b_com,sizeof(b_com) );

    }

 bottone = int(b_com);
 
if ( bottone>0) Serial.println(b_com);
      
  delay(100);

}

Difficoltà riscontrate:

Trasmissione utilizzando 2 canali:
Vorrei trasmettere separatamente il segnale del trigger da quello di un pulsante,
non so come usare i canali della libreria myRadio o se si possono usare a questo scopo.

rimappare in maniera precisa le letture analogiche del trigger
mi sono arrangiato con le iterazioni,
sicuramente il lavoro è grezzo anche se funzionante.

per ora ho lasciato la scrittura nel monitor seriale sia in trasmissione che in ricezione per comodità.

Domande:

Esiste la possibilità di mappare in maniera piu precisa il trigger in modo da programmare l'output
con diverse curve di "potenza" senza usare tutte quelle iterazioni ?

Avete suggerimenti comprensibili per me neofita per migliorare gli sketch ?
Grazie

Ti prego di correggere il tuo post racchiudendo il codice nei tag CODE e NON nei tag di TABLE che tu hai utilizzato.

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink:

grazie, gentilissimo .