Utiliser les ports GPIO de la raspberry pi 4
Posted: Tue May 19, 2020 7:30 am
Bonjour à tous,
Je me heurte à un sacré problème, en effet je souhaite faire un programme utilisant les ports GPIO de la raspberry mais apreès multes recherche je n'ai rien trouvé... Fin si, j'ai trouvé des programmes utilisant par exemple les librairies wiringPi ou bcm2835 mais je ne comprends pas, je n'obtiens aucun résultat... J'ai pourtant bien regardé et ces librairies se trouvent, pour wiringPi dans mon /usr/include et pour mon bcm2835 dans mes téléchargements. Je ne sais pas si il faut que je les changes de répertoire pour qu'elle fonctionne.
Voici mes programmes (que j'ai copié collé sur internet
)
Pour wiringPi :
pour bcm2835
Et sinon j'ai trouvé un programme n'utilisant pas de librairie, il a fonctionné mais qu'une fois et je n comprends pas pourquoi :/
Enfin breef, j'ai besoin d'aide, j'ai honte de rester bloqué aussi longtemps sur quelque chose d'aussi simple
Si quelqu'un pourrait m'aider ce serait génial, merci d'avance aux courageux qui liront ce post jusqu'ici
Je me heurte à un sacré problème, en effet je souhaite faire un programme utilisant les ports GPIO de la raspberry mais apreès multes recherche je n'ai rien trouvé... Fin si, j'ai trouvé des programmes utilisant par exemple les librairies wiringPi ou bcm2835 mais je ne comprends pas, je n'obtiens aucun résultat... J'ai pourtant bien regardé et ces librairies se trouvent, pour wiringPi dans mon /usr/include et pour mon bcm2835 dans mes téléchargements. Je ne sais pas si il faut que je les changes de répertoire pour qu'elle fonctionne.
Voici mes programmes (que j'ai copié collé sur internet
Pour wiringPi :
Code: Select all
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
int main(void)
{
int pin =7;
if(wiringPiSetup()==-1)
{
return 0;
}
pinMode(pin,OUTPUT);//on indique que le GPIO7 est en mode sortie
while(1)
{
digitalWrite(pin,1);//la valeur est définie à HIGH (3.3v)
delay(500); //on attend 500ms
digitalWrite(pin,0);//la valeur est définie à LOW (0V)
delay(500);
}
return 0;
}Code: Select all
int main()
{
//===============================
// initialise the GPIO
if (!bcm2835_init()) return 1;
// indique que la PIN "pinOut" est en sortie
bcm2835_gpio_fsel(pinOut, BCM2835_GPIO_FSEL_OUTP);
unsigned int myDelay = 1000; // délais en [ms]. On aurait pu le déclarer : #define myDelay 1000
while (1)
{
bcm2835_gpio_set(pinOut); // allume la LED
bcm2835_delay(myDelay); // bcm_delayMicroseconds(utin64_t micros); fait un delay en microsecondes.
bcm2835_gpio_clr(pinOut); // éteint la LED
bcm2835_delay(myDelay);
}
} // main */Code: Select all
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
// Export the desired pin by writing to /sys/class/gpio/export
int fd = open("/sys/class/gpio/export", O_WRONLY);
if (fd == -1) {
perror("Unable to open /sys/class/gpio/export");
close(fd);
exit(1);
}
//printf("%d\n" ,fd);
if (write(fd, "18", 3) != 3) {
perror("Error writing to /sys/class/gpio/export");
close(fd);
exit(1);
}
close(fd);
// Set the pin to be an output by writing "out" to /sys/class/gpio/gpio24/direction
fd = open("/sys/class/gpio/gpio24/direction", O_WRONLY);
//printf("%d\n" ,fd);
if (fd == -1) {
perror("Unable to open /sys/class/gpio/gpio24/direction");
close(fd);
exit(1);
}
if (write(fd, "out", 3) != 3) {
perror("Error writing to /sys/class/gpio/gpio24/direction");
close(fd);
exit(1);
}
close(fd);
fd = open("/sys/class/gpio/gpio24/value", O_WRONLY);
if (fd == -1) {
perror("Unable to open /sys/class/gpio/gpio24/value");
close(fd);
exit(1);
}
// Toggle LED 50 ms on, 50ms off, 100 times (10 seconds)
for (int i = 0; i < 100; i++)
{
if (write(fd, "1", 1) != 1)
{
perror("Error writing to /sys/class/gpio/gpio24/value");
close(fd);
exit(1);
}
usleep(50000);
if (write(fd, "0", 1) != 1)
{
perror("Error writing to /sys/class/gpio/gpio24/value");
close(fd);
exit(1);
}
usleep(50000);
}
close(fd);
// Unexport the pin by writing to /sys/class/gpio/unexport
fd = open("/sys/class/gpio/unexport", O_WRONLY);
if (fd == -1) {
perror("Unable to open /sys/class/gpio/unexport");
exit(1);
}
if (write(fd, "24", 2) != 2) {
perror("Error writing to /sys/class/gpio/unexport");
exit(1);
}
close(fd);
// And exit
return 0;
}Si quelqu'un pourrait m'aider ce serait génial, merci d'avance aux courageux qui liront ce post jusqu'ici