Compare commits
No commits in common. "ede90afdd9716afca292e59a61312045416efa87" and "0078762f8f2450d92a621b92f1cbec750e44e17b" have entirely different histories.
ede90afdd9
...
0078762f8f
@ -1,9 +1,4 @@
|
|||||||
Télécommande du robot Junior de Riombotique
|
Projet modèle pour le Rpi Pico (RP2040)
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
* Lit les valeurs tout ou rien des boutons
|
Ce projet est un example pour le RPI Pico, tentant d'être le plus prêt à l'emploi possible.
|
||||||
* Lit les valeurs analogiques des joystick
|
|
||||||
* Ajoute un peu de logique pour enchainer les actions avec la pince
|
|
||||||
* Envoie les données par la liaison I2C.
|
|
||||||
|
|
||||||
Travail réalisé par l'équipe Junior du club Robotique de Riom
|
|
||||||
|
128
main.c
128
main.c
@ -22,6 +22,8 @@
|
|||||||
#define ASCENSEUR_LACHE_POT_JARDINIERE 2
|
#define ASCENSEUR_LACHE_POT_JARDINIERE 2
|
||||||
#define ASCENSEUR_LACHE_PLANTE 2
|
#define ASCENSEUR_LACHE_PLANTE 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
unsigned result0, result1;
|
unsigned result0, result1;
|
||||||
int joystic_clicker;
|
int joystic_clicker;
|
||||||
int pince = PINCE_OUVERTE;
|
int pince = PINCE_OUVERTE;
|
||||||
@ -57,18 +59,20 @@ int M1_AVANCE()
|
|||||||
|
|
||||||
int M1_RECULE()
|
int M1_RECULE()
|
||||||
{
|
{
|
||||||
|
|
||||||
gpio_put(PIN_VITESSE_M1, 1);
|
gpio_put(PIN_VITESSE_M1, 1);
|
||||||
gpio_put(PIN_SENS_A_M1, 0);
|
gpio_put(PIN_SENS_A_M1, 0);
|
||||||
gpio_put(PIN_SENS_B_M1, 1);
|
gpio_put(PIN_SENS_B_M1, 1);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
int Adc_Init()
|
int Adc_Init()
|
||||||
{
|
{
|
||||||
adc_init();
|
adc_init();
|
||||||
adc_gpio_init(26);
|
adc_gpio_init(26);
|
||||||
adc_gpio_init(27);
|
adc_gpio_init(27);
|
||||||
}
|
}
|
||||||
|
|
||||||
int AdcRead0()
|
int AdcRead0()
|
||||||
{
|
{
|
||||||
adc_select_input(0);
|
adc_select_input(0);
|
||||||
@ -76,6 +80,10 @@ int AdcRead0()
|
|||||||
return resultadc;
|
return resultadc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int AdcRead1()
|
int AdcRead1()
|
||||||
{
|
{
|
||||||
adc_select_input(1);
|
adc_select_input(1);
|
||||||
@ -83,30 +91,27 @@ int AdcRead1()
|
|||||||
return resultadc;
|
return resultadc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_bouton(uint8_t bouton)
|
|
||||||
{
|
|
||||||
|
void init_bouton(uint8_t bouton){
|
||||||
gpio_init(bouton);
|
gpio_init(bouton);
|
||||||
gpio_set_dir(bouton, GPIO_IN);
|
gpio_set_dir(bouton, GPIO_IN);
|
||||||
gpio_pull_up(bouton);
|
gpio_pull_up(bouton);
|
||||||
}
|
}
|
||||||
|
|
||||||
int bouton_appui(uint8_t bouton)
|
int bouton_appui(uint8_t bouton){
|
||||||
{
|
|
||||||
static uint8_t etat_bouton[32]={1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1};
|
static uint8_t etat_bouton[32]={1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1};
|
||||||
|
if(gpio_get(bouton) == 1 && gpio_get(bouton) != etat_bouton[bouton]){
|
||||||
if(gpio_get(bouton) == 1 && gpio_get(bouton) != etat_bouton[bouton])
|
|
||||||
{
|
|
||||||
etat_bouton[bouton] = gpio_get(bouton);
|
etat_bouton[bouton] = gpio_get(bouton);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}else{
|
||||||
else
|
|
||||||
{
|
|
||||||
etat_bouton[bouton] = gpio_get(bouton);
|
etat_bouton[bouton] = gpio_get(bouton);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
char message [256];
|
char message [256];
|
||||||
@ -115,6 +120,10 @@ void main()
|
|||||||
// Communication
|
// Communication
|
||||||
communication_init();
|
communication_init();
|
||||||
|
|
||||||
|
// Pour envoyer un message
|
||||||
|
// communication_envoyer_message(message, 254);
|
||||||
|
|
||||||
|
|
||||||
// CLignottement LED
|
// CLignottement LED
|
||||||
gpio_set_function(LED_VERTE, GPIO_FUNC_PWM);
|
gpio_set_function(LED_VERTE, GPIO_FUNC_PWM);
|
||||||
pwm_set_wrap(4, 100);
|
pwm_set_wrap(4, 100);
|
||||||
@ -135,9 +144,6 @@ void main()
|
|||||||
ascenceur = ASCENSEUR_BAS;
|
ascenceur = ASCENSEUR_BAS;
|
||||||
pince = PINCE_OUVERTE;
|
pince = PINCE_OUVERTE;
|
||||||
|
|
||||||
gpio_init(1);
|
|
||||||
gpio_pull_up(1);
|
|
||||||
gpio_set_dir(1, GPIO_IN);
|
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
@ -150,18 +156,17 @@ void main()
|
|||||||
message[1] = 255 - result1;
|
message[1] = 255 - result1;
|
||||||
|
|
||||||
//clic sur le joystic
|
//clic sur le joystic
|
||||||
|
gpio_init(1);
|
||||||
|
gpio_pull_up(1);
|
||||||
|
gpio_set_dir(1, GPIO_IN);
|
||||||
joystic_clicker = gpio_get(1);
|
joystic_clicker = gpio_get(1);
|
||||||
if (!joystic_clicker)
|
if (!joystic_clicker)
|
||||||
{
|
{
|
||||||
if(result1 > 135)
|
if(result1 > 135){
|
||||||
{
|
|
||||||
message[2] = 30;
|
message[2] = 30;
|
||||||
}
|
}else if (result1 < 122){
|
||||||
else if (result1 < 122)
|
|
||||||
{
|
|
||||||
message[2] = 220;
|
message[2] = 220;
|
||||||
}else
|
}else{
|
||||||
{
|
|
||||||
message[2] = 128;
|
message[2] = 128;
|
||||||
}
|
}
|
||||||
message[1] = 128;
|
message[1] = 128;
|
||||||
@ -175,80 +180,45 @@ void main()
|
|||||||
// Pince
|
// Pince
|
||||||
// Bouton plante
|
// Bouton plante
|
||||||
if(bouton_appui(6)){
|
if(bouton_appui(6)){
|
||||||
if(pince == PINCE_OUVERTE)
|
if(pince == PINCE_OUVERTE){
|
||||||
{
|
|
||||||
pince = PINCE_POT;
|
pince = PINCE_POT;
|
||||||
}
|
}else{
|
||||||
else
|
|
||||||
{
|
|
||||||
pince = PINCE_OUVERTE;
|
pince = PINCE_OUVERTE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bouton Pot
|
// Bouton Pot
|
||||||
if(bouton_appui(10))
|
if(bouton_appui(10)){
|
||||||
{
|
if(pince == PINCE_OUVERTE){
|
||||||
if(pince == PINCE_OUVERTE)
|
|
||||||
{
|
|
||||||
pince = PINCE_PLANTE;
|
pince = PINCE_PLANTE;
|
||||||
}
|
}else{
|
||||||
else
|
|
||||||
{
|
|
||||||
pince = PINCE_OUVERTE;
|
pince = PINCE_OUVERTE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ascenseur
|
// Ascenseur
|
||||||
// Commande simple
|
// Commande simple
|
||||||
if(bouton_appui(2))
|
if(bouton_appui(2)){
|
||||||
{
|
if(ascenceur == ASCENSEUR_HAUT){
|
||||||
if(ascenceur == ASCENSEUR_HAUT)
|
|
||||||
{
|
|
||||||
ascenceur = ASCENSEUR_BAS;
|
ascenceur = ASCENSEUR_BAS;
|
||||||
|
}else{
|
||||||
|
ascenceur = ASCENSEUR_HAUT;
|
||||||
}
|
}
|
||||||
else
|
};
|
||||||
{
|
// Commande évoluée
|
||||||
|
if(bouton_appui(14)){
|
||||||
|
if(ascenceur == ASCENSEUR_HAUT){
|
||||||
|
if(pince == PINCE_PLANTE){
|
||||||
|
ascenceur = ASCENSEUR_LACHE_PLANTE;
|
||||||
|
}
|
||||||
|
if(pince == PINCE_POT){
|
||||||
|
ascenceur = ASCENSEUR_LACHE_POT_JARDINIERE;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
ascenceur = ASCENSEUR_HAUT;
|
ascenceur = ASCENSEUR_HAUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Commande évoluée
|
|
||||||
if(bouton_appui(14))
|
|
||||||
{
|
|
||||||
if(ascenceur == ASCENSEUR_HAUT)
|
|
||||||
{
|
|
||||||
if(pince == PINCE_PLANTE)
|
|
||||||
{
|
|
||||||
ascenceur = ASCENSEUR_LACHE_PLANTE;
|
|
||||||
}
|
|
||||||
if(pince == PINCE_POT)
|
|
||||||
{
|
|
||||||
ascenceur = ASCENSEUR_LACHE_POT_JARDINIERE;
|
|
||||||
}
|
|
||||||
// Optimisation : lorsque la pince est fermée et l'ascenseur au niveau milieu, la pince s'ouvre, l'ascenseur monte et le robot recule
|
|
||||||
}
|
|
||||||
else if((ascenceur == ASCENSEUR_LACHE_POT_JARDINIERE && pince == PINCE_POT) ||
|
|
||||||
(ascenceur == ASCENSEUR_LACHE_PLANTE && pince == PINCE_PLANTE)){
|
|
||||||
pince = PINCE_OUVERTE;
|
|
||||||
message [3] = pince;
|
|
||||||
communication_envoyer_message(message, 254);
|
|
||||||
|
|
||||||
sleep_ms(500);
|
|
||||||
|
|
||||||
ascenceur = ASCENSEUR_HAUT;
|
|
||||||
message[4] = ascenceur;
|
|
||||||
communication_envoyer_message(message, 254);
|
|
||||||
|
|
||||||
sleep_ms(500);
|
|
||||||
|
|
||||||
message[0] = 20;
|
|
||||||
communication_envoyer_message(message, 254);
|
|
||||||
sleep_ms(1000);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
ascenceur = ASCENSEUR_HAUT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
message [3] = pince;
|
message [3] = pince;
|
||||||
message[4] = ascenceur;
|
message[4] = ascenceur;
|
||||||
|
Loading…
Reference in New Issue
Block a user