first commit
This commit is contained in:
commit
e7a6466a6f
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"chrono": "cpp"
|
||||
}
|
||||
}
|
||||
51
GPIOcontrol.h
Normal file
51
GPIOcontrol.h
Normal file
@ -0,0 +1,51 @@
|
||||
#ifndef GPIO_CONTROL_H
|
||||
#define GPIO_CONTROL_H
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <unistd.h>
|
||||
|
||||
class GPIOControl
|
||||
{
|
||||
public:
|
||||
GPIOControl(int gpioNum) : gpio(gpioNum) {}
|
||||
|
||||
bool exportGPIO()
|
||||
{
|
||||
return writeToFile("/sys/class/gpio/export", std::to_string(gpio));
|
||||
}
|
||||
|
||||
bool unexportGPIO()
|
||||
{
|
||||
return writeToFile("/sys/class/gpio/unexport", std::to_string(gpio));
|
||||
}
|
||||
|
||||
bool setDirection(const std::string &dir)
|
||||
{
|
||||
return writeToFile("/sys/class/gpio/gpio" + std::to_string(gpio) + "/direction", dir);
|
||||
}
|
||||
|
||||
bool setValue(bool high)
|
||||
{
|
||||
return writeToFile("/sys/class/gpio/gpio" + std::to_string(gpio) + "/value", high ? "1" : "0");
|
||||
}
|
||||
|
||||
private:
|
||||
int gpio;
|
||||
|
||||
bool writeToFile(const std::string &path, const std::string &value)
|
||||
{
|
||||
std::ofstream fs(path);
|
||||
if (!fs.is_open())
|
||||
{
|
||||
std::cerr << "无法访问: " << path << std::endl;
|
||||
return false;
|
||||
}
|
||||
fs << value;
|
||||
fs.close();
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
#endif // GPIO_CONTROL_H
|
||||
23
main.cpp
Normal file
23
main.cpp
Normal file
@ -0,0 +1,23 @@
|
||||
#include "GPIOControl.h"
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
|
||||
int main()
|
||||
{
|
||||
GPIOControl relay(42); // 继电器接在 GPIO42
|
||||
|
||||
if (!relay.exportGPIO())
|
||||
return 1;
|
||||
usleep(100000); // 确保 sysfs 完全准备好
|
||||
if (!relay.setDirection("out"))
|
||||
return 1;
|
||||
|
||||
// 打开继电器
|
||||
relay.setValue(true);
|
||||
std::this_thread::sleep_for(std::chrono::seconds(2));
|
||||
|
||||
// 关闭继电器
|
||||
relay.setValue(false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user