i have this beginners code my brothers
#include
#include
#include <unistd.h>
#include
#include
#define LED_1_GPIO 80
#define LED_2_GPIO 81
#define BUTTON_1_GPIO 100
#define BUTTON_2_GPIO 101
void setup_gpio(int gpio, const std::string& direction) {
std::ofstream exportFile("/sys/class/gpio/export");
if (!exportFile) {
std::cerr << "Erreur : Impossible d'ouvrir /sys/class/gpio/export" << std::endl;
exit(1);
}
exportFile << gpio;
exportFile.close();
std::ofstream directionFile("/sys/class/gpio/gpio" + std::to_string(gpio) + "/direction");
if (!directionFile) {
std::cerr << "Erreur : Impossible d'ouvrir la direction de GPIO " << gpio << std::endl;
exit(1);
}
directionFile << direction;
directionFile.close();
}
int read_gpio(int gpio) {
std::ifstream valueFile("/sys/class/gpio/gpio" + std::to_string(gpio) + "/value");
int value;
if (!valueFile) {
std::cerr << "Erreur : Impossible de lire la valeur du GPIO " << gpio << std::endl;
exit(1);
}
valueFile >> value;
return value;
}
void write_gpio(int gpio, int value) {
std::ofstream valueFile("/sys/class/gpio/gpio" + std::to_string(gpio) + "/value");
if (!valueFile) {
std::cerr << "Erreur : Impossible d'écrire dans la valeur du GPIO " << gpio << std::endl;
exit(1);
}
valueFile << value;
valueFile.close();
}
void led_blink() {
for (int i = 0; i < 10; ++i) {
write_gpio(LED_1_GPIO, 1);
write_gpio(LED_2_GPIO, 1);
std::this_thread::sleep_for(std::chrono::milliseconds(500));
write_gpio(LED_1_GPIO, 0);
write_gpio(LED_2_GPIO, 0);
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
}
int main() {
std::cout << "Initialisation des GPIO..." << std::endl;
setup_gpio(BUTTON_1_GPIO, "in");
setup_gpio(BUTTON_2_GPIO, "in");
setup_gpio(LED_1_GPIO, "out");
setup_gpio(LED_2_GPIO, "out");
while (true) {
int button1_state = read_gpio(BUTTON_1_GPIO);
int button2_state = read_gpio(BUTTON_2_GPIO);
if (button1_state == 1) {
write_gpio(LED_1_GPIO, 1);
} else {
write_gpio(LED_1_GPIO, 0);
}
if (button2_state == 1) {
led_blink();
std::this_thread::sleep_for(std::chrono::seconds(5));
}
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
return 0;
}