Macchinina radiocomandata


ciao tutti, mi sono cimentato in questi giorni nella costruzione di una piccola macchinina (funzionante con due motorini di un drone giocattolo, e arduino pro mini), che svolge varie funzioni di esplorazione  con un sensore ad ultrasuoni, e fino qua tutto ok, funziona tutto perfettamente.
in più, volevo renderla radiocomandata attraverso moduli di ricezione e trasmissione 433 mhz, e moduli joystick analogici per comandare 2 motori.

il problema è:
quando non muovo joystick(che quindi danno entrambi un valore di circa 450 sugli ingressi analogici, e quindi non vengono inviati impulsi ai motori) va tutto bene, ricevitore e trasmissione si comunicano bene valori(testato attraverso il seriale di entrambi), ma nel momento in cui voglio pilotare la macchinina, va tutto ok per circa 10 secondi poi improvvisamente valori sul seriale si bloccano e due arduino smettono di comunicarsi, lasciando motori nella situazione degli ultimi valori scambiati. scusate sono nuovo del forum e non ancora come postare il codice in modo "carino" come ho visto fare, quindi faccio un brutale copia e incolla delle parti interessate!

per la connessione tra moduli wireless, uso la libreria virtual wire, che gia per altri progetti era stata perfetta nel funzionamento!

 trasmissione
#include <virtualwire.h>
#define sticksx a0
#define stickdx a1
#define pintrasmettitore 3

int valsx;
int valdx;
void initialize_transmitter();
void transmit_integer(unsigned int data);

void setup() {
  serial.begin(9600);
   initialize_transmitter();
}

void loop() {
valsx=analogread(sticksx);
valdx=analogread(stickdx);
    serial.print(valsx);
    serial.print("                      ");
    serial.println(valdx);
transmit_integer(valsx);
delay(20);
transmit_integer(valdx+2000);
delay(20);
}

ricezione

void loop() {
  valricevuto=receive_integer();
  delay(10);
  if(valricevuto!=-1){
    if(valricevuto>-1 && valricevuto<1024) valsx=valricevuto;
    if(valricevuto>1999 && valricevuto<3024) valdx=valricevuto-2000;
    serial.print(valsx);
    serial.print("                      ");
    serial.println(valdx);
  }
 if(valsx>400 && valsx<500) {digitalwrite(pinsxavanti,low); digitalwrite(pinsxindietro,low);}
 if(valdx>400 && valdx<500) {digitalwrite(pindxavanti,low); digitalwrite(pindxindietro,low);}
 
if(valsx<400) analogwrite(pinsxindietro, map(valsx,0,400,255,0));   
if(valsx>500) analogwrite(pinsxavanti, map(valsx,500,1023,0,255));

if(valdx<400) analogwrite(pindxindietro, map(valsx,0,400,255,0));
if(valdx>500) analogwrite(pindxavanti, map(valsx,500,1023,0,255));
 
}
 


i pin "pinsxavanti, pinsxindetro, pindxavanti,pindxindetro" sono pin per muovere motori avanti e indietro

grazie mille chiunque risponda :)


non credo dipenda da questo, ma la libreria virtualwire non è più supportata, come si evince da  qui. e' stata sostituita dalla libreria radiohead che trovi qui.
per modulini standard 433 mhz va bene il driver rh_ask che trovi qui.
ciao,
p.


Arduino Forum > International > Italiano > Generale (Moderator: leo72) > Macchinina radiocomandata


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor