Compare commits

...

2 Commits

Author SHA1 Message Date
ede90afdd9 Travail en cours 2024-11-16 12:00:45 +01:00
6ab82a3fa3 Mise à jour du Readme 2024-11-16 11:59:18 +01:00
2 changed files with 86 additions and 51 deletions

View File

@ -1,4 +1,9 @@
Projet modèle pour le Rpi Pico (RP2040)
Télécommande du robot Junior de Riombotique
=======================================
Ce projet est un example pour le RPI Pico, tentant d'être le plus prêt à l'emploi possible.
* Lit les valeurs tout ou rien des boutons
* 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

124
main.c
View File

@ -22,8 +22,6 @@
#define ASCENSEUR_LACHE_POT_JARDINIERE 2
#define ASCENSEUR_LACHE_PLANTE 2
unsigned result0, result1;
int joystic_clicker;
int pince = PINCE_OUVERTE;
@ -59,20 +57,18 @@ int M1_AVANCE()
int M1_RECULE()
{
gpio_put(PIN_VITESSE_M1, 1);
gpio_put(PIN_SENS_A_M1, 0);
gpio_put(PIN_SENS_B_M1, 1);
}
int Adc_Init()
{
adc_init();
adc_gpio_init(26);
adc_gpio_init(27);
}
int AdcRead0()
{
adc_select_input(0);
@ -80,10 +76,6 @@ int AdcRead0()
return resultadc;
}
int AdcRead1()
{
adc_select_input(1);
@ -91,27 +83,30 @@ int AdcRead1()
return resultadc;
}
void init_bouton(uint8_t bouton){
void init_bouton(uint8_t bouton)
{
gpio_init(bouton);
gpio_set_dir(bouton, GPIO_IN);
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};
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);
return 1;
}else{
}
else
{
etat_bouton[bouton] = gpio_get(bouton);
}
return 0;
}
void main()
{
char message [256];
@ -120,10 +115,6 @@ void main()
// Communication
communication_init();
// Pour envoyer un message
// communication_envoyer_message(message, 254);
// CLignottement LED
gpio_set_function(LED_VERTE, GPIO_FUNC_PWM);
pwm_set_wrap(4, 100);
@ -144,6 +135,9 @@ void main()
ascenceur = ASCENSEUR_BAS;
pince = PINCE_OUVERTE;
gpio_init(1);
gpio_pull_up(1);
gpio_set_dir(1, GPIO_IN);
while (1)
{
@ -156,17 +150,18 @@ void main()
message[1] = 255 - result1;
//clic sur le joystic
gpio_init(1);
gpio_pull_up(1);
gpio_set_dir(1, GPIO_IN);
joystic_clicker = gpio_get(1);
if (!joystic_clicker)
{
if(result1 > 135){
if(result1 > 135)
{
message[2] = 30;
}else if (result1 < 122){
}
else if (result1 < 122)
{
message[2] = 220;
}else{
}else
{
message[2] = 128;
}
message[1] = 128;
@ -180,45 +175,80 @@ void main()
// Pince
// Bouton plante
if(bouton_appui(6)){
if(pince == PINCE_OUVERTE){
if(pince == PINCE_OUVERTE)
{
pince = PINCE_POT;
}else{
}
else
{
pince = PINCE_OUVERTE;
}
}
// Bouton Pot
if(bouton_appui(10)){
if(pince == PINCE_OUVERTE){
if(bouton_appui(10))
{
if(pince == PINCE_OUVERTE)
{
pince = PINCE_PLANTE;
}else{
}
else
{
pince = PINCE_OUVERTE;
}
}
// Ascenseur
// Commande simple
if(bouton_appui(2)){
if(ascenceur == ASCENSEUR_HAUT){
if(bouton_appui(2))
{
if(ascenceur == ASCENSEUR_HAUT)
{
ascenceur = ASCENSEUR_BAS;
}else{
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;
}
}else{
else
{
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[4] = ascenceur;