Você está na página 1de 7

25/08/2015

ControlRobotics:Tutorial:Arduino+Kitrf433Mhz(Part4:Diversasvariveis)
5

mais Prximoblog

Criarumblog Login

ControlRobotics
Umblogcomtutoriaisqueusammicrocontroladores,comoarduino,eletrnicadigitaleproyectsDIYlegal

Quintafeira19desetembro,2013

Arquivodoblog

Tutorial:Arduino+Kitrf433Mhz(Part4:Diversas
variveis)

2014(3)

Napartefinaldestetutorialveremoscomoenviarmltiplasvariveis
usandoofio

virtual.Vamoscomearento.Humasriedeformasparaenviarmltiplas
variveis
fiovirtualdecocho.Noentanto,sequeremosenviardiferentestiposde

dadosouapenasenviaralgunsdeint,podemosfazerdamesmaforma,comeste
cdigo.

Transmissor

2013(9)
novembro(2)
outubro(2)
setembro(1)
Tutorial:KitrfArduino+433Mhz(Part4:Multiple
...
agosto(4)

AdicionaraomeuGoogle+crculos

ComFioVirtualspodemosenviarumastring.Portanto,sequeremosenviaroutros
tiposdedados,precisamosconverteressesdadosemumastring.Felizmente,h
umafunoparafazerisso.Aquiaseguintelinhadecdigoquenstemosque
adicionar.

RodrigoMompo
RodrigoM

SeguirporEmail

Emailaddress...

Enviar

sprintf(Stringtosend,"%d,%d,%d,%d",Variable1,variable2,variavel3,varivel4);
Seguidores

Ofuncionsprintfconvertediferentestiposdedadosemumaseqncia.Ofuncin
funcionaassim:
1

sprintf(Stringtosend,especificadordotipodedados,dados);?

especificador

Sada

Jointhissite
withGoogleFriendConnect

Members(3)

Exemplo

doui

Decimalinteiroassinado

392

vc

Inteirodecimalsemsinal

7235

Octalnoassinado

610

Inteirohexadecimalnoassinado

7FA

Inteirohexadecimalnoassinado(maisculas)

7FA

Pontoflutuantedecimal,minsculas

392,65

Pontoflutuantedecimal,maiscula

392,65

Notaocientfica(mantissa/expoente),minsculas

3.9265e+
2

Notaocientfica(mantissa/expoente),maiscula

3.9265E+
2

Usearepresentaomaiscurto:%eou%f

392,65

Usearepresentaomaiscurto:%Eou%F

392,65

uma

Pontoflutuantehexadecimal,minsculas

0xc.90fep
2

UMA

Pontoflutuantehexadecimal,maiscula

0XC.90FEP
2

Personagem

uma

Seqnciadecaracteres

amostra

Endereodeponteiro

b8000000

Nadaimpresso.
Oargumentocorrespondentedeveserumponteiropara
uminteiroassinado.
Onmerodecaracteresescritosatagora
armazenadonolocalapontado.

Uma%seguidoporoutro%personagemvaiescrever
umanica%paraofluxo.

Alreadyamember?Signin

Natabela,vemososdiferentesespecificadoresparatodosostiposdedados.
Usandoestefunciontambmpodemosenviaruminteiroeumadepontoflutuante
1

sprintf(Stringtosend,"%d,%f",,inteiro,pontoflutuante); ?

http://controlrobotics.rodrigomompo.com/2013/09/tutorialarduinokitrf433mhzpart4.html

1/7

25/08/2015

ControlRobotics:Tutorial:Arduino+Kitrf433Mhz(Part4:Diversasvariveis)
ParamaisinformaesvocpodeveroC++referncia
http://www.cplusplus.com/reference/cstdio/printf/

TransmissorExemplo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

?
/*.............................................................
EnviodeVriasVariveis
UsandoVirtualWire.Transmissor

Autor:RodrigoMompoRedoli
Paracontrolrobotics.rodrigomompo.com
..............................................................*/
#include<VirtualWire.h>

intSensor1Pin=A1;//Ospinosforamsensorsoligados
intSensor2Pin=A2;
intSensor3Pin=A3;
intSensor4Pin=A4;
intledPin=13;
intSensor1Data;//Avarivelforamosdadosdecadasensor
intSensor2Data;//serarmazenado
intSensor3Data;
intSensor4Data;
CharSensor1CharMsg[21];//Acadeiaquensestamosindoparaenviarrftrought

vaziosetup(){

//LED
pinMode(ledPin,OUTPUT);

//Sensor(s)
pinMode(Sensor1Pin,entradas);
pinMode(Sensor2Pin,entradas);
pinMode(Sensor3Pin,entradas);
pinMode(Sensor4Pin,entradas);

//ConfiguraoVirtualWire
vw_setup(2000);//Bitsporsegundo
vw_set_tx_pin(12);//definiroPINTx.Opadro12

vazioloop(){

//Lerearmazenardadosdosensor
Sensor1Data=analogRead(Sensor1Pin);
Sensor2Data=analogRead(Sensor2Pin);
Sensor3Data=analogRead(Sensor3Pin);
Sensor4Data=analogRead(Sensor4Pin);

sprintf(Sensor1CharMsg,"%d,%d,%d,%d",Sensor1Data,Sensor2Data,Sensor3Data,Sensor4Data);

//Ligueumaluzparamostrartransmissora
vw_send((uint8_t*)Sensor1CharMsg,strlen(Sensor1CharMsg));
vw_wait_tx();//Aguardeatquetodaamensagemgone
//Desliguealuzapsatransmisso
atraso(40);

Recebedor
Agora,temosdesercapazdeenviarumaseqnciadecaracteresereceblo.No
entanto,comestacordaquevocnopodefazernadaamenosquevoc
discomposeloearmazenamentoemdiferentesmodelosvariables.Forestenovo
desafioquevamosusaroutrafuno.

?
sscanf(StringReceived,"%d,%d,%d,%d",&Sensor1Data,&Sensor2Data,&SeensorData3,&SensorData4);

Estafunooopostodosprinft,evamoslheoarmazenamentodeinformaesem
variveis
diferentes.Compilarocdigoreceptoreadicionaralgumascoisaslegais

queusamessesdados.Nofinaldocdigoquevocdeveapagartodososdados
anterioresdacadeiaondeanovaseqnciaoarmazenamento,entovocdeve
chamarestafuno

?
sizeof(StringReceived));//EstalinhapararedefiniroStringReceived

ExemploReceiver
1
2
3
4
5
6
7
8
9
10
11
12
13

?
/*.............................................................
EnviodeVriasVariveis
UsandoVirtualWire.Recebedor

Autor:RodrigoMompoRedoli
Paracontrolrobotics.rodrigomompo.com
..............................................................*/
#include<VirtualWire.h>

//Sensores
intSensor1Data;
intSensor2Data;
intSensorData3;
intSensorData4;

http://controlrobotics.rodrigomompo.com/2013/09/tutorialarduinokitrf433mhzpart4.html

2/7

25/08/2015

ControlRobotics:Tutorial:Arduino+Kitrf433Mhz(Part4:Diversasvariveis)
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

CharStringReceived[22];

vaziosetup(){
//VirtualWire
//InicializaroIOeISR
//NecessrioparaDR3100

//Bitsporsegundo
vw_setup(2000);
vw_set_rx_pin(11);

//IniciaroreceptorPLLrunning
vw_rx_start();

}//ENDvoidsetup

vazioloop(){
uint8_tbuf[VW_MAX_MESSAGE_LEN];
uint8_tbuflen=VW_MAX_MESSAGE_LEN;

//Tomandoosdadosapartirdabasedecontrole
se(vw_get_message(buf,ebuflen))
{
inti;
//Mensagemcomumaboasomadeverificaorecebidos,despejlo.
para(i=0;i<buflen;i++)
{
//PreenchendomatrizSensor1CharMsgCharcomcorrespondente
//Caracteresdobuffer.
StringReceived[i]=Char(buf[i]);
}

sscanf(StringReceived,"%d,%d,%d,%d,%d,%d",&Sensor1Data,&Sensor2Data,&SensorData3,&SensorData4);

//Desliguealuzeaguardarprximamensagem

memset(StringReceived,0,sizeof(StringReceived));//EstalinhapararedefiniroStringReceived
}

Porfavor,deixealgunscomentrios,eenviarsuasidiasparanovospostsneste
blog.Almdisso,Sevoctemumprojetoquevocpodepublicloemmeublog.
Assineemeadicioneaosseuscrculos,almdoGoogle.
PostadoporRodrigoMompoem15:25

+5 Recommend this on Google


Marcadores:Arduino,controlrobotics,KitRf433MHz,Tutorial

26Comentrios:
Rustie0125 23desetembrode2013em7:18
OiRodrigoseucdigoRxnocompila,hdeclaraesemfalta
Responder
Respostas
RodrigoMompo

23desetembrode2013em3:16

Ocdigojalterado.Obrigadoporrelataraproblem.
Responder

Rustie0125 23desetembrode2013em3:48
OiRodrigo
obrigadopelamudana,masestoucommedodequeaindanofunciona,noseu
cdigo Tx apenas prendedor pequeno bug. # Incluir deve ser VirtualWire e em
voctxcdigopindefinircomovw_rxcomo11,masnohnenhumamenono
cdigotxsobreopinoquepretendeTx?iteradicionadoestasduascoisaseainda
falha em transmitir uma msg do outro lado, alguma idia? i wana realmente
comearestetrabalho
Responder
Respostas
RodrigoMompo

23desetembrode2013em4:05

Eumudeiocdigotrasnmitterecompilabem.Comoeudissenoteste
departeanterior,usandofio.Voctemqueligarosdoisfundamentos
ea TX pino 12 para Rx pino 11. Em seguida, voc tem que testar se
vocrecebeuosdadosparaimprimiroresultadodenomonitorserial.A
partecdigodemonitorserailnoadicionadonoexemplo.Testloe
responder Se voc usar o pin deafult voc no tem que chamar o
vw_rx_pinfunction()

http://controlrobotics.rodrigomompo.com/2013/09/tutorialarduinokitrf433mhzpart4.html

3/7

25/08/2015

ControlRobotics:Tutorial:Arduino+Kitrf433Mhz(Part4:Diversasvariveis)

Responder

Rustie0125 23desetembrode2013em4:31
bem, eu adicionei a definir para quais pinos im usando para TX e RX. e seu
trabalho agora. Posso enviar mais de 4 ints no h problema, voc tem feito
qualquertestedegamanessasunidadesparaveroqueointervalomximo?e
outraquestoqueomeuprximopasso,comoeuiriasobreoenviodemaisde
carroas,comoGPSlatelongoflutuadores
Responder
Respostas
RodrigoMompo

23desetembrode2013em5:19

tdeppensemseusetup.Comomeufiodeantenasdeumtransmissor
a trabalhar em 9 volts Eu tenho um 20 metros de distncia com meu
rob.Sevoccolocar12voltsumacompraalguns433anntenasmhz
voc ter mais variedade em teoria (at 100 metros). Para enviar
flutuadorvoctemquemudar%dpara%fedeclararavarivelcomo
flutuadorSensorRead1vocpodevermaisdetalhesemarduino.cc

Rustie0125 23desetembrode2013em5:26
Okeutenteienviarflutuadoracabou,maseurecebo"?"tantoemlugar
desensordata1esensordata2norx.Tenhofeitotudooquevocdisse.
algumaideia?

RodrigoMompo

23desetembrode2013em22:58

Vocchagedqueotransmissoreoreceptorna?.Este poderia ser o


problema

JohannVanNiekerk 24desetembrode2013em5:54
Eu mudei tanto TX e RX cdigo, eu tentei flutuador e eu tentei duas
vezes.Tudooqueeurecebo"?".Seriapossvelparaquevocpossa
experimentlo e relatar de volta? Talvez seja algo mais que eu no
estouseing

RodrigoMompo

24desetembrode2013em5:14

orrymaseudidn`tremmeberantes.Nocdigoquandovocdeclarara
seqncia de caracteres em ambos os cdigos, voc declarar como
este "char StringReceived [22]" O nmero 22 Tamanho mximo de
expresdacadeia.Masestenooproblema.Eutestloeeutenhoo
mesmo problema. O problema est no cdigo TX Parece que um
problema com o especificador. Ento, uma problem.I'm formato
googlingpararesolveroproblema

RodrigoMompo

24desetembrode2013em5:24

Eu
encontrei
este
post
sobre
arduino.cc
http://forum.arduino.cc/index.php/topic,44262.0.html
O problema que a placa Arduino no stronge enought usar carros
alegricosnestafuno.Nofrumfazumasoluocaseira.Vocpode
converterabiaemumint(separalongo,vocpodefazeremvrios
ints)enviaronmerocomointse,emseguida,converterosintsemum
flutuadornooutroarduino.Voutentartestarissoumpostoumasoluo
noblog

Responder

Rustie0125 23desetembrode2013em5:07
thanxbomparaaajudaRodrigo,euseiqueessasunidadessolimitados,mash
algo na biblioteca VirtualWire para determinar RSSI ou intensidade do sinal
dessasunidades?
Responder
Respostas

http://controlrobotics.rodrigomompo.com/2013/09/tutorialarduinokitrf433mhzpart4.html

4/7

25/08/2015

ControlRobotics:Tutorial:Arduino+Kitrf433Mhz(Part4:Diversasvariveis)
RodrigoMompo

23desetembrode2013em5:23

Eulialgunspostsobrearduino.ccsobreisso.posible,masbastante
complexa.Voctambmprecisaextrahardaware.No entanto, se voc
procurarvocprovavelmenteencontraralgumasproyectsquetestam
aforadosinal
Responder

Rustie0125 13denovembrode2013em05:50
Hey estou de volta outra vez, depois que eu enviada com sucesso um flutuador
atravsdasrdiosNscomeamoscomumnovoprojetocompequenosrobsdo
tamanhodepalma,omeuproblemameuamigotambmestconstruindoumae
nsestamosindoparautilizarasmesmasrdios,comopossoencrytouIDminha
mensagemaserenviada?porfavor,faatutorial
Responder
Respostas
RodrigoMompo

13denovembrode2013em18:36

Esta semana vou terminar meus exames por isso vou trabalhar nele.
Obrigado pela idea Se voc deseja pesquisar, voc vai precisar de
pesquisa para PPL (circuito fechado de bloqueio). Isto ir resolver o
problema.Aquivoctemdoislinkssobrevaitentartestloefazerum
tutorialfcil.sevocquiser,vocpodecolaborarcomopost

RodrigoMompo

13denovembrode2013em19:54

EunotoquealgunskitRFtemPPL.OPPLumaespciedefiltroque
emumafreqnciabarulhentacomummontedepessoasqueenviam
dados,vocreceberapenasasuaprpriacadeiadedados.Eulique
PPLtambmpermitequevocparaaumentaroalcance,porquevoc
tem menos interferncia. Em adio, voc pode enviar um ID. voc
enviaumavarivelcomumnmerocomo1234.Noreceptor,comum
comandoif,vocverificarseacadeiadeentradatemesseID.

Rustie0125 14denovembrode2013em11:58
Umtutorialsobrecomoobteramelhorgamapoderiaserbom?porfavor
melhoresconfiguraesdeantena/
Responder

TasosStr 17dez2013em14:24
Muitobomexemplo!!!Bemfeito!!!Vocmeajudamuitoafazerumprojetoque
eugosto!!!:)VocObrigadomuito!!!!!Umapergunta,porfavor(sevoctiver:)
tempo), como posso usar o irsend.sendRaw (rawbuf, rawlen, frequncia) no
mduloRxeenviarorawbuf,rawlenefrequnciademduloTx?Queroenviaros
cdigos de matrias do PC e, em seguida, para o endereo especfico para
controlaraTVousatlite.Agradecemosantecipadamenteapartirdevoctempo.
Atenciosamente,Tasos

Responder

RodrigoMompo

17dez2013em17:42

OiTasos
Se voc enviar int rawbuf, int rawlen, int frequencia usando o tutorial.Then no

http://controlrobotics.rodrigomompo.com/2013/09/tutorialarduinokitrf433mhzpart4.html

5/7

25/08/2015

ControlRobotics:Tutorial:Arduino+Kitrf433Mhz(Part4:Diversasvariveis)
receptor, com esses dados, chamar a funo irsend.sendRaw (rawbuf, rawlen,
frequncia).Issodevefuncionar,experimentloedeixarumacomente.Eu no
tenho muito tempo, espero que este feriados vou ser capaz de fazer upload de
algunsnovostutoriais.AcabeideterminarumDiscolightsportteisestabelecidos
paraaspartes.Eupossocarregarumtutorial
Responder

TasosStr 18dedezembrode2013em21:34
OlCaroRodrigoMompo,Muitoobrigadopelaresposta:)Euachoqueeutivea
idia:)eu tenho que modificar (ou melhor para fazer um novo projeto temp em
vb.net,eemarduino)somenteparaeste)Aidiaparacontrolarumdispositivo
diferentedoPC,mascomendereo,trabalhandookemalgunsdispositivos,masi
devesertornarorawcodenocaso,seoprotocolonosesabe.Poragoraeuusoo
cdigoabaixoedevomodificarparagetorawcode:)sscanf(StringReceived,"%
d,% lu,% d,% d,% d", & Address, & Command, e BitLength, e protocolo, e
RepeatSend)vou dar uma chance (talvez no fim de semana) e eu vou deixlo
saber:)

Responder

WeckerJosu 15out2014em18:05
Oi, obrigado por o cdigo! Foi to til para mim para enviar vrias variveis
de
dados.Ento,euprecisocontrolar4motorescomosdadosrecebidosnoarduino
receptor (i'am tentando controlar os motores do arduino trasmitter com um
potenciometro),maseutenhooseguinteproblema,quandoosdadoschegamao
receptor, que recebe e imprimir os dados apenas uma vez e, em seguida, a
comunicaoatravsdetransfernciavirtualparecebloqueados.Podeacontecer
porcausadafunosscanf?Seeureceberapenasumavariveldedados(sem
utilizar sscanf), no h nenhum problema, e eu posso enviar os dados de
velocidade para o motor com analogWrite corretamente, mas eu preciso para
controlar4motores,noapenas1.Bueno,creoqueHablasespaol,Rodrigo,As
queacvalomismoenEspaol,Pordudaslasnolohayapuestoclaroeningls.
Cuando recibo los datos en receptor arduino el, pareciera que la funcion
analogWriteprovocaraelbloqueodelafuncionvw_get_message,yaqueasolo
recibeeImprimelosdatos1solavezyluegosebloquea.Esto deja de suceder
cuandoelimino/comentolaslneasdeanalogWritethatfilhopargrafoenviarel
datodevelocidadalosMotores.Cuandocontrolabamotordeunsolo(SINUSAR
sscanfenelreceptor)nohabaProblemaalenviarelvalordevelocidaddomotor
alconanalogWrite.SemeocurresipuedehaberalgnProblemadesscanfthat
bloqueumvw_get_messagecuandoUSOanalogWrite...Muchasgracias!

Responder

NealA. 20demarode2015em02:25
Oi,euestouquerendocontrolarumrobmotorde4DCusaressesdispositivosde
RF,noladodotransmissorEutenhoumjoystickumaunoarduinoedotransmissor
no lado receptor Tenho arduino adafruit uno controlador do motor version2 e
receptor pode u me ajudar com o cdigo de como controlar isso, o receptor eo
cdigo de transmitir por favor, obrigado. U pode email mim em
Nealat06@gmail.com
Responder

Annimo 02deabrilde2015em12:12
Obrigado...resolvidomeusproblemas
Responder

LuisFranco 05deagostode2015em16:09
HI,Rodrigoitentaresteparaenviaralgunsflutuante..euqueroenviaramedida
ultrasom atravs virualwire, tenho algumas perguntas, eu posso usar 2 do
presente (mdulo 433MHz) transmissor e juntlo em um reciber? u pode me
ajudarcomisso?obrigado...

http://controlrobotics.rodrigomompo.com/2013/09/tutorialarduinokitrf433mhzpart4.html

6/7

25/08/2015

ControlRobotics:Tutorial:Arduino+Kitrf433Mhz(Part4:Diversasvariveis)
Responder

Annimo 12agosto,2015em08:58
Oi,
Sirvocpodemeajudarnomeucdigo,enfrentandoproblemascomapartedo
receptor,combasenomonitorserialim,eunopoderiaobterqualquerresultado,
emqualquersignificaqueeupossalheenviarminhatransmissorereceptorparao
projetoderfEstoutrabalhandoemcdigo?
muitoobrigado.
Responder
Respostas
Calvinern 12agosto,2015em08:58
meuemailcalvinern@gmail.com
Responder

Enteryourcomment...

Commentas:

Publish

Selectprofile...

Preview

MensagemmaisrecenteMensagem

inicial

antigaPgina

Assinar:Postarcomentrios(Atom)

Totaldevisualizaesdepgina

2 0 5 3 4
ModeloSimple.Imagensdemodeloporfpm.AlimentadoporBlogger.

http://controlrobotics.rodrigomompo.com/2013/09/tutorialarduinokitrf433mhzpart4.html

7/7