Compare commits

..

1 Commits

Author SHA1 Message Date
3a82fd9f99 Mise à jour du Readme 2024-11-16 12:00:14 +01:00

128
main.c
View File

@ -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,106 +180,67 @@ 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{
else
{
ascenceur = ASCENSEUR_HAUT; ascenceur = ASCENSEUR_HAUT;
} }
} };
// Commande évoluée // Commande évoluée
if(bouton_appui(14)) if(bouton_appui(14)){
{ if(ascenceur == ASCENSEUR_HAUT){
if(ascenceur == ASCENSEUR_HAUT) if(pince == PINCE_PLANTE){
{
if(pince == PINCE_PLANTE)
{
ascenceur = ASCENSEUR_LACHE_PLANTE; ascenceur = ASCENSEUR_LACHE_PLANTE;
} }
if(pince == PINCE_POT) if(pince == PINCE_POT){
{
ascenceur = ASCENSEUR_LACHE_POT_JARDINIERE; 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{
}
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; ascenceur = ASCENSEUR_HAUT;
} }
} }
message [3] = pince; message [3] = pince;
message[4] = ascenceur; message[4] = ascenceur;
printf(">x:%d\n", message[0]); printf(">x:%d\n", message[0]);
printf(">Y:%d\n", message[1]); printf(">Y:%d\n", message[1]);
printf(">Rz:%d\n", message[2]); printf(">Rz:%d\n", message[2]);
printf(">pince:%d\n", message[3]); printf(">pince:%d\n", message[3]);
printf(">ascenceur:%d\n", message[4]); printf(">ascenceur:%d\n", message[4]);
printf(">result0:%d\n", result0); printf(">result0:%d\n", result0);
sleep_ms(25); sleep_ms(25);
communication_envoyer_message(message, 254); communication_envoyer_message(message, 254);
} }
/*
M1_INITIALISE(); M1_INITIALISE();
while(1) while(1)
{ {
M1_AVANCE(); M1_AVANCE();
sleep_ms(1000); sleep_ms(1000);
M1_RECULE(); M1_RECULE();
sleep_ms(1000); sleep_ms(1000);
} }
*/
} }