Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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