Código del transmisor (mando a distancia)
//Arduino Robot v09_04 2019/02/17 //Diseño y programación: Antonio Vallecillos, @a_vallecillos //Código del transmisor (mando a distancia) #include <VirtualWire.h> boolean running = true; char *controller; int xPin = A5; int yPin = A0; int buttonPin = 2; int xPosition = 0; int yPosition = 0; int buttonState = 1; void setup(){ Serial.begin(9600); pinMode(xPin, INPUT); pinMode(yPin, INPUT); pinMode(13, OUTPUT); vw_set_ptt_inverted(true); // vw_set_tx_pin(12); //Transmisor conectado al pin 12 vw_setup(4000); //Velocidad de transmisión en bits por segundo } void loop(){ xPosition = analogRead(xPin); yPosition = analogRead(yPin); buttonState = digitalRead(buttonPin); Serial.print("X: "); Serial.print(xPosition); Serial.print(" | Y: "); Serial.print(yPosition); Serial.print(" | Emitiendo: "); Serial.println(controller); if (xPosition <= 300 && 300 > yPosition < 700){ controller="l"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); //Espera hasta que el mensaje completo ha salido digitalWrite(13,1); }else if ( 300 > yPosition < 700 && xPosition > 700){ controller="r"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); //Espera hasta que el mensaje completo ha salido digitalWrite(13,1); }else if (300 > xPosition < 700 && yPosition <= 300){ controller="u"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); //Espera hasta que el mensaje completo ha salido digitalWrite(13,1); }else if (300 > xPosition < 700 && yPosition > 700){ controller="d"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); //Espera hasta que el mensaje completo ha salido digitalWrite(13,1); }else if (300 > xPosition < 700 && 300 > yPosition < 700){ controller="0"; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); //Espera hasta que el mensaje completo ha salido digitalWrite(13,0); } }
Código del receptor (vehículo)
//Arduino Robot v09_04 2019/02/17 //Diseño y programación: Antonio Vallecillos, @a_vallecillos //Código del receptor (vehículo) #include <VirtualWire.h> void setup(){ vw_set_ptt_inverted(true); vw_set_rx_pin(12); //Receptor conectado al pin 12 vw_setup(4000); //Velocidad de recepción en bits por segundo pinMode(13,OUTPUT); pinMode(10, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(11, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); analogWrite(10, 0); analogWrite(11, 0); vw_rx_start(); //Inicia el receptor } void loop(){ uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)){ if(buf[0]=='0'){ digitalWrite(13,LOW); analogWrite(10,0); analogWrite(11,0); } if(buf[0]=='l'){ digitalWrite(13,HIGH); analogWrite(10,255); digitalWrite(4,HIGH); digitalWrite(5,LOW); analogWrite(11,255); digitalWrite(6,HIGH); digitalWrite(7,LOW); } if(buf[0]=='r'){ digitalWrite(13,HIGH); analogWrite(10,255); digitalWrite(4,LOW); digitalWrite(5,HIGH); analogWrite(11,255); digitalWrite(6,LOW); digitalWrite(7,HIGH); } if(buf[0]=='u'){ digitalWrite(13,HIGH); analogWrite(10,255); digitalWrite(4,HIGH); digitalWrite(5,LOW); analogWrite(11,255); digitalWrite(6,LOW); digitalWrite(7,HIGH); } if(buf[0]=='d'){ digitalWrite(13,HIGH); analogWrite(10,255); digitalWrite(4,LOW); digitalWrite(5,HIGH); analogWrite(11,255); digitalWrite(6,HIGH); digitalWrite(7,LOW); } } }