Étape 5: Le produit final
Voici le code de l’émetteur.
#include < VirtualWire.h >
const int transmit_pin = 4 ;
id de char [4] ;
int i = 0 ;
void setup()
{
Serial.Begin(9600) ;
pinMode (5, sortie) ;
digitalWrite (5, 1) ;
pinMode (6, sortie) ;
digitalWrite (6, 0) ;
vw_set_tx_pin(transmit_pin) ;
vw_setup(2000) ;
}
void loop()
{
{if(Serial.available())}
char d’entrée = Serial.read() ;
Si (entrée > = 48 & & entrée < = 57) {}
ID [i] = entrée ;
i ++ ;
} else {}
i = 0 ;
}
if(i == 4) {}
entrée = Serial.read() ;
Si (d’entrée == « U ») {}
msg de char [5] = {id [1], id [2], id [0], id [3], « U »} ;
vw_send ((uint8_t *) msg, 5) ;
}
Si (d’entrée == avait ') {}
msg de char [5] = {id [0], id [1], id [2], id [3], avait "} ;
vw_send ((uint8_t *) msg, 5) ;
}
Si (d’entrée == « L ») {}
msg de char [5] = {id [1], id [2], id [0], id [3], « L »} ;
vw_send ((uint8_t *) msg, 5) ;
}
Si (d’entrée == « R ») {}
msg de char [5] = {id [1], id [2], id [0], id [3], « R »} ;
vw_send ((uint8_t *) msg, 5) ;
}
Si (d’entrée == les de ') {}
msg de char [5] = {id [1], id [0], [3], id, id [2] "} ;
vw_send ((uint8_t *) msg, 5) ;
}
vw_wait_tx() ;
i = 0 ;
}
}
}
Voici le code du récepteur.
#include < VirtualWire.h >
const int receive_pin = 6 ;
pan d’int [] = {14, 15;}
int d’inclinaison [] = {16, 17;}
void setup()
{
pour (int i = 0; i < 2; i ++) {}
pinMode (pan [i], sortie) ;
pinMode (inclinaison [i], sortie) ;
}
digitalWrite (11, haute) ;
pinMode (7, sortie) ;
digitalWrite (7, 0) ;
pinMode (sortie 4) ;
digitalWrite (4, 1) ;
vw_set_rx_pin(receive_pin) ;
vw_setup(2000) ;
vw_rx_start() ;
}
void loop()
{
uint8_t buf [VW_MAX_MESSAGE_LEN] ;
uint8_t buflen = VW_MAX_MESSAGE_LEN ;
Si (vw_get_message (buf, & buflen)) {}
Si (buf [0] == « 1 » & & buf [1] == « 0 » & & buf [2] == « 2 » & & buf [3] == « 4 ») {}
Si (buf [4] == « U ») {}
digitalWrite (inclinaison [0], LOW); //up
digitalWrite (inclinaison [1], HIGH); //up
}
Si (buf [4] == avait ') {}
digitalWrite (inclinaison [0], HIGH); //down
digitalWrite (inclinaison [1], LOW); //down
}
Si (buf [4] == « L ») {}
digitalWrite (pan [0], HIGH); //left
digitalWrite (pan [1], LOW); //left
}
Si (buf [4] == « R ») {}
digitalWrite (pan [0], LOW); //right
digitalWrite (pan [1], HIGH); //right
}
Si (buf [4] == les de ') {}
digitalWrite (pan [0], LOW); //stop
digitalWrite (pan [1], LOW); //stop
digitalWrite (inclinaison [0], LOW); //stop
digitalWrite (inclinaison [1], LOW); //stop
}
}
}
}
Cela fonctionne comme un régal et je vais travailler sur la création d’une interface qui utilise visual basic pour communiquer et contrôler le montage.
J’espère que vous avez apprécié cette instructable, si vous avez des questions n’hésitez pas à demander