Même principe que précédemment : on écrit "in" dans le fichier direction et on lit le fichier value.
DigitalInput.h :
/* * DigitalOutput.h * * Created on: 6 juin 2011 * Author: Eliott */ #ifndef DIGITALOUTPUT_H_ #define DIGITALOUTPUT_H_ #include <fstream> #include <iostream> #include <sstream> using namespace std; class DigitalOutput { public: DigitalOutput(int pin); void write(unsigned int value); void toggle(); private: int pin; int etat; string racine; }; #endif /* DIGITALOUTPUT_H_ */
DigitalInput.cpp :
#include "DigitalInput.h" DigitalInput::DigitalInput(int pin) { FILE *file=NULL; this->pin = pin; file = fopen("/sys/class/gpio/export","a"); if (file==NULL){ cout << "Erreur ouverture fichier : /sys/class/gpio/export"<<endl; return; } fprintf(file,"%d",this->pin); // on exporte la pin fclose(file); // nom de la racine du nouveau fichier ostringstream ss; ss << this->pin; this->racine = "/sys/class/gpio/gpio" + ss.str() ; this->racine += "/"; // direction du port file = fopen((this->racine + "direction").c_str(),"w+"); if (file==NULL){ cout << "Erreur ouverture fichier : "<<this->racine + "direction"<<endl; return; } fprintf(file,"in"); fclose(file); } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% unsigned int DigitalInput::read(){ FILE *file=NULL; file = fopen((this->racine+"value").c_str(),"r"); if(file==NULL){ cout<<"Erreur ouverture fichier : "<<this->racine + "value"<<endl; return 0; } fscanf(file,"%d",&this->etat); fclose(file); return this->etat; }Exemple : !bouton sur PB18 et bouton sur PB19
main.cpp :
#include "DigitalInput.h" #include "DigitalOutput.h" #include "Foxboard.h" int main(void) { DigitalOutput led1(foxboard::PB18), led2(foxboard::PB19); DigitalInput bouton(foxboard::PB0); unsigned int value; while(true){ value = bouton.read(); led1.write(!value); led2.write(value); } return 0; }
Aucun commentaire:
Enregistrer un commentaire