|
| | ElettroshockNow
| Inviato il: 05/07/2015 21:32:37
|
Così su due piedi il tuo codice dovrebbe funzionare.
Prova senza i moduli connettendoli direttamente con due fili.
Per il discorso trasmissione è inutile complicarsi la vita a trasmettere un valore a 16 bit visto che l'analogWrite di arduino lavora su 256 passi.
Quindi ti consiglio di trasmettere direttamente un solo byte .
Per farlo usi la funzione map come nel tuo listato convertendo il valore del convertitore a/d lettura=(analogread (x),0,1023,0,255).
Così quello che ricevi nel buf [0] lo usi direttamente sull'analogwrite | | | | jack6226
milliWatt Gruppo:Utente Messaggi:5
Stato:
| Inviato il: 06/07/2015 14:26:05
|
Questo e quello che mi hai detto di fare giusto?
tx
#include
int Letturadef;
int Lettura;
void setup() {
Serial.begin(9600);
vw_set_tx_pin(2);
vw_setup(2000);
}
void loop() {
Lettura =map (analogRead(A0),510,1023,0,1023);
Letturadef = map(Lettura,0,1023,0,255);
Serial.print("Lettura= ");
Serial.println(Letturadef);
byte Lettura1 = Letturadef&0xFF;
char msg[1] = {Lettura1};
digitalWrite(13, HIGH);
vw_send((uint8_t *)msg, 1 );
vw_wait_tx();
digitalWrite(13, LOW);
delay (200);
}
rx
#include
int Lettura;
unsigned long Tmemoria;
int led = 10;
void setup() {
Serial.begin(9600) ;
pinMode(led, OUTPUT);
vw_set_rx_pin(2);
vw_setup(2000);
vw_rx_start();
}
void loop() {
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
Lettura = (int(buf[0]));
}
analogWrite(led, Lettura);
Serial.print("Lettura= ");
Serial.println(Lettura);
delay(200);
}}
facendo cio però i valori dell'analogico sono giusti nel primo e arrvano sbagliati nel secondo in pratica il centro non è 0 ma 249 e se lo metto verso il basso non è -255 ma 0
poi non riesco ancora a capire "Prova senza i moduli connettendoli direttamente con due fili."
devo fare cosa puoi spiegarmi bene anche quest'ultimo passaggio sono nelle tue mani.. | | | | jack6226
milliWatt Gruppo:Utente Messaggi:5
Stato:
| Inviato il: 06/07/2015 14:42:31
|
Ora riesco a mandare i valori usando questo codice però..
//tx
#include
int Letturadef;
int Lettura;
void setup() {
Serial.begin(9600);
vw_set_tx_pin(2);
vw_setup(2000);
}
void loop() {
Lettura =map (analogRead(A0),510,1023,0,1023);
Letturadef = map(Lettura,0,1023,0,255);
byte Lettura1 = Letturadef&0xFF;
byte Lettura2=(Letturadef&0xFF00)>>8;
char msg[2] = {Lettura1,Lettura2};
digitalWrite(13, HIGH);
vw_send((uint8_t *)msg, 2 );
vw_wait_tx();
digitalWrite(13, LOW);
delay (200);
Serial.print("Lettura= ");
Serial.println(Letturadef);
}
per ricevere
#include
int Lettura;
unsigned long Tmemoria;
int led = 10;
void setup() {
Serial.begin(9600) ;
pinMode(led, OUTPUT);
vw_set_rx_pin(2);
vw_setup(2000);
vw_rx_start();
}
void loop() {
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
Lettura = (int(buf[1]<<8)+buf[0]);
}
analogWrite(led, Lettura);
Serial.print("Lettura= ");
Serial.println(Lettura);
delay(200);
} | | | | | | | | | | | | | jackob
milliWatt Gruppo:Utente Messaggi:10
Stato:
| Inviato il: 07/07/2015 15:07:50
|
ciao sono sempre io mi sono riscritto poichè non riuscivo ad accedere..
cosa intendi con controlla il map ??
Ho sbagliato qualcosa ?
grazie ancora
--------------- Ciaoooo
| | | | | | | ElettroshockNow
| Inviato il: 08/07/2015 16:48:55
|
Rileggendo bene il tuo codice sembra che non ci siano errori ... però se non funziona un motivo ci sarà
Domani con calma lo carico e vediamo di scoprire il motivo .
Ciao
Elettro | | | | | | | | | | ElettroshockNow
| Inviato il: 11/07/2015 12:09:41
|
.. pardon il domani che intendevo è oggi pom.
Ieri giornatina al mare ... che spettacolo .
PS:cavolo ,ma questo è un nuovo dominio !!! | |
| | |
|
Versione Mobile!
|
|
|
|
|
|
|
|
|
|
|
|